Recherche données pour modification

roseverte

XLDnaute Junior
Bonjour,

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!


Roseverte
 

Pièces jointes

  • Classeur1.xls
    48 KB · Affichages: 56
  • Classeur1.xls
    48 KB · Affichages: 64
  • Classeur1.xls
    48 KB · Affichages: 59

Creepy

XLDnaute Accro
Re : Recherche données pour modification

Bonjour le Forum, Roseverte,

Pour ta recherche on peut le faire en une seule ligne de code. Nomme ta plage dans la feuille 2 (tu peux nommer bcp plus grand que ta zone de données.

Moi j'ai pris A2 à D10000 et j'ai nommé "Recherche"

et met ce code :

Code:
Private Sub ComboBox1_Change()
ComboBox2.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Range("Recherche"), 2, False)
End Sub

Pour la deuxième partie j'ai pas bien compris tu peux donner plus de detail, tu parts des deux controles en bas de ta form ? tu mets les valeurs où ?

Creepy
 

roseverte

XLDnaute Junior
Re : Recherche données pour modification

Merci beaucoup pour ta réponse!!

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!


En tout cas merci pour ton aide!!!

Roseverte
 
Dernière édition:

Creepy

XLDnaute Accro
Re : Recherche données pour modification

Re,

D'accord j'ai compris !

Voila la réponse.... :p

Petite remarque. Dans ton système il n'y a pas de gestion "unique" c'est à dire que pour code1, je peux avoir 2 fois code 1.2 par exemple.

Je trouve ca bizarre.

@+

Creepy
 

Pièces jointes

  • Classeur1.zip
    25 KB · Affichages: 56
  • Classeur1.zip
    25 KB · Affichages: 57
  • Classeur1.zip
    25 KB · Affichages: 56
Dernière édition:

roseverte

XLDnaute Junior
Re : Recherche données pour modification

Merci beaucoup! oui c'est ça!

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!

Merci pour ton aide!!

Roseverte
 

Creepy

XLDnaute Accro
Re : Recherche données pour modification

Re,

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.

@+

Creepy
 

roseverte

XLDnaute Junior
Re : Recherche données pour modification

Ok!!merci pour le dictionnaire!! Je ne comprenais pas ce que c'était!!

Et pour les colonnes j'avais deja modifier!!

Par contre j'ai tjrs le probleme de Cbx_Col2.Clear qu'il ne me prend pas en compte!!

Alors que sur l'exemple que tu m'a passé tout fonctionne!

J'ai bien regardé et je ne comprend pas pourquoi?!!

Merci d'avance!!

Roseverte
 

Creepy

XLDnaute Accro
Re : Recherche données pour modification

Re,

Deux solutions:

1 - Ta combobox2 ne contient aucune information donc cela plante. Remplace la ligne par ceci :
If Cbx_Col2.ListCount > 0 Then Cbx_Col2.Clear

2 - Tu as changé le nom de la combobox et tu as oublié de changer le nom sur cette ligne.

Creepy
 

roseverte

XLDnaute Junior
Re : Recherche données pour modification

Ben j'avais vérifié c'est le même nom et j'ai essayer ligne de code sa marque Cbx_Col2.Clear en rouge!

Et la combobox et rempli!!!!

Cbx_Col2.AddItem Feuil1.Cells(Boucle, 8).Value <= ça prend pas en compte aussi cette ligne!!
 

roseverte

XLDnaute Junior
Re : Recherche données pour modification

Bonjour, en fait j'ai trouvée l'erreur j'avais déja rempli les combobox precedamment donc ça planté!

Par contre pourrai tu me m'expliqué le code que tu m'a donné je ne comprend pas tout et je pourrai le modifié car il y a certains trucs qui plante!!

Merci!!

Roseverte
 

roseverte

XLDnaute Junior
Re : Recherche données pour modification

Merci pour les explications ça ma bien aidé!!

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é!

Pourquoi? et peut on y remédier?

merci d'avance!!

Roseverte
 

Creepy

XLDnaute Accro
Re : Recherche données pour modification

Bonjour,

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 !!! :D C'est à dire si c'est du texte, elle renvoie du texte si c'est un nombre elle renvoie... un nombre :eek: si je t'assure ! :p.

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.

Donc du coup avec un nombre on sera bon !

@+

Creepy
 

Discussions similaires

Réponses
7
Affichages
377

Membres actuellement en ligne

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 611
dernier inscrit
sebboes