Excel 2010 - Comparaison plages valeurs dans deux feuilles [Fermé]

Signaler
-
 Fleur -
Bonjour,
Je sollicite votre aide pour comparer le contenu de deux plages dans deux feuilles excel.
Je suis novice et je dois faire diverses étapes, déjà je n'arrive pas à comparer deux valeurs dans deux feuilles.
Mon besoin :
Comparer les contenus des deux plages dans deux feuilles :
colonnes D et F de la feuille" Encours" avec le contenu des
colonnes A et B de la feuille "Original".
1 - Si contenu de la colonne D (feuille Encours) vide, passer à la valeur suivante
2- Si contenu des colonnes D (feuille Encours) et A (feuille Original) différent, noter feuille Encours, colonne E "Pas trouvé" et passer à la valeur suivante.
3 - Si contenu des colonnes D (feuille Encours) et A (feuille Original) identique, comparer les valeurs correspondantes des colonnes F (feuille Encours) et B (feuille Original),
Si valeurs identiques (colonnes D, F avec A,B), mettre "Idem" en colonne E (feuille encours)
Si valeurs identiques colonnes D et A, mais valeurs différentes pour colonnes F et B, noter le montant de la feuille Original dans la colonne E "Result" de la feuille "Encours".
Mettre le fonds de la cellule en rouge.
4 - Identifier (fonds de cellule colonne A de couleur) dans la feuille "Original" les noms pas présents dans la feuille "Encours"
Pb. parfois dans la feuille "Original" nous pouvons avoir plusieurs lignes avec le même nom et des montants différents et en regard dans la feuille "Encours" une seule ligne,
Par conséquent si on trouve les même noms entre les deux feuilles, on doit ajouter les montants feuille Original avant comparaison et report de donnée dans la feuille Encours.


Sub Compare()
Dim i As Integer
Dim col_1 As Range
Dim col_2 As Range
Dim CelCol_1 As Range

'Rechercher dernière cellule renseignée feuille encours et effacer contenu colonne E
With Worksheets("Encours")
derlig = .Range("D" & Rows.Count).End(xlUp).Row
.Range("E4:E" & derlig).ClearContents
End With
' reste à effacer la couleur
'Definition plage de cellules
Set col_1 = Worksheets("Original").Range("A1:A200")
Set col_2 = Worksheets("Original").Range("B1:B200")
Set CelCol_1 = Worksheets("Encours").Range("E1:E" & derlig)

With ThisWorkbook.Sheets("Encours")
For i = derlig To 4 Step -1
'test si cellule vide, passer à la suivante
'Test si valeur cellule Encours!=Dx est dans Plage col_1(Original!A1:A200))
If Application.CountIf(col_1, .Range("D" & i).Value) = 0 Then
CelCol_1(i) = "KO"
'ElseIf Application.CountIf(col_1, .Range("D" & i).Value) = 0 And Application.CountIf(col_2, .Range("F" & i).Value) = 0 Then
CelCol_1(i) = "Pas trouvé"
Else
CelCol_1(i) = "Idem"
End If
'End If
Next i
End With
Msgbox ("Fin")
End Sub

Comment faire pour comparer les deux plages de valeurs ?
Merci d'avance pour votre aide.

3 réponses

Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
Bonjour,

Une cellule totalement vide n'égale pas zéro.
Tu peux utiliser
Range("D" & i).Value) = ""
"" c'est le vide. 0 c'est le chiffre zéro.

<> est le symbole pour différent

If (Application.CountIf(col_1, .Range("D" & i).Value) = 0) <> (Application.CountIf(col_2, .Range("F" & i).Value) = 0) Then
Bonsoir,
Merci pour les informations. J'ai continué mes tests mais sans succes.
J'ai déposé le fichier exemple
http://www.cjoint.com/?3ImxUxlUYog
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
25
(Range("D" & i).Value = 0) <>.(Range("F" & i).Value = 0)

En gros <> compare les deux segments.
Premier segment.
(Range("D" & i).Value) = 0) est-ce que Range D égale zero, oui ou non, disons non
Deuxième segment
(Range("F" & i).Value) = 0) est-ce que Range F égale zéro, oui ou non, disons non.

Comparaison, est-ce que non est différent de non. la réponse non, donc il n'entre pas dans ton IF.

Si tu veux comparer les valeurs, tu enlève le =0
(Range("D" & i).Value) <>.(Range("F" & i).Value)
premier segment, la valeur de range D
Deuxieme segment, la valeur de range F

<> est-ce que les valeurs sont pareille ou différente.

En espérant que ca t'aide
Messages postés
16373
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
22 janvier 2021
3 116
Bonjour,


Tu as bien que 48 lignes dans "encours" ?

sinon envoie le classeur avec toutes les lignes d'encours: besoin pour connaitre les lignes vides (nettoyage rapide colonne E)
Bonsoir Michel_m,
j'ai bien 48 lignes actuellement dans "encours". Le nombre de lignes va être variable chaque semaine et normalement la dernière ligne aura toujours une valeur en colonne D.
Pour l'instant lors de mes tests, pas de pb pour effacer le contenu de la colonne E. Mon souci est sur la comparaison des deux plages de valeurs. J'arrive à comparer une seule plage entre les deux feuilles et non les deux et je ne sais pas comment faire pour reporter la valeur différente dans l'autre feuille.

Merci
Messages postés
16373
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
22 janvier 2021
3 116
Bonjour,

Beaucoup de trucs à faire en ce début de semaine ! :o(

si personne n'intervient, j'essaierai de te proposer qq chose

cordialement
Bonsoir,
PlacageGranby, merci pour les explications. La comparaison des valeurs dans une même feuille fonctionne. Reste à trouver comment faire pour comparer avec une feuille différente et surtout ramener la valeur .
Ce qui n'est pas encore de mon niveau.
Merci à vous deux pour votre aide.
Messages postés
16373
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
22 janvier 2021
3 116
Bonjour

Tombé du lit ce matin -->Ci joint proposition
j'ai travaillé sur un feuille ccm pour pouvoir testé avec ton envoi
Il me reste à colorier la page "original" mais il y en a pas pour longtemps
Désolé mais j'ai RV pour me faire arracher des dents: tu vois, c'est le club Med pou moi
regarde déjà si ça te convient
https://www.cjoint.com/?3Iqjy2M3Q4a

Bonsoir,
Espère que les intempéries n'ont pas trop sévies.
Des journée très chargées, sans fin...
Le problème n'est pas dans les tableaux échangés mais dans la dernière version en ma possession, feuille encours.
Feuillle Encours (colonne F Montant) les montants ne sont pas seulement avec 3 décimales après la virgule (bien que affichage 3 décimales après la virgule).
Exemple contenu colonne : 0,56283333 - affichage définit en tant que nombre avec trois décimales (0,523). Dans ce cas, le résultat de la comparaison est "0,523" au lieu de "Idem"
Est-ce plus clair ?
Messages postés
16373
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
22 janvier 2021
3 116
Bonjour,
désolé pour le retard Mais...

Je n'ai pas compris
contenu colonne : 0,56283333 ---> 0,523 ??
en admettant 0,52683333 et on arrondit au 3° chififre-->0,523 <--m^ résultat avec 0,52783333

comment fait on arrondi au 4° chiffre ou arrondi.sup ou inf et quel affichage ?
ou coupure brusque sans arrondi ?

j'avoue que je suis largué...
Bonsoir,
Fichier disponible avec exemple dans feuille "ccm", ligne n° 5 "Paris / Support".
http://cjoint.com/?3IAxuoFexUb
Le resultat de la comparaison ne tient pas compte de l'arrondi.
Messages postés
16373
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
22 janvier 2021
3 116
Bonjour ou bonsoir svt l'heure at home

je n'ai plus le code en t^te mais le principe semble être d'envoyer le montant "original" sans arrondi et de mettre dans la colonne E la valeur avec un format arrondi à 3 décimales (le format arrondi à 3 existe d'origine dans la colonne F mais est détruit par la méthode "clear" dans la col_E car il faut enlever la couleur éventuelle) ???

si c'est ça:
   Else
Montant = D_or.Item(Nom) 'MODIF
If Montant = T_enc(Index, 3) Then
.Cells(Index + 2, "E") = "idem"
Else
.Cells(Index + 2, "E") = Montant
.Cells(Index + 2, "E").Interior.Color = 12106214 'rose
.Cells(Index + 2, "E").NumberFormat = "0.000" 'MODIF
End If

En espèrant que... ;o|
Bonsoir Michel,
Merci pour le retour, pas d'oubli du code !.
j'ai testé, résultat sans arrondi mais toujours deux chiffres au lieu de dire que c'est le même (pb d'arrondi). Vais rester avec ce résultat.
J'abuse mais je galère. J'ai tenté de modifier le code car j'ai du ajouter des colonnes dans fichier et dois faire comparaison sur trois valeurs (au lieu de deux) non consécutives dans chaque feuille.
La seule solution trouvée mais pas satisfaisante et de concaténer deux des valeurs dans autre colonne pour revenir à une comparaison de deux valeurs.
Aimerais bien trouver solution sans concaténer dans une énième colonne les valeurs.
j'ai modifié les range dans code, mais sans succès. Création de nouvelles variables ?
nouvelle version du fichier : http://cjoint.com/?3IDxRfDLyfk