Gestion des guillemets dans boucle + if

Résolu
Quenton -  
 Quenton -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. Quenton
     
    Parfait,

    effectivement, cela fonctionne !

    Merci beaucoup !
    0