|
||||||||||||||||||||||||||||||||||
|
Lettre Octobre 2002
|
| Table A | Table C | Table B | ||||||||||||||||||
|
|
|
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 :

Mais plus important, vous pouvez appliquer l'. 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 :
Après
avoir double-cliqué sur la jointure, vous devez coché l'option . 2 options deviennent alors
disponibles :
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.) :
Dans l'onglet , sélectionnez la Catégories "".
Glissez la commande
sur la barre d'outils .
Cliquez sur le bouton .
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.
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)
Où 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
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 :
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.
Vous n'avez plus le raccourci de Scandisk dans comme dans les précédentes versions. Pour vérifier votre disque, vous devez donc :
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 :
