souk69
Messages postés12Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention25 avril 2006
-
28 mars 2006 à 14:40
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
29 mars 2006 à 10:14
bonjour,
grand débutant, j'ai un ti pb qui est le suivant
alors j'ai crée 2 combobox
combobox 1 il y a les valeurs X, Y ,Z a selectionner
et dans le combobox 2 les valeurs 1,2,3,4,5,6,7,8,9
alors je souhaite taper le code pour que quand X est selectionner dans le 1er combobox le choix dans le second soit 1,2,3 quand j'ai Y le choix devient 4,5,6 idem pour Z avec 7,8,9
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 28 mars 2006 à 15:44
Re;
Dans ce cas essaie ce qui suit (teste en VB6 mais le portage en VBA ne devrait pas posé trop de problème)
Private Sub C1_Click()
Call FillC2(C1.ListIndex)
End Sub
Private Sub Form_Load()
Call C1.AddItem("X", 0)
Call C1.AddItem("Y", 1)
Call C1.AddItem("Z", 2)
C1.ListIndex = 0
End Sub
Private Sub FillC2(Index As Integer)
Call C2.Clear
Call C2.AddItem(3 * Index + 1)
Call C2.AddItem(3 * Index + 2)
Call C2.AddItem(3 * Index + 3)
C2.ListIndex = 0
End Sub
@+, Julien Pensez: Moteur de Recherche, Réponse Acceptée
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 29 mars 2006 à 10:14
Question : quel langage utilises-tu ?
Je vois jrivet parler de VBA.
En VBA, en ACCESS, tu n'as besoin d'aucun code pour faire cela.
2 tables : Une avec tes lettres (x,y,z) et une de correspondance (numéroauto, qui te donnera bien tes chiffres de 1 à 9, et un champ lettre en liaison avec la table lettre)
Ton formulaire avec 2 comboBox :
Cbo1 : Alimentée par une requête sur la table Lettre qui t'affiche donc x,y,z.
Cbo2 : Alimentée par une requête sur la table Correspondance, avec en paramètre la Cbo1.
Un seul bout de code à rajouter, Cbo1_afterupdate : Cbo2.requery pour forcer la rafraîchissement à chaque clic dans la Cbo1
Avec cette méthode, plus de pbs et l'avantage, c'est que tu peux rajotuer toutes les lettres et les chiffres que tu veux, plus besoin de toucher au code. Il suffit de mettre à jour la table de Correspondances et de Lettres (ce qui te permet même de permettre à un futur utilisateur de le faire lui-même, sans intervention extérieure pour la maintenance du code)
En VBA en Excel, idem, aucun besoin de code compliqué, et maintenance à faire sans modification du code. J'en parle dans un autre post déjà :
La solution, crée des zones de Nom (Menu Insertion\Nom\définir) qui contiennent les chiffres qui t'intéressent.
Par ex. :
A1:A3 appelé X et contient 1,2,3
B1:B3 appelé Y et contient 4,5,6
C1:C3 appelé Z et contient 7,8,9
E1:E3 appelé Lettres et contient X,Y,Z
Dans une cellule E1, tu attaches une liste : Menu Données\Validation\ Autoriser liste, source "=Lettres"
Ta cellule E1 est devenue une ComboBox et contient X,Y,Z.
Idem pour la Cellule G1, sauf que cette fois en source, tu mets "=X"
Ta cellule G1 est devenue une ComboBox et contient 1,2,3.
Plus qu'à créer un bouton Mise à jour, et lui coller le petit bout de code suivant :
Dim Temp As String
Temp = "=" & Range("E1").Value
With Range("G1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Temp
End With
Donc, en fonction de tes besoins, à toi de voir. Et sauf si tu veux absolument le faire par code, je te conseillerais, à chaque fois que c'est possible, de limiter l'utilisation du code. Après tout, en VBA, il y a des applis qui tournent, autant utiliser leur fonctionnalité pour gagner du temps ^^ (Bon, si t'es en VB pur par contre, ben, ce que t'a donné jrivet est très bien et désolée :p)