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 SubMerci 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