Discussion: Multi Mini BD
Afficher un message
Vieux 16/11/2007, 22h15   #8 (permalink)
DidierC
XLDnaute Nouveau
 
Date d'inscription: avril 2005
Messages: 12
Par défaut Re : Multi Mini BD

Bonsoir.

Le code que vous avez mis ci-dessus est dèjà un code de personnalisation.
Je ne peux pas résoudre directement votre problème sans connaitre la stucture exacte de votre BdD...

Toutefois j'ai intégré votre pb dans la BdD exemple de MMBD 5.00 ( BD_Bidon ) :

J'ai ajouté une nouvelle colonne dans la BdD : Perso3 qui servira de liste "cascade" modifiée en fonction du contenu du champ Perso2.

J'ai "déclaré" une nouvelle variable dans le code VBA du Navigateur : Dim PersoRéfColOrigine As Integer ( A mettre avec les autres déclarations - En haut du code VBA )

J'ai remplacé le code VBA du Navigateur, Section [PERSONNALISATION] par le code ci-dessous...

'===DEBUT DE LA MODIFICATION DU CODE============================================== ============

'--------------------------------
'Mettre le nom de la 2ème colonne à personnaliser.
PersoNomColonne = "Perso2"

'Ici on détermine automatiquement le numéro de la colonne à personnaliser.
'( La première colonne n'est pas personnalisable ).
For BoucleCol = 2 To NbColonnes
If Cells(1, BoucleCol) = PersoNomColonne Then PersoNuméroColonne = BoucleCol
Next BoucleCol

'Ensuite on effectue le traitement de la personnalisation

If NomBD = PersoNomBD And Cells(1, PersoNuméroColonne) = PersoNomColonne Then
'Personnalisation

'Par exemple : Création d'une liste de choix
Controls("Champ" & PersoNuméroColonne).Clear
Controls("Champ" & PersoNuméroColonne).AddItem "Masculin"
Controls("Champ" & PersoNuméroColonne).AddItem "Féminin"
Controls("Champ" & PersoNuméroColonne).AddItem "Autre"
'C'est dans cet ordre que les items de la liste apparaitront.

'Pour changer la couleur du fond et du texte.
Controls("Champ" & PersoNuméroColonne).BackColor = vbYellow
Controls("Champ" & PersoNuméroColonne).ForeColor = vbRed

'Pour activer la liste déroulante.
Controls("Champ" & PersoNuméroColonne).ShowDropButtonWhen = fmShowDropButtonWhenAlways

Else

End If

'--------------------------------
'Mettre le nom de la 3ème colonne à personnaliser.
PersoNomColonne = "Perso3"

'Ici on détermine automatiquement le numéro de la colonne à personnaliser.
'( La première colonne n'est pas personnalisable ).
For BoucleCol = 2 To NbColonnes
If Cells(1, BoucleCol) = PersoNomColonne Then PersoNuméroColonne = BoucleCol
Next BoucleCol

'Ensuite on effectue le traitement de la personnalisation

If NomBD = PersoNomBD And Cells(1, PersoNuméroColonne) = PersoNomColonne Then
'Personnalisation

'Pour changer la couleur du fond et du texte.
Controls("Champ" & PersoNuméroColonne).BackColor = vbBlue
Controls("Champ" & PersoNuméroColonne).ForeColor = vbYellow

'Pour activer la liste déroulante.
Controls("Champ" & PersoNuméroColonne).ShowDropButtonWhen = fmShowDropButtonWhenAlways

'---------------------------------------------------------------
'
'On souhaite que cette liste se modifie en fonction du contenu
'de la liste précédente. Il faut pour cela créer une série de procédures.
'Ces procédures sont à placer tout en bas du code VBA...
'
'---------------------------------------------------------------
'Sub Champ11_Change() 'Il faut connaitre le No du champ d'origine
'
'If NomBD = PersoNomBD Then PersoChamp11
'
'End Sub
'-----
'Sub Champ11_Click() 'Il faut connaitre le No du champ d'origine
'
'If NomBD = PersoNomBD Then PersoChamp11
'
'End Sub
'-----
'Sub PersoChamp11() 'Il faut connaitre le No du champ d'origine
'
'If NomBD <> PersoNomBD Then Exit Sub
'
' PersoRéfColOrigine = 11 'Il faut connaitre le No de la colonne du champ d'origine de l'évènement
' PersoNuméroColonne = 12 'Il faut connaitre le No de la colonne du champ "cascade"
'
' Controls("Champ" & PersoNuméroColonne).Clear
'
' If Controls("Champ" & PersoRéfColOrigine) = "Masculin" Then
' Controls("Champ" & PersoNuméroColonne).AddItem "Cas MA"
' Controls("Champ" & PersoNuméroColonne).AddItem "Cas MB"
' Controls("Champ" & PersoNuméroColonne).AddItem "Cas MC"
' End If
'
' If Controls("Champ" & PersoRéfColOrigine) = "Féminin" Then
' Controls("Champ" & PersoNuméroColonne).AddItem "Cas F1"
' Controls("Champ" & PersoNuméroColonne).AddItem "Cas F2"
' Controls("Champ" & PersoNuméroColonne).AddItem "Cas F3"
' End If
'
'End Sub
'---------------------------------------------------------------

Else

End If

'--------------------------------
'On fait ensuite la même chose pour la 4ème colonne à personnaliser.
'--------------------------------
'Puis pour les colonnes suivantes...
'--------------------------------
'.../...
'--------------------------------
'Et pour une autre BD.
'--------------------------------

End Sub 'NE JAMAIS SUPPRIMER CETTE LIGNE

Sub Champ11_Change() 'Il faut connaitre le No du champ d'origine

If NomBD = PersoNomBD Then PersoChamp11

End Sub

Sub Champ11_Click() 'Il faut connaitre le No du champ d'origine

If NomBD = PersoNomBD Then PersoChamp11

End Sub

Sub PersoChamp11() 'Il faut connaitre le No du champ d'origine

If NomBD <> PersoNomBD Then Exit Sub

PersoRéfColOrigine = 11 'Il faut connaitre le No de la colonne du champ d'origine de l'évènement
PersoNuméroColonne = 12 'Il faut connaitre le No de la colonne du champ "cascade"

Controls("Champ" & PersoNuméroColonne).Clear

If Controls("Champ" & PersoRéfColOrigine) = "Masculin" Then
Controls("Champ" & PersoNuméroColonne).AddItem "Cas MA"
Controls("Champ" & PersoNuméroColonne).AddItem "Cas MB"
Controls("Champ" & PersoNuméroColonne).AddItem "Cas MC"
End If

If Controls("Champ" & PersoRéfColOrigine) = "Féminin" Then
Controls("Champ" & PersoNuméroColonne).AddItem "Cas F1"
Controls("Champ" & PersoNuméroColonne).AddItem "Cas F2"
Controls("Champ" & PersoNuméroColonne).AddItem "Cas F3"
End If

End Sub

'===FIN DE LA MODIFICATION DU CODE============================================== ==============

( Attention : Ce code ne teste pas si les données sélectionnées/saisies dans Perso3 sont compatibles avec celles de Perso2 ).

Ces modifications fonctionnent dans MMBD 5.00 qui, du coup, vient de passer en version 5.01.

A vous d'adapter cela à votre BdD. ( En cas de pb n'hésitez pas à laisser un message ici ).

Bon Courage et A+

Didier.
DidierC est déconnecté   Réponse avec citation