Excel 2010 - Comparaison plages valeurs dans deux feuilles
Fleur
-
Fleur -
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.
Comment faire pour comparer les deux plages de valeurs ?
Merci d'avance pour votre aide.
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.
A voir également:
- Comparer deux plages de cellules excel
- Concatener deux cellules excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
3 réponses
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
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
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)
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
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
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
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
RV reporté à cet aprèm
Donc
complété Couleur feuille "original"
Pris en compte le problème de doublons dans cette feuille (j'y ai créé le doublon "paris/cont")
https://www.cjoint.com/c/DIqkS35VPnJ
tu dis
Donc
complété Couleur feuille "original"
Pris en compte le problème de doublons dans cette feuille (j'y ai créé le doublon "paris/cont")
https://www.cjoint.com/c/DIqkS35VPnJ
tu dis
Bonsoir michel_m,
Un grand merci. Super.
J'ai testé sur une nouvelle liste de données et j'essaye de déchiffrer certaines parties de ton code.
Car si dans la feuille 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), le résultat n'est pas celui attendu, il affiche les 2 montants au lieu de noter "idem".
Est-ce possible de gérer le cas de décimales variables dans la feuille "encours"?
après test : Resultat Montant
0,563 0,56283333
J'ai essayé de changer la valeur arrondi dans le code. Pas la bonne solution.
Comment tronquer la valeur pour le calcul ?
Un grand merci. Super.
J'ai testé sur une nouvelle liste de données et j'essaye de déchiffrer certaines parties de ton code.
Car si dans la feuille 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), le résultat n'est pas celui attendu, il affiche les 2 montants au lieu de noter "idem".
Est-ce possible de gérer le cas de décimales variables dans la feuille "encours"?
après test : Resultat Montant
0,563 0,56283333
J'ai essayé de changer la valeur arrondi dans le code. Pas la bonne solution.
Comment tronquer la valeur pour le calcul ?
Bonjour,
Désolé, mais j'avais déconnecté et l'électricité de l'ordi en raison des violents orages dans mon coin (beaucoup d'inondations et évacuation de personnes)...
Concernant ton dernier message, j'ai comparé le tableau que tu désirais et le mien: aucune différence mis à part Paris/cont, modifié pour vérifier les totaux des doublons.
Donc, je ne comprend pas ta remarque
Ce n'est facile d'avancer à cause du décalage horaire -j'espère pour toi que ce n'est pas de l'insomnie ! - et je suis absent demain toute la journée (le solei sera de retour, yeeeah)
Cordialement
Désolé, mais j'avais déconnecté et l'électricité de l'ordi en raison des violents orages dans mon coin (beaucoup d'inondations et évacuation de personnes)...
Concernant ton dernier message, j'ai comparé le tableau que tu désirais et le mien: aucune différence mis à part Paris/cont, modifié pour vérifier les totaux des doublons.
Donc, je ne comprend pas ta remarque
Ce n'est facile d'avancer à cause du décalage horaire -j'espère pour toi que ce n'est pas de l'insomnie ! - et je suis absent demain toute la journée (le solei sera de retour, yeeeah)
Cordialement
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 ?
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 ?
Merci pour les informations. J'ai continué mes tests mais sans succes.
J'ai déposé le fichier exemple
http://www.cjoint.com/?3ImxUxlUYog
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