Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/07/2011, 17h02   #1
Invité de passage
 
Inscription : mai 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 6
Points : 0
Points : 0
Par défaut Comparer deux fichiers excel

Bonjour à tous,

Je pense que le sujet a dû déja être utilisé mais je n'ais rien trouvé qui puisse répondre à mon problème pour le moment....

Voila : j'ai 2 fichiers excel identiques (mais pas avec le même nombre de ligne) que je dois comparer. Le but est d'identifier par un jeu de couleur la ou les données qui ont été modifiés dans le nouveau fichier par rapport à l'ancien.....

Je vous met le format des fichiers à comparer ... Si qq peut m'aider....

D'avance merci!
Fichiers attachés
Type de fichier : xls Ancien Fichier.xls (65,5 Ko, 8 affichages)
miss-o-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 08h29   #2
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Bonjour,
Je viens d'ouvrir le fichier joint.
Résultat je ne comprends pas plus ce qu'il a à faire que si je n'avais pas de fichier.
Je crois qu'il serait plus clair de mettre les deux fichiers avec des données bidons. Un avec quelques lignes l'autre avec un nombre différents et d'y ajouter les couleurs que vous voudriez voir apparaître suite à la comparaison.

Et expliquez en quoi les différences consistent.
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 09h35   #3
Invité de passage
 
Inscription : mai 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 6
Points : 0
Points : 0
Tout d'abord merci de ta réponse... Je vais essayé d'être plus précise dans ma demande. L'objectif est simplement de mettre surbrillance les champs qui ont été modifiés entre le fichier 1 (que j'ai appelé Ancien fichier) et le fichier 2 (Nvx fichier). Ces deux fichiers sont de format identique et sont mis à jour de façon mensuelle. l'idée est donc simplement d'identifier dans le nouveau fichier les champs qui ne sont plus les mêmes que dans le fichier 1. il y a des champs dates, numérique, texte.... Il faut juste les mettre en Jaune ou dans une autre couleur de façon à les identifier rapidement ligne par ligne.
Fichiers attachés
Type de fichier : xls Ancien Fichier.xls (66,5 Ko, 7 affichages)
Type de fichier : xls Nv Fichier.xls (40,0 Ko, 7 affichages)
miss-o-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 16h31   #4
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Bonjour,

Voilà une proposition
J'ai écrit une procédure dans un module de Nv Fichier

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub Compare_Anc_Nouv()
'Les fichiers doivnet être ouverts tous les deux
'Pour activer le premier
Workbooks("Ancien Fichier.xls").Activate
'On ouvre un tableau pour chaque fichier
Dim Tableau_Ancien(), Tableau_Nouveau()
NbColonne = 72
ligne1 = 7
'Calcul des lignes qui doivent être identiques dans les deux fichiers
Dern_Ligne = Range("A65536").End(xlUp).Row
NbLignes = Dern_Ligne + 1 - ligne1
'Dimensionnement des tableaux
ReDim Tableau_Ancien(72 * NbLignes)
ReDim Tableau_Nouveau(72 * NbLignes)
'Prélèvement des valeurs dans les cellules du premier fichiers
i = 0
For Each cel In Range("A7:BT" & ligne1 + NbLignes - 1)
    i = i + 1
    Tableau_Ancien(i) = cel.Value
Next cel
'Activation du second fichier
Workbooks("Nv Fichier.xls").Activate
'Prélèvement des valeurs dans les cellules du second fichier
'et comparaison avec celle du premier
i = 0
For Each cel In Range("A7:BT" & ligne1 + NbLignes - 1)
    i = i + 1
    Tableau_Nouveau(i) = cel.Value
    'Comparaison et si différence on met du jaune.
    If Tableau_Ancien(i) <> Tableau_Nouveau(i) Then cel.Interior.ColorIndex = 6
Next cel
End Sub
A tester pour voir si rien n' a été oublié.

NB: ceci
Code :
Dern_Ligne = Range("A65536").End(xlUp).Row
le 65536 peut être augmenté si vous travaillez dans Exl2007 ou 2010
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/07/2011, 10h05   #5
Invité de passage
 
Inscription : mai 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 6
Points : 0
Points : 0
Ecoute, je n'aurais qu'une seule chose à dire: MERCIIIIIIIIIIIIIIIIIIII
Ton code fonctionne nikel . trop fort!

Juste une petite question: les lignes de mon fichier peuvent évoluer. c'est à dire que le mois 1, j'aurai 120 lignes à mon ancien fichier et le mois 2, j'en aurais 150 par exemple. Est ce que ta macro identifie les nouvelles lignes?
En fait, si cela peut t'aider à la compréhension, la colonne Numéro d'opération est un numéro unique qui permet d'identifer la ligne .
Ne pourrait on pas envisager de comparer les lignes via ce numéro (un peu comme une recherche V)? comme cela, on est sur qu'on compare les mêmes lignes entre elles dans chaque fichier et qu'on peut identifier les lignes en plus et ou en moins.
miss-o-21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 14h10   #6
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Bonjour,

Pas de problème tant que le nombre de lignes de chacun des fichiers pour la même période (et globalement d'ailleurs) est identique.
Dans la procédure toutes les lignes de la 7 à xxx sont parcourues et comparées, il serait peut être intéressant d'adapter pour ne démarrer qu'a la ligne qui n'a pas encore été comparée. Pour cela il faudrait mettre Ligne1 à jour par un INPUTBOX().
On mettrait alors
Code :
1
2
Ligne1=INPUTBOX("N° de la ligne de début de la comparaison ?")
Ligne1 = Val(Ligne1) 'pour rendre à Ligne1 un format numérique
Tout cela dépend de la quantité de lignes à comparer.

Une petite adaptation peut être pour la ligne de code suivante

Code :
Dern_Ligne = Range("A65536").End(xlUp).Row
mettre Range("C65536") car il est plus certains qu'il n'y aura pas cellules vides dans la colonne C que dans la colonne A. Mais si c'est certains qu'aucune cellule vide n'apparaîtra dans la A on laisse comme ça.
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 17h30   #7
Membre Expert
 
Homme Robert JAMIN
Retraité
Inscription : juillet 2009
Messages : 1 223
Détails du profil
Informations personnelles :
Nom : Homme Robert JAMIN
Âge : 73
Localisation : Belgique

Informations professionnelles :
Activité : Retraité
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 223
Points : 2 022
Points : 2 022
Re,
J'ai modifié la procédure pour que l'opération de comparaison commence au n° de l'opération du fichier qui n'a pas encore été traitée.
La condition reste toujours la même, égalité du nombre de lignes dans les deux fichiers.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub Compare_Anc_Nouv()
'Les fichiers doivent être ouverts tous les deux
'Pour activer le premier
Workbooks("Ancien Fichier.xls").Activate
'On ouvre un tableau pour chaque fichier
Dim Tableau_Ancien(), Tableau_Nouveau()
NbColonne = 72
Ligne1 = InputBox("Numero de l'opération de début ?")
Ligne1 = Ligne1 + 6
'Calcul des lignes qui doivent être identiques dans les deux fichiers
Dern_Ligne = Range("C65536").End(xlUp).Row
NbLignes = Dern_Ligne + 1 - Ligne1
'Dimensionnement des tableaux
ReDim Tableau_Ancien(72 * NbLignes)
ReDim Tableau_Nouveau(72 * NbLignes)
'Prélèvement des valeurs dans les cellules du premier fichiers
i = 0
For Each cel In Range("A" & Ligne1 & ":BT" & Ligne1 + NbLignes - 1)
    i = i + 1
    Tableau_Ancien(i) = cel.Value
Next cel
'Activation du second fichier
Workbooks("Nv Fichier.xls").Activate
'Prélèvement des valeurs dans les cellules du second fichier
'et comparaison avec celle du premier
i = 0
For Each cel In Range("A" & Ligne1 & ":BT" & Ligne1 + NbLignes - 1)
    i = i + 1
    Tableau_Nouveau(i) = cel.Value
    'Comparaison et si différence on met du jaune.
    If Tableau_Ancien(i) <> Tableau_Nouveau(i) Then cel.Interior.ColorIndex = 6
Next cel
End Sub
__________________
Cordialement.

RJ
rjamin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h15.


 
 
 
 
Partenaires

Hébergement Web