Comparatif de deux Cellules Textes

Bonjour à toutes et à tous,

J'ai un problème de comparaison entre deux colonnes voici le détail :

J'ai deux colonnes "A" et "G", la "A" est remplit automatiquement tous les mois, la "G" est remplie à la main.

dans "A" les codes sont composés de la manière suivante :

- Les deux premiers caractères obligatoires sont une gamme de produit (sur deux caractères chiffres) exemple : "17"

- Les deux suivants caractères facultatifs sont une version (sur deux caractères chiffres) exemple : "03"

- Les trois suivants obligatoires sont une référence (sur trois caractères lettre) exemple : "GBD"

- Les X suivants sont un nom (sur trois ou neuf caractères lettre/chiffre) exemple : "MONDE500" ou "WORLD55"

Exemple de code complet de "A" : "1703GBDMONDE500" ou "17GBDWORLD55"

Le code "G" est composé de manière identique sans la version (pour éviter de modifier les codes "G" à chaque évolution) et sans la référence (je souhaiterai multiplier la valeur de la colonne "C", par la colonne "H" si référence GBD dans colonne "A" ou colonne "I" si référence SHA dans colonne "A" )

Exemple de code "G" : "17MONDE500"

Mon programme ne fonctionne donc par car je ne sais pas comment comparé le code "A" et "G" car les chaines de caractères ne sont pas identiques.

Sub Valo()

Dim X As String
Dim Y As String
Dim ligneX As Long
Dim ligneY As Long

ligneX = 2
ligneY = 2

X = Cells(ligneX, 1) 'Cellule comparé
Y = Cells(ligneY, 7) 'Cellule de comparaison

Do While Not IsEmpty(Range("A" & ligneX)) 'Faire tant que cellule comparé non vide
  Do While Not IsEmpty(Range("G" & ligneY)) 'Faire tant que cellule de comparaison non vide
    If Left(X, 2) = Left(Y, 2) Then 'Si Les deux premiers caractères de cellule comparé = Les deux premiers caractères cellule de comparaison
     resultat = InStr(1, X, Y, 1)
       If resultat <> 0 Then 'Cette fonction ne marche pas !!
            If X Like "*GBD*" Then 'Si GBD dans cellule comparé
                Range("D" & ligneX) = Range("H" & ligneY) * Range("C" & ligneX) 'Multiplier Colonne H de ligne cellule de comparaison par Colonne C de ligne de cellule comparé
            End If
            If X Like "*SHA*" Then 'Si SHA dans cellule comparé
                Range("D" & ligneX) = Range("I" & ligneY) * Range("C" & ligneX) 'Multiplier Colonne I de ligne cellule de comparaison par Colonne C de ligne cellule comparé
            End If
    End If

ligneY = ligneY + 1

  Loop

ligneY = 2

    ligneX = ligneX + 1

Loop

End Sub

Merci de m'indiquer une fonction plus adéquate pour comparer ces deux chaines svp.

Merci d'avance et n'hésitez pas à me signaler si je ne suis pas clair dans mes explications.

Bonjour

"If resultat <> 0 Then 'Cette fonction ne marche pas !!"

Ce n'est pas cette ligne qui pose problème mais celle ci : "resultat = InStr(1, X, Y, 1)".

Essayez comme ceci :

resultat = InStr(1, Left(X, 2) & Right(X, Len(X) - 7), Y, 1)

Bonjour yal_excel,

Merci beaucoup pour ton aide !!

Le programme marche pour l'instant, je vais l'appliquer à mon véritable fichier et voir le résultat.

(en complément, pour ma problématique des versions renseignés dans le code ou non (exemple 1703GBD5MONDE ou 17GBD5MONDE), j'ai juste rajouter un "else" en changeant ta formule par "resultat1 = InStr(1, Left(X, 2) & Right(X, Len(X) - 5), Y, 1)")

Merci encore

Rechercher des sujets similaires à "comparatif deux textes"