problème de format pour 2 variables ?

antiphot

XLDnaute Occasionnel
Bonjour à toute et à tous

Je vous livre ci-joint la macro suivante qui va chercher une chaîne de caractères dans un commentaire et compare cette chaîne avec une liste de valeurs dans la colonne B de la feuille DemMil. Si ces 2 valeurs sont identiques un message apparaît.

Pour moi la macro ci-dessous devrait fonctionner et pourtant ce n'est pas le cas. Je pense qu'il s'agit d'un problème de format mais je n'arrive pas à le résoudre.

Si quelqu'un a la solution...

Ci-joint le fichier exemple

Merci

Code:
Sub test()
Dim CodeInt As String

For Each c In Sheets("feuil1").Range("A1")
    For Each Lot In Sheets("DemMil").Range("B1:B" & Sheets("DemMil").Range("B65536").End(xlUp).Row)
    
        If Not c.Comment Is Nothing Then
                        chainecherchée = "Code Interne :"
                                            p = 1
                                            Do While p > 0
                                                 p = InStr(p, c.Comment.Text, chainecherchée)
                                                    If p > 0 Then
                                                        CodeInt = c.Comment.Shape.TextFrame.Characters(Start:=p + 14, Length:=Len(chainecherchée) - 8).Text
                                                        p = p + Len(chainecherchée)
                                                    End If
                                            Loop
             
                                            If CodeInt = Lot Then
                                                MsgBox ("Gagné")
                                            End If
        End If
    Next Lot
Next c
End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : problème de format pour 2 variables ?

Bonsoir antiphot
Votre procédure semble fonctionner correctement. Elle extrait la chaîne " 100-F" du commentaire, mais cette chaîne n'existe pas dans la liste des chaînes de référence. Celle qui s'en rapproche le plus est "100-F ".
Si vous ajoutez la chaîne " 100-F" à votre liste, le message attendu apparaît.​
ROGER2327
#3196
 

pierrejean

XLDnaute Barbatruc
Re : problème de format pour 2 variables ?

Bonjour Voisin
Salut ROGER

Une autre proposition (a tester):

Code:
Sub test1()
For Each c In Sheets("feuil1").Range("A1")
 For Each LOT In Sheets("DemMil").Range("B1:B" & Sheets("DemMil").Range("B65536").End(xlUp).Row)
    If Not c.Comment Is Nothing Then
     If InStr(c.Comment.Text, "Code Interne : " & Trim(LOT)) <> 0 Or InStr(c.Comment.Text, "Code Interne :" & Trim(LOT)) <> 0 Then
       MsgBox ("gagné")
     End If
    End If
  Next
Next
End Sub
 

antiphot

XLDnaute Occasionnel
Re : problème de format pour 2 variables ?

Bonsoir Roger, pierrejean

enfin je devrais plutôt dire bonjour à l'heure qu'il est. En rentrant de week-end, je vois que la solution a été trouvée. Je dois dire que j'avais pensé à tout sauf à ca. Une vérification de la longueur de la chaîne extraite m'aurait évité des heures de recherche. Merci Roger

Pierrejean, ta solution me plaît bien car si je ne m'abuse elle supprime les espaces vides à droite et à gauche de la chaîne ?

Bonne semaine à vous deux

Philippe
 

pierrejean

XLDnaute Barbatruc
Re : problème de format pour 2 variables ?

Re

Effectivement le Trim ote les espaces devant et derriere l'argument
De fait la macro que je te propose couvre les espaces intempestifs dans la liste autant que le manquant dans le commentaire
A la base j'avais trouvé le code lègerement 'capillotracté'
 

Discussions similaires

Réponses
2
Affichages
146

Statistiques des forums

Discussions
312 389
Messages
2 087 925
Membres
103 676
dernier inscrit
Haiti