Gestion des guillemets dans boucle + if

Résolu/Fermé
Quenton - 30 janv. 2013 à 14:40
 Quenton - 30 janv. 2013 à 15:36
Bonjour le forum,

J'ai une question sur un programme que j'ai écrit. Voici l'extrait du code qui me pose problème. En gros je veux parcourir la colonne C deux fois. Une fois pour trouver une cellule égale à Code et l'autre fois pour trouver une cellule égale à Bracket.

Code = Left(Cells(j, "C"), 6)
Bracket = Right(Cells(j, "C"), 7)
Bracket = Left(Bracket, 6)

For k = 2 To LastLine
If Cells(k, "C") = Code Then

For m = 2 To LastLine
If Cells(m, "C") = Bracket Then
Cells(j, "C").EntireRow.Select


Le problème :

Je trouve une cellule égale à Code, et en vérifiant c'est effectivement vrai.
Je ne trouve pas de cellule égale à Bracket, alors qu'en vérifiant il y en a une !


Une piste :

Quand sur VB je place ma souris sur

Cells(k, "C") il affiche "711020"
Code il affiche "711020"

Cells(m, "C") il affiche 711520
Bracket il affiche "711520"

Voilà, il y a donc ce problème de guillemet que je n'arrive pas à comprendre...

Je cherche depuis des plombes sans avancer, donc si quelqu'un voit une solution potentielle, ce serait très gentil de la partager !

Merci beaucoup !

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 30/01/2013 à 14:47
Bonjour,

Il y a donc une différence de type.

Cells(m, "C") il affiche 711520 ===> type Long (nombre entier)
Bracket il affiche "711520" ===> type String (chaîne de caractères).

Si tu cherches un string et que dans ta cellule tu as un long, il ne te le trouveras pas.
Alors soit tu cherches un string dans des string :
For m = 2 To LastLine  
If CStr(Cells(m, "C")) = Bracket Then 

Soit tu cherches un long dans des long :
For m = 2 To LastLine  
If Cells(m, "C") = CLng(Bracket) Then


Cordialement,
Franck P
0
Parfait,

effectivement, cela fonctionne !

Merci beaucoup !
0