bastien0675
Messages postés16Date d'inscriptionmardi 24 février 2009StatutMembreDernière intervention12 août 2010
-
15 sept. 2009 à 14:01
Calade
Messages postés1204Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
15 sept. 2009 à 14:57
Bonjour,
j'aurai besoin d'un peu d'aide pour une macro que j'ai dans un userform.
Le but est simplement de rechercher dans une colonne (colonne B) une valeur rentrée dans un userform.
La macro ne trouve pas la valeur (et me renvoie un msgbox "book non trouvé" alors qu'elle s'y trouve bien.
voici mon code:
Merci beaucoup pour votre aide!!
Sub Search()
Dim repere As Boolean
Dim trouve As Boolean
Set OngletLiffe = ThisWorkbook.Worksheets("Liffe")
repere = False
trouve = False
If (UserForm1.CbookFO = "") Then
VbookFO = ""
Else
VbookFO = UserForm1.CbookFO
End If
If (VbookFO <> "") Then 'vérifie que le champ de l'userform n'est pas vide
If (Not IsNumeric(VbookFO)) Then 'vérifie que le champ n'est pas numérique
ligne = 1
Do While (repere = False) 'boucle recherchant la valeur
ligne = ligne + 1
If OngletLiffe.Cells(ligne, 2).Text = "" Then
repere = True
End If
If OngletLiffe.Cells(ligne, 2).Text = Val(VbookFO) Then
repere = True
trouve = True
End If
Loop
If (trouve = True) Then
UserForm1.CbookBP2S = OngletLiffe.Cells(ligne, 1)
UserForm1.CbookFO = OngletLiffe.Cells(ligne, 2)
UserForm1.Ctrader = OngletLiffe.Cells(ligne, 3)
UserForm1.Cmiddle = OngletLiffe.Cells(ligne, 4)
Else
MsgBox ("Book non trouvé!")
End If
Else
MsgBox ("Veuillez saisir un book valide")
End If
Else
MsgBox ("Veuillez choisir un book à rechercher SVP")
End If
Calade
Messages postés1204Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 15 sept. 2009 à 14:55
Désolé,
Effectivement, il faudra que je réapprenne à lire.
Justement j'ai lu la doc un peu plus sérieusement:
La syntaxe 1 utilise un numéro de ligne et un numéro ou une lettre de colonne comme arguments d'index. Pour plus d'informations sur cette syntaxe, consultez l'objet Range. Les arguments RowIndex et ColumnIndex sont des décalages relatifs. En d'autres termes, si l'argument RowIndex a la valeur 1, des cellules contenues dans la première ligne de la plage, pas la première ligne de la feuille de calcul, sont renvoyées. Par exemple, si la sélection est la cellule C3, Selection.Cells(2, 2) renvoie la cellule D4 (vous pouvez utiliser la propriété Item pour indexer hors de la plage d'origine).
La partie souligné en gras m'a interpelé. Essaie en codant directement comme ceci.
Calade
Messages postés1204Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 15 sept. 2009 à 14:57
Nos 2 post se sont croisés. Effectivement je n'avais pas pensé à ça. Il faut éviter de jouer avec les propriétés par défaut (.Value dans ton cas), c'est source d'erreur. En plus en .NET ce ne sont plus les mêmes.