Accueil

Windows Word Excel Access Glossaire Télécharger Forum  
VBA Internet     Matériel Liens Lettre Cathy
N'oubliez pas

Besoin d'une assistance, d'une application
MS Office

Consultez GEMCCAP

Ecrivez-moi

Le lien du mois
Comment ça marche?
un site de vulgarisation informatique

Au cours de vos prochaines visites sur CathyAstuce, n'hésitez pas à cliquer sur une des pub. Cela ne vous coûte rien et peux m'aider à couvrir les frais de ce site.
Merci d'avance

Lettre Octobre 2002

  • Access
    • Les jointures ou relations
  • Excel
    • Zoom sur une plage de cellules
  • VBA
    • Établir une fonction personnalisée
    • Boîte de dialogue permettant de sélectionner un dossier ou un fichier
  • Windows
    • Effectuer un scandisk et un défrag tranquillement
    • Où se trouve mon scandisk dans Windows XP
  • Word
    • Word ne s'affiche plus comme d'habitude, que faire ?

Access

Les jointures ou relations

Ce n'est pas toujours évident de comprendre les relations. Il en existe de 3 types :

  • un à un : un enregistrement de la table A correspond à un seul enregistrement de la table B
  • un à plusieurs : un enregistrement de la table A correspond à plusieurs enregistrements de la table B.
  • plusieurs à plusieurs : plusieurs enregistrements de la table A correspondent à plusieurs enregistrements de la table B. Pour définir une telle relation il faut définir une 3ème table (C). La table A a alors une relation un à un avec la table C. La table B a également une relation un à un avec la table C. Ex. :
    Table A Table C Table B
    Martin
    Dupont
    Arthur
    Martin Informatique
    Martin Gym
    Martin Photos
    Dupont Informatique
    Arthur Gym
    Arthur Photos
    Informatique
    Gym
    Photos

Le type de relation s'établit selon vos tables lorsque vous ajoutez cette relation. Mais vous pouvez modifier les propriétés de la relation :

  • Dans la fenêtre Relations ou dans une fenêtre de création de requêtes.
  • Double-cliquez sur le lien
  • Sélectionnez les enregistrements que vous voulez dans votre relation.

Mais plus important, vous pouvez appliquer l'intégrité référentielle. Si celle-ci est appliquée, les données liées ne peuvent être supprimées ou modifiées par erreur, Access vous garantie alors la validité des enregistrements liés. Certaines conditions sont requises pour utiliser cette intégrité référentielle :

  • Le champ correspondant de la table A doit être une clé primaire ou posséder un index unique.
  • Les champs liés doivent avoir le même type de données. Il existe deux exceptions : un champ Numérotation Auto peut être lié à un champ Numérique dont la propriété Taille est définie sur Entier long.
  • Les deux tables doivent appartenir à la même base de données Microsoft Access. Si elles sont des tables attachées, elles doivent être au format Microsoft Access, et vous devez ouvrir la base de données dans laquelle elles se trouvent pour définir l'intégrité référentielle.

intégrité référentielleAprès avoir double-cliqué sur la jointure, vous devez coché l'option Appliquer l'intégrité référentielle. 2 options deviennent alors disponibles :

  • Mettre à jour en cascade les champs correspondants : chaque fois que vous modifiez la clé primaire de l'enregistrement d'une table primaire, Microsoft Access adapte automatiquement la clé primaire à la nouvelle valeur dans tous les enregistrements liés
  • Effacer en cascade les enregistrements correspondants : Access supprimera automatiquement les enregistrements correspondants dans la table liée à chaque fois que vous supprimerez un enregistrement de la table primaire. Dans une feuille de données ou un formulaire, un message vous prévient que des enregistrements correspondants risquent aussi d'être supprimés, l'utilisateur doit donc confirmer la suppression. Dans une requête suppression tous les enregistrements sont supprimés sans message de confirmation.
    Je ne vous recommande donc pas trop cette option car il y a le risque de perdre beaucoup de données sans le vouloir vraiment. Il est préférable de forcer l'utilisateur à supprimer les enregistrements liés auparavant.

Excel

Zoom sur une plage de cellules

Voici ce que nous essayons de faire :

Bien sûr dans l'image que vous voyez ici, vous ne pouvez constater que la cellule zoomée reflète toujours le contenu de la cellule d'origine. Dans notre exemple la cellule de total contient une fonction somme.

  • Pour arriver à cette solution, il faut d'abord ajouter un bouton à une barre d'outils quelconque (Standard par ex.) :

    • Outils/Personnaliser

    • Dans l'onglet Commandes, sélectionnez la Catégories "Outils".

    • Glissez la commande Photo sur la barre d'outils Standard.

    • Cliquez sur le bouton Fermer.

  • Maintenant il nous faut utiliser ce bouton Photo :
    • Sélectionnez la plage à zoomer.
    • Cliquez sur le bouton Photo .
    • Dessinez un rectangle sur votre feuille, vous pouvez le dessiner sur une autre feuille de calcul ou sur une feuille graphique (cliquez sur l'onglet correspondant puis dessinez).
    • Agrandissez la photo de la cellule à la taille désirée, elle se manie comme une image. Les 2 traits qui relient la photo à la cellule d'origine sont tout simplement 2 lignes dessinées avec l'outil Trait de la barre d'outils Dessin.
  • Vous pouvez constater que cette image est liée à la plage d'origine :
    • Changez une des valeurs A, B, C ou D, le total change et la photo également.

VBA

Établir une fonction personnalisée

Nous allons établir une fonction qui établit la somme d'une plage lorsque les valeurs d'une plage (la même ou une autre) correspondent à 3 valeurs indiquées dans une cellule. Pour tester cette fonction, établissez le tableau suivant :

Puis dans l'éditeur VBA, insérez un module pour votre classeur et tapez-y cette fonction :

Function SommeSi3cond(PlageTest As Range, PlageSomme As Range, rVal1 As Range, rVal2 As Range, rVal3 As Range) As Double
     Dim vSom As Double 'pour effectuer la somme
     Dim iL As Integer, iC As Integer

     For iC = 1 To PlageTest.Columns.Count 'on parcourt toutes les colonnes de la plage Test
          For iL = 1 To PlageTest.Rows.Count 'on parcourt toutes les lignes de la plage Test
          'si la cellule de plagetest de ligne iL et colonne iC est égale à rVal1 ou rVal2 ou rVal3

               If PlageTest(iL, iC) = rVal1 Or PlageTest(iL, iC) = rVal2 Or PlageTest(iL, iC) = rVal3 Then
                    vSom = vSom + PlageSomme(iL, iC) 'on ajoute à vSom le contenu de la plageSomme de la même adresse
               End If
          Next
     Next
     'attribution de la valeur sommée à la fonction
     'pour que la fonction renvoie la valeur calculée vous devez toujours avoir cette affectation

     SommeSi3cond = vSom
End Function

Maintenant, il faut utiliser cette fonction :

  • Fermez l'éditeur VBA, sélectionnez la cellule devant contenir votre fonction.

  • Cliquez sur le bouton Coller une fonction

  • Sélectionnez la catégorie Personnalisée

  • Sélectionnez votre fonction

  • Pour indiquer les données de votre fonction :

    • Sélectionnez la plage de test

    • Sélectionnez la plage à sommer

    • Sélectionnez les plages de valeurs successivement.

Boîte de dialogue permettant de sélectionner un dossier ou un fichier

Le code source suivant vous permet d'afficher une boîte de dialogue comme celle-ci :

La fenêtre peut s'afficher avec uniquement les dossiers ou les dossiers et les fichiers. L'utilisateur recherche dans l'arborescence son fichier et son dossier. S'il clique sur annuler vous récupérer un chemin vide, s'il a effectué une sélection et cliqué sur Ok, la fonction renvoie le chemin du dossier ou du fichier.

Pour utiliser la fonction qui suit vous devez l'appeler ainsi :

ValeurString = ChoixDossierFichier(choix)

ValeurString contiendra le chemin de la sélection et choix prendra la valeur 0 pour rechercher uniquement les dossiers et n'importe quel autre valeur (de 1 à 255) pour rechercher un dossier ou un fichier.

Function ChoixDossierFichier(SelType As Byte) As String
     Dim objShell As Object, objFolder As Object
     Dim Chemin As String, Msg As String
     Dim FlagChoix As Long, NbPoint As Integer

     If SelType = 0 Then
          FlagChoix = &H1
          Msg = "Sélectionner un dossier :"
     Else
          FlagChoix = &H4000
          Msg = "Sélectionner un fichier :"
     End If

     Set objShell = CreateObject("Shell.Application")
     ' &h1
' 1er paramètre toujours 0 (zéro). Il représente le handle de la fenêtre parent

     ' &h1
' 2ème paramètre Titre de la boite, en dessous de la barre de titre

     ' &h1
' 3ème paramètre options de BrowseForFolder

     ' &h1
' 4ème paramètre Facultatif. Répertoire de début d'exploration

     On Error Resume Next
     Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix)
     ' &h1
'Si l 'objet retourné est valide, on teste son contenu (item.title)
     'Si on a sélectionné la racine d'une partition, il se compose du nom de la partition,
     ' suivi de sa lettre et ":" entre parenthèses

     NbPoint = InStr(objFolder.Title, ":")
     If NbPoint = 0 Then
          ' &h1
'Sinon, il se compose du nom du dossier uniquement, sans le chemin précédent
          'On récupère ce chemin à l'aide des propriété et méthode ParentFolder.ParseName

          Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).path & ""
     Else
          ' &h1
' si racine on récupère la lettre du lecteur et les 2 points

          Chemin = Mid(objFolder.Title, NbPoint - 1, 2)
     End If
     ChoixDossierFichier = Chemin
End Function

Constantes permettant de personnaliser le fonctionnement de BrowseForFolder
&H1 : uniquement les dossiers
&H10 : Affiche une zone d'édition
&H20 : Vérifie la saisie dans la zone d'édition
&H2000 : Autorise le parcours uniquement dans les dossiers "Mes documents" et "Bureau"
&H4000 : les dossiers et les fichiers

Windows

Effectuer un Scandisk et un défrag tranquillement

Lorsque vous exécutez Scandisk dans Windows il vous dit souvent qu'il a du redémarrer plusieurs fois et soit il met un temps énorme à s'exécuter, soit vous abandonner. Voici donc la méthode pour l'exécuter sans problème :

  • Redémarrer votre ordinateur
  • Lorsque le texte s'affiche sur votre écran noir, tapez plusieurs fois sur F8. Arrêtez-vous si vous entendez un bip sonore.
  • Un menu vous permettant de choisir le type de démarrage s'affiche
  • Avec la flèche de déplacement vers le bas, sélectionnez "démarrage sans échec"
  • Puis appuyez sur la touche Entrée.
  • Dès que vous êtes dans le mode sans échec (l'affichage est bizarre et vous voyer écrit "mode sans échec" dans les 4 coins de l'écran), lancez votre Scandisk.

Vous pouvez procéder de la même façon pour la défragmentation de votre disque.

Avec XP, vous n'avez pas besoin de recourir à ce système, il gère entièrement les problèmes, vous devez donc le démarrer dans Windows et s'il ne peut travailler tranquillement, il vous propose de s'exécuter au prochain démarrage, vous accepter et redémarrer. Puis vous le laissez faire.

Où se trouve mon Scandisk dans Windows XP

Vous n'avez plus le raccourci de Scandisk dans démarrer/Accessoires/Outils systèmes comme dans les précédentes versions. Pour vérifier votre disque, vous devez donc :

  • Ouvrir le poste de travail ou l'explorateur
  • Effectuer un clic-droit sur le lecteur
  • Sélectionner Propriétés
  • Sélectionnez l'onglet Outils
  • Cliquez sur le bouton Vérifier maintenant.

Word

Word ne s'affiche plus comme d'habitude, que faire ?

Par exemple, vous avez perdu toutes vos barres d'outils et de menus. Voici donc les différentes étapes à effectuer pour cerner le problème et le corriger :

  • Créez un raccourci vers Winword.exe (normalement il se trouve dans "C:/Program Files/Office")
  • Effectuez un clic-droit sur le raccourci
  • Sélectionnez Propriétés
  • Dans la zone Cible, ajoutez à la fin un espace et /a
    Cela doit donner ceci :"C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\WINWORD.EXE" /A
  • Double-cliquez sur ce raccourci et vérifiez l'utilisation de Word.
Si cette manipulation a réussi, cela montre que vous êtes proche du bon résultat, il vous reste à :
  • Fermer Word
  • rechercher tout les fichiers nommés "normal.dot" dans votre disque dur.
  • Renommer ces fichiers en "normal_old.dot"
  • Redémarrer Word (n'utilisez pas le raccourci créé ci-dessus)
  • Si tout fonctionne correctement, inutile d'aller plus loin.
  • Sinon fermer Word
  • Dans le menu démarrer, sélectionnez Exécuter et tapez Regedit
  • Attention à ce que vous faites surtout car vous êtes dans le registre de Windows.
  • Ouvrez l'arborescence pour afficher HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Data
  • Sélectionnez le dossier Data
  • dans le menu Édition, sélectionner Supprimer.
  • Quitter.
  • Redémarrer Word (n'utilisez pas le raccourci créé ci-dessus),en espérant que maintenant tout est résolu.
AccueilDébut de la page