:king::king: C'est super, ça fonctionne à merveille.
Je vais essayer de reintégrer la boite de dialogue maintenant.
Version imprimable
:king::king: C'est super, ça fonctionne à merveille.
Je vais essayer de reintégrer la boite de dialogue maintenant.
:? Bon ben pour la boîte de dialogue c'est peine perdu, je suis complètement largué. A chaque fois que je crois avoir compris la fonction d'un code, il y à toujours un bug que je n'arrive pas résoudre.
J'ai quant même réussi à créé 2 boites de dialogue :
- frmChoix1 = Liste de choix correspondante à la base de donnée 1
- frmChoix2 = Liste de choix correspondante à la base de donnée 2
Je n'ais pas réussit à insérer le code d'origine qui fonctionné très bien. Et en plus la il faut l'insérer 2 fois :roll:
Je n'ai pas décortiqué ton premier code, tu cherches à faire quoi avec les boîtes de dialogue ?
Actuellement la boite de dialogue apparait en cas de doublon de référence.
Car dans l'application il y a un grand nombre de marque différentes et donc beaucoup de doublon.
Donc la boite de dialogue me permet de cliquer sur la bonne marque, exemple ci-dessous après avoir saisie en B13 la réf 21092 :
http://www.cv-distribution.com/diver...edialogue1.jpg
Et si j'arrive à intégrer 2 boites de dialogue alors, ce serai l'Amérique.
Première boite, qui aura la même fonction que ci-dessus, c'est à dire trier les doublons de la base de données 1.
Deuxième boite, qui me permettrai de choisir parmi les différents tarifs constructeurs qui correspondes à la référence saisie, données recueilli dans la base de données 2.
Tu vas pouvoir me la chanter la chanson de Joe Dassin :mouarf:
Je te met sur la piste ;)
Dans les deux boucles, tu as cette partie-ci
Verif1 et Result1 pour la BD1Code:
1
2
3
4 If Not C Is Nothing And C.Address <> adresse1 Then Verif1 = Verif1 + 1 Result1 = Result1 & Chr(10) & "feuille " & BD1.Sheets(i).Name & " / cellule " & C.Address(0, 0) Else
Verif2 et Result2 pour la BD2
Ces lignes ne servent qu'à afficher la MsgBox en fin de code, il "suffit" donc de remplacer cette MsgBox par un UserForm.
Cela devrait ressembler à un truc du genre :
Sans oublier de correctement paramétrer ta ListBox au départ (ColumnCount, ColumnWidths, etc)Code:
1
2
3
4
5
6
7 If Not C Is Nothing And C.Address <> adresse1 Then With UserForm1 .ListBox1.AddItem Ref .ListBox1(ListBox1.ListCount - 1, 1) = C.Offset(0, 1) .ListBox1(ListBox1.ListCount - 1, 2) = C.Offset(0, 2) End With Else
et en fin de code, au lieu d'afficher la MsgBox, tu affiches le formulaire
Code:Userform1.Show
J'ai remplacé les codes, j'espère que je les ais placé au bon endroit.
Peux-tu m'expliquer comment paramétrer la ListBox ? Si j'ai compris la ListBox c'est ça :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 For i = 1 To BD1.Sheets.Count Set C = BD1.Sheets(i).Range("A:A").Find(what:=Ref, lookat:=xlWhole) If Not C Is Nothing Then adresse1 = C.Address Verif1 = Verif1 + 1 Result1 = Result1 & Chr(10) & "feuille " & BD1.Sheets(i).Name & " / cellule " & C.Address(0, 0) Cells(Lig, 1) = BD1.Sheets(i).Cells(C.Row, 2) Cells(Lig, 3) = BD1.Sheets(i).Cells(C.Row, 3) Cells(Lig, 10) = BD1.Sheets(i).Cells(C.Row, 6) Do Until C Is Nothing Set C = BD1.Sheets(i).Range("A:A").FindNext(C) If Not C Is Nothing And C.Address <> adresse1 Then With frmChoix1 .ListBox1.AddItem Ref .ListBox1(ListBox1.ListCount - 1, 2) = C.Offset(0, 1) .ListBox1(ListBox1.ListCount - 1, 3) = C.Offset(0, 2) End With Else Set C = Nothing End If Loop End If Next For i = 1 To BD2.Sheets.Count Set C = BD2.Sheets(i).Range("A:A").Find(what:=Ref, lookat:=xlWhole) If Not C Is Nothing Then adresse1 = C.Address Verif2 = Verif2 + 1 Result2 = Result2 & Chr(10) & "feuille " & BD2.Sheets(i).Name & " / cellule " & C.Address(0, 0) Cells(Lig, 15) = BD2.Sheets(i).Cells(C.Row, 2) Cells(Lig, 18) = BD2.Sheets(i).Cells(C.Row, 3) Cells(Lig, 19) = BD2.Sheets(i).Cells(C.Row, 4) Do Until C Is Nothing Set C = BD2.Sheets(i).Range("A:A").FindNext(C) If Not C Is Nothing And C.Address <> adresse1 Then With fmrChoix2 .ListBox1.AddItem Ref .ListBox1(ListBox1.ListCount - 1, 2) = C.Offset(0, 1) .ListBox1(ListBox1.ListCount - 1, 3) = C.Offset(0, 2) End With Else Set C = Nothing End If Loop End If Next If Verif1 > 1 Then frmChoix1.Show End If If Verif2 > 1 Then frmChoix2.Show End If Set BD1 = Nothing Set BD2 = Nothing End Sub
Code:
1
2
3 .ListBox1.AddItem Ref .ListBox1(ListBox1.ListCount - 1, 2) = C.Offset(0, 1) .ListBox1(ListBox1.ListCount - 1, 3) = C.Offset(0, 2)
En principe ta ListBox est déjà convenablement paramétrée au niveau du nombre de colonne vu que tu l'utilisais précédemment.
Concernant le code de remplissage, j'ai fait une petite erreur :oops:, j'ai oublié le .List et le point devant ListBox1.ListCount
Pour info, les lignes et colonnes de la ListBox commencent au numéro 0Code:
1
2
3
4
5 With fmrChoix2 .ListBox1.AddItem Ref .ListBox1.List(.ListBox1.ListCount - 1, 1) = C.Offset(0, 1) .ListBox1.List(.ListBox1.ListCount - 1, 2) = C.Offset(0, 2) End With
ListBox1.List(0, 0) = 1ère ligne, 1ère colonne
ListBox.List(0, 1) = 1ère ligne, 2ème colonne
etc...
Je viens de corriger les erreurs, par contre j'ai une autre petite :
http://www.cv-distribution.com/divers/ERREUR2.jpg
Laisse moi deviner...
Comment se nomme ta ListBox ? http://freelog.chez-alice.fr/emotico.../pensif_11.gif
Je vais répondre bêtement, ça ne serai pas "1stProd".
Si ça peut aider, ci joint une capture d'écran du code qui est inscrit quand je clic sur "Feuilles puis frmChoix" :
http://www.cv-distribution.com/divers/frmChoix1.jpg
Bonjour,
si je peux me permettre ,
Alors change "listbox1" par "lstprod"
Pour voir le nom de ta listbox, il suffit d'aller dans ses propriétés
Merci casefayere, j'ai trouvé le nom. Mais maintenant j'ai une autre erreur de compilation :
http://www.cv-distribution.com/divers/ERREUR2B.jpg
zen soyons zen...du sang froid dans les veines...
Le code ci-dessus te donnait une erreur parce que ta ListBox ne se nomme pas ListBox1 mais lstProd donc...à ton avis...que faut-il modifier dans le code ci-dessus ?Code:
1
2
3
4
5 With fmrChoix2 .ListBox1.AddItem Ref .ListBox1.List(.ListBox1.ListCount - 1, 1) = C.Offset(0, 1) .ListBox1.List(.ListBox1.ListCount - 1, 2) = C.Offset(0, 2) End With
je te donne un indice : il y en a 5 à modifier
Question subsidiaire : où as-tu été chercher les Label1 ?
.
Je m'occupe afin de trouver le sommeil
Réponse estimée :
ça y est, je baille :pingoin2:Code:
1
2
3
4
5 With fmrChoix2 .Lstprod.AddItem Ref .lstProd.List(.lstProd.ListCount - 1, 1) = C.Offset(0, 1) .lstProd.List(.lstProd.ListCount - 1, 2) = C.Offset(0, 2) End With