Find. . . WHAT ?! Pas de première cellule ?!
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 :
Code:
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 |
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).
- 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 :
|
A |
B |
1 |
Var1 |
B1 |
2 |
Var1 |
B2 |
2 |
Var1 |
B3 |
4 |
Var2 |
B4 |
5 |
Var2 |
B5 |
6 |
Var2 |
B6 |
Si je recherche le couple [Var1, B1] alors :
- Dans ma première MsgBox, j'aurais bien "$A$1:$A$6".
- Dans ma seconde MsgBox, j'ai $B$2... WTF ?! :furieux: (au lieu de $B$1)
- Dans ma dernière MsgBox, j'ai $A$3:$A$6... :zen: (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