Bonjour,
Je suis dans une perplexité monumentale. A tord, à raison, j'utilise beaucoup la méthode "Find".
Or, je suis confronté à un problème que je n'arrive pas à résoudre :
Je tente de faire ceci :
Pour moi, cela signifie que je fais une recherche sur un mot-clé (col_A) en colonne A et vérifie qu'en colonne B, j'ai bien un autre mot-clé associé (col_B).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Private Sub ComboBox1_Change() Dim bool As Boolean Dim rng As Range col_B = Me.ComboBox1.Value bool = True With Worksheets("Feuil4") Set rng = .Range("A1:A" & .Columns(1).Find("*", , , , , xlPrevious).Row) 'MsgBox rng.Address Do While bool 'MsgBox rng.Find(col_A, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Address If rng.Find(col_A, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1) = col_B Then rng.Find(col_A, LookIn:=xlValues, LookAt:=xlWhole).Select bool = False Else Set rng = .Range(rng.Find(col_A, LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0), .Columns(1).Find("*", , , , , xlPrevious)) 'MsgBox rng.Address End If Loop End With End Sub
- Si oui, je sélectionne la cellule... merci, bonsoir.
- Si non, je "set" ma range à la cellule d'en dessous, et je continue de chercher.
Or, ça ne se passe pas du tout comme je le souhaite. Si j'omet la variable "After", la recherche est censée s'effectuer depuis la cellule en haut à gauche. Or, j'ai l'impression que cette cellule n'est jamais prise en compte...
Dans mon "Else", je "set" (pour moi toujours) ma nouvelle range à la cellule du dessous de celle que je viens de trouver. Or, ce n'est pas celle-ci qui est prise dans le cas du tableau suivant :
Si je recherche le couple [Var1, B1] alors :
A B 1 Var1 B1 2 Var1 B2 2 Var1 B3 4 Var2 B4 5 Var2 B5 6 Var2 B6
- Dans ma première MsgBox, j'aurais bien "$A$1:$A$6".
- Dans ma seconde MsgBox, j'ai $B$2... WTF ?!
(au lieu de $B$1)
- Dans ma dernière MsgBox, j'ai $A$3:$A$6...
(au lieu de $A$2:$A$6)
"Caaaaaalme ! Les Masters VBA de www.developpez.net vont te sortir de là !"
Je ne vois donc que le fait que la première cellule de la Range d'un Find n'est pas prise en compte... mais l'utilisant depuis tant de temps, cela m’étonnerait de ne pas l'avoir vu avant...
Des idées sur ma bêtise ?
Merci par avance !
Cordialement,
Kimy
Partager