Gestion et Comparaison des valeurs de deux colonnes différents


#1

Bonjour à tous,

Nouveau sujet, je dois comparé les valeurs de deux cellules différents, si les valeurs sont les mêmes, c’est bon, mais si ce n’est pas le cas, il faut les colorés.

1 - Le truc c’est que les valeurs à comparé sont différents par exemple, la cellule E contient : CAMPUS_SAINT_JUST_ABRICOTIERS_RE1000113939_181217_18_12_2017 16_07_1600001.pdf
Et la cellule G contient seulement : RE1000113939

Alors on doit juste comparé, la cellule E, plus précisement, le chiffre commençant par RE1000113939 de la cellule E à la valeur de la cellule G, et s’ils sont identique alors c’est bon mais si il ne l’est pas, il faut la coloré.

2 - Le deuxième c’est de vérifier le format de la date si c’est bien JJ/MM/AAAA et aussi de comparé la date depart à la date arrivee si c’est bien normale, par exemple si la date depart est le 10/10/2017, et que la date arrivé est le 05/10/2017, c’est pas normale, alors il faut la signaler aussi.

Voici par exemple un fichier de test :
Test.xlsm (8,4 Ko)

En ésperant que mon requêtte est claire, je vous remercie d’avance de votre aide.


#2

Bonjour

Sélectionner la plage de cellule concernée de E2 à N10
Menu Accueil / Style --> mise en forme conditionnelle
image
puis
image

puis cliquez sur FORMAT et choisissez la couleur de remplissage

image

Ensuite dans s’applique à

Agrandissez la plage de $E$2:$N$65000 ou plus ou moins suivant le nb total que vous aurez à comparer
et appliquez
Ghaby.xlsm (10,0 Ko)


#3

Bonjour @Mimimathy,

Je te remercie beaucoup pour ces éxplications bien détaillé et serait-il possible de créer un macro VBA pour cette solution!?..
Parcequ’à vraie dire, mon projet doit être en macro VBA utilisable pour n’importe quelle autre fichier excel.


#4

Re,

Si la question était posée dés le départ, tu ne crois pas que l’on gagne du temps? :face_with_raised_eyebrow:

Alors, est-ce que les autres fichiers, sont de même compositions, càd même colonnes, même ligne de départ, nom de l’onglet identique, etc


#5

Pas forcement mais il suffit juste que j’adapte les noms de colonne etc…

Et le titre est en VBA, c’est pour ça que je n’ai pas précisé, je croyais que VBA et macro vont toujours ensemble…


#6

Re

Voici la macro (qui fonctionne avec l’exemple)


Sub Compare()
'Déclaration des variables
Dim i%, Dl%, Dc%

'Affection des variables
i = 2 'N° de la première ligne à comparer
Dl = Range("E" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne E
Dc = Cells(i, Columns.Count).End(xlToLeft).Column 'n° de la première colonne vide de la ligne 2
  For i = 2 To Dl 'boucle sur les lignes
    If Cells(i, 5).Value Like "*" & Cells(i, 7).Value & "*" And Cells(i, 13).Value < Cells(i, 14).Value Then
        Range(Cells(i, 5), Cells(i, Dc)).Interior.Color = RGB(255, 128, 0)
    End If
  Next i
End Sub

Le fichier
Ghaby.xlsm (17,4 Ko)


#7

Encore une fois merci beaucoup @Mimimathy,

Mais là en faite, je comprend pas bien ton code, je veux dire est-ce que c’est parce que les dates sont anormales qu’ils sont tous colorés ou qu’est-ce qui se passe!??..Vraiment désolé mais je crois bien que je suis perdu.


#8

modifie dans cette ligne

par

Range(Cells(i, 5), Cells(i, Dc)).Interior.Color = RGB(252,228,214)

et si la date d’arrivée est inférieure à la date de départ, c’est pas normal


#9

Oui c’est pas normal, ce que je veux en venir, si ce n’est pas abusé pour toi, ce que serait-il possible de separer les codes pour la comparaison pour celui des chiffres qui commence par RExxxxxxx et les codes pour celui de la comparaison des dates!??..
Parce que c’est pour ça que je suis pérdu en faite.


#10

Re,

Change la macro par celle-ci

Sub Compare()
'Déclaration des variables
Dim i%, Dl%, Dc%

'Affection des variables
i = 2 'N° de la première ligne à comparer
Dl = Range("E" & Rows.Count).End(xlUp).Row 'n° de la dernière ligne non vide de la colonne E
Dc = Cells(i, Columns.Count).End(xlToLeft).Column 'n° de la première colonne vide de la ligne 2
  For i = 2 To Dl 'boucle sur les lignes
    If Cells(i, 5).Value Like "*" & Cells(i, 7).Value & "*" Then
        Range(Cells(i, 5), Cells(i, 7)).Interior.Color = RGB(255, 255, 255)
    Else
        Range(Cells(i, 5), Cells(i, 7)).Interior.Color = RGB(252, 228, 214)
    End If
    If Cells(i, 13).Value >= Cells(i, 14).Value Then
        Range(Cells(i, 13), Cells(i, 14)).Interior.Color = RGB(255, 255, 255)
    Else
        Range(Cells(i, 13), Cells(i, 14)).Interior.Color = RGB(252, 228, 214)
    End If
  Next i
End Sub


#11

Voilà, là je comprend mieux!!, merci beaucoup.

Et j’ai aussi testé ce code avec une autre fichier et ça marche très bien.

Mais est-ce que tu pourrais me guider dans ton code!?, parce qu’il n’y a pas assez de commentaire et je suis un peux perdu (genre où est-ce que tu compare celui des dates et où est-ce que tu compare l’autre???) même si le résultat est celui que je veux!!..


#12

Re,

For i = 2 To Dl 'boucle sur les lignes

Pour i=2 TO Dl depuis la ligne (i) 2 jusqu’à la ligne (Dl) dernière ligne

If Cells(i, 5).Value Like “" & Cells(i, 7).Value & "” Then

si on trouve dans la cellule (i,5) –> cellule (E2) E=5ème colonne et i le N° de la ligne
une partie de la valeur de la cellule (i,7) (G2) G=7ème colonne et i le N° de la ligne Then --> alors

Range(Cells(i, 5), Cells(i, 7)).Interior.Color = RGB(255, 255, 255)

on colorise en blanc (RGB(255, 255, 255)) l’intérieur (interior.color) la plage (Range) cellule E2 à G2

Else
Sinon

Range(Cells(i, 5), Cells(i, 7)).Interior.Color = RGB(252, 228, 214)

on colorise en couleur (RGB(252, 228, 214)) l’intérieur (interior.color) la plage (Range) cellule E2 à G2

End If

Next i
i change de valeur et prend la valeur de 3 et on reboucle jusqu’à la dernière ligne


#13

D’accord!!..c’est claire!!..

Merci beaucoup @Mimimathy, grâce à toi, j’ai bouclé cette projet en un rien de temps!! :wink:

Je reviendrais bientôt avec des nouveaux sujets pour que tu puisse mettre tes atouts au profit. :wink: :slight_smile:

Cordialement.