J'ai un probleme, je ne sais pas si ce que je voudrais faire est possible!
Mon classeur contient trois feuilles, feuil1 pour ma base de donnée, feuil2 pour remplir mes listes de choix et feuil3 pour une base de donnée specifique.
Je voudrais d'abord dans ma combobox remplir ma deuxieme combobox en fonction du choix de la deuxieme (voir tableau dans feuil3) et ensuite pouvoir modifier mon choix dans le classeur a la place de la valeur precedene mettre la nouvelle!
Je ne sais pas si je me suis bien fait comprendre donc je me un exemple en piece jointe!
Merci d'avance!!
Pour l'instant c'est remplir la combobox2 en fonction de la combobox1 que je n'y arrive pas!
Mais en fait ce n'est pas exactement ça!
Dans la colonne1 il y a un code on va dire reference de l'outil exemple marteau reference 4578a, et dans la colonne deux, c'est le numero marteau par exemple 1 et emplacement1 = atelier1.
Dans l'exemple que j'ai mis en piece jointele marteau de reference code1 possede trois marteaux nommés respectivement code1.1, code1.6, code1.7.
la feuille deux ne sert qu'a remplir les liste déroulantes dans l'userform par exemple de emplacement.
Das l'userform je choisi la reference outil dans la combobox1 et dans la combobox2 je voudrais que les numeros marteaux correspondants s'y mette.
Par exemple dans la combobox1 je choisis code1 la combobox2 se remplis avec les valeurs code1.1, code1.6, code1.7.
et pour mon deuxieme probleme je voudrais apres avoir fait cela pourvoir modifier la valeur de code1.1par exemple en le remplacant par 1.2 et que cela se change dans le classeur ou il y a 1.1!
Par contre ça me met des erreurs il ne veut pas m'accepter le "Dim Dico_01 As Dictionary", ça correspond à quoi?
Et aussi "Cbx_Col2.Clear"
Et en fait ma colonne1 se trouve à la colonne7 dans ma base de donnée, la colonne2 dans la colonne8 et la colonne8 dans la colonne9 ça pose un probleme?
Et normallement il ne doit pas y avoir de doublons dans la combobox2 puisque chaque outil a un numero unique!
1 - dictionary
Dans les référence du projet tu dois avoir Microsoft Scripting Runtime de coché.
Pour cela tu vas dans VBA menu Outils> Réferences.
2 - Je suis parti du postulat que ta colonne 1 est bien ta colonne 1, il faut donc modifier toutes les références aux colonnes du genre :
- cells(Boucle,1) devient cells(Boucle,7) par exemple
- La fonction de tri doit être differente aussi dans les key1 et key2.
Par contre une derniere question j'ai besoin d'aide il faudrait que qu'il n'y est pas de doublons dans les combobox 2 et 3 et je n'y arrive pas!
Pourrais tu m'aider stp!
et aussi j'ai remarqué que dans ma combobox1 il y a des codes avec des chiffres et lettres et d'autres k'avec des chiffres, et pour ceux qu'avec des chiffres il ne trouve pas la valeur correspondante dans la colonne d'a coté!
1. Pour tes combobox2 & 3, pour les remplir sans doublon, il faut reprendre tout le code de la procédure UserForm_Initialize.
En effet c'est dans cette fonction qu'on joue avec le dico pour alimenter la combobox1 sans doublon. Il faut copier le code et bien sûr remplacer ce qui va bien (nom combobox, réference des colonnes, etc.)
2. C'est normal une combobox renvoie par défaut du texte, et la cellule renvoie, ce qu'elle contient !!! C'est à dire si c'est du texte, elle renvoie du texte si c'est un nombre elle renvoie... un nombre si je t'assure ! .
Bref dans ton exemple code1, code2 c'est du texte et ca comparait avec du texte.
Dans le cas d'un nombre par exemple 123. La combobox renvoie du texte donc "123". La cellule renvoie un nombre : 123.
Donc la ligne :
Code:
If Feuil1.Cells(Boucle, 1).Value = Cbx_Col1.Value Then
, dans la fonction Cbx_Col1_Change, n'est pas bonne car un nombre n'est pas egale à du texte.
Il faut donc convertir pour eviter tout probleme, la données de la cellule en texte pour être identique, comme ceci :
Code:
If CStr(Feuil1.Cells(Boucle, 1).Value) = Cbx_Col1.Value Then
Ici avec 'Cstr' (=Convert to STRing = Convertir en texte) on "Force" la valeur de la cellule en texte ! Attention c'est "virtuel" ca n'impacte pas le format de ta cellule.