Comparaison entre deux fichiers EXCEL en utilisant un code VBA
Résolu/Fermé
Heisenberg_2
Messages postés
1
Date d'inscription
jeudi 17 mars 2016
Statut
Membre
Dernière intervention
17 mars 2016
-
17 mars 2016 à 14:35
Cedric_hess Messages postés 28 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 24 mai 2016 - 6 avril 2016 à 10:18
Cedric_hess Messages postés 28 Date d'inscription mercredi 30 mars 2016 Statut Membre Dernière intervention 24 mai 2016 - 6 avril 2016 à 10:18
A voir également:
- Comparaison entre deux fichiers EXCEL en utilisant un code VBA
- Liste déroulante excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Le code ascii en informatique - Guide
- Mise en forme conditionnelle excel - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
Cedric_hess
Messages postés
28
Date d'inscription
mercredi 30 mars 2016
Statut
Membre
Dernière intervention
24 mai 2016
Modifié par noctambule28 le 7/04/2016 à 10:12
Modifié par noctambule28 le 7/04/2016 à 10:12
Bonjour a tous
finalement je me suis debrouillé et j'ai trouvé la solution voila le code , mais N.B que la comparaison se fait dans un seul excel pas deux ;
finalement je me suis debrouillé et j'ai trouvé la solution voila le code , mais N.B que la comparaison se fait dans un seul excel pas deux ;
Option Explicit Sub comparer() Dim Derlig As Long, Lig As Long, Ref As String Dim T_ab, D_ab As Object, T_cd, D_cd As Object Dim T_fgh, Cptr As Long, Separ Dim start As Single '--------------------initialisations start = Timer Application.ScreenUpdating = False 'nettoyage Range("E2:G30000").Clear 'concaténation colonnes A & B Set D_ab = CreateObject("scripting.dictionary") Derlig = Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row T_ab = Range("A2:B" & Derlig) For Lig = 1 To UBound(T_ab) Ref = T_ab(Lig, 1) & "¤" & T_ab(Lig, 2) If Not D_ab.exists(Ref) Then D_ab.Add Ref, "" Next T_ab = D_ab.keys 'concaténation colonnes C & D Set D_cd = CreateObject("scripting.dictionary") Derlig = Columns("C").Find(what:="*", searchdirection:=xlPrevious).Row T_cd = Range("C2:D" & Derlig) For Lig = 1 To UBound(T_cd) Ref = T_cd(Lig, 1) & "¤" & T_cd(Lig, 2) If Not D_cd.exists(Ref) Then D_cd.Add Ref, "" Next T_cd = D_cd.keys '- -----------------comparaisons ReDim T_fgh(3, 0) 'preparation tablo comparé ' fonctionalités suppprimés For Lig = 0 To UBound(T_ab) If Not D_cd.exists(T_ab(Lig)) Then Separ = Split(T_ab(Lig), "¤") ReDim Preserve T_fgh(3, Cptr) T_fgh(0, Cptr) = Separ(0) T_fgh(1, Cptr) = Separ(1) Cptr = Cptr + 1 End If Next 'nouvelles fonctionalités For Lig = 0 To UBound(T_cd) If Not D_ab.exists(T_cd(Lig)) Then Separ = Split(T_cd(Lig), "¤") ReDim Preserve T_fgh(3, Cptr) T_fgh(0, Cptr) = Separ(0) T_fgh(2, Cptr) = Separ(1) Cptr = Cptr + 1 End If Next '------------------restitution Range("F2").Resize(Cptr, 3) = Application.Transpose(T_fgh) Derlig = Range("E2:H100000").Find(what:="*", searchdirection:=xlPrevious).Row Range("F2:H" & Derlig).Borders.Weight = xlThin Application.ScreenUpdating = True MsgBox "comparaison efffectuée en " & Timer - start & " secondes" End Sub
Utilisateur anonyme
6 avril 2016 à 01:18
6 avril 2016 à 01:18
Bonjour,
Je vais faire la supposition suivante : ton fichier Excel version 1 est pour un logiciel L qui comporte 5 fonctions, de A à E.
Normalement, les utilisateurs d'un logiciel peuvent utiliser tout ou partie des fonctions proposées, mais ne peuvent pas ajouter ou supprimer des fonctions !
Ou alors, il faudrait qu'ils aient le code source du logiciel pour pouvoir le modifier !
Par contre, c'est vrai qu'au moment de l'installation d'un logiciel, l'utilisateur pourrait avoir éventuellement la possibilité de faire une installation personnalisée, qui lui permettrait d'ajouter ou supprimer des composants (en modifiant les cases ☐ et ☑) ;
ce en plus des fonctions de base standard installées automatiquement (le noyau).
Mis à part le cas spécial indiqué dans le paragraphe ci-dessus, je suppose donc que l'utilisateur final d'un logiciel peut uniquement utiliser ou non certaines des fonctions proposées ; et je pense que c'est le suivi de cela dont tu veux réellement t'occuper.
Il se peut que je me trompe, et dans ce cas, inutile de lire la suite de ce message.
==========================================
Je suppose maintenant que ton fichier Excel version 2 est pour le même logiciel L, mais en version 2.
Donc en plus des 5 fonctions de base initiales A à E, il y a aussi
5 fonctions supplémentaires F à J.
Ton problème serait alors de faire un suivi qui indiquera quelles sont les fonctions A à J utilisées par chaque utilisateur.
Donc pour le logiciel L, je ferai le tableau suivant :
Fonctions : A B C D E F G H I J
-----------------------------------------------------
User 001 x x x
User 002 x x x
User 003 x x x x x
User 004 x x x x x x x
.
.
.
User 999
REMARQUES
1) Autant de colonnes que de fonctions offertes par
la dernière version du logiciel L
2) Autant de lignes que d'utilisateurs, en remplaçant
User NNN par leur nom
3) Et bien sûr, pour chaque User, mettre une lettre X minuscule (coche x) pour chaque fonction qu'il utilise.
4) Les utilisateurs 001 et 002 ne peuvent pas utiliser les fonctions F à J car ils ont le logiciel L en version 1.
5) Les utilisateurs 003 et 004 peuvent utiliser les fonctions F à J car ils ont le logiciel L en version 2.
6) Tous les utilisateurs utilisent les fonctions A et B du logiciel L, car ce sont les fonctions de base minimum dont tous ont besoin.
Il se peut que je me trompe complètement, auquel cas j'aurais répondu à côté (hors sujet). Mais pour l'instant, c'est comme ça que je vois les choses.
Je vais faire la supposition suivante : ton fichier Excel version 1 est pour un logiciel L qui comporte 5 fonctions, de A à E.
Normalement, les utilisateurs d'un logiciel peuvent utiliser tout ou partie des fonctions proposées, mais ne peuvent pas ajouter ou supprimer des fonctions !
Ou alors, il faudrait qu'ils aient le code source du logiciel pour pouvoir le modifier !
Par contre, c'est vrai qu'au moment de l'installation d'un logiciel, l'utilisateur pourrait avoir éventuellement la possibilité de faire une installation personnalisée, qui lui permettrait d'ajouter ou supprimer des composants (en modifiant les cases ☐ et ☑) ;
ce en plus des fonctions de base standard installées automatiquement (le noyau).
Mis à part le cas spécial indiqué dans le paragraphe ci-dessus, je suppose donc que l'utilisateur final d'un logiciel peut uniquement utiliser ou non certaines des fonctions proposées ; et je pense que c'est le suivi de cela dont tu veux réellement t'occuper.
Il se peut que je me trompe, et dans ce cas, inutile de lire la suite de ce message.
==========================================
Je suppose maintenant que ton fichier Excel version 2 est pour le même logiciel L, mais en version 2.
Donc en plus des 5 fonctions de base initiales A à E, il y a aussi
5 fonctions supplémentaires F à J.
Ton problème serait alors de faire un suivi qui indiquera quelles sont les fonctions A à J utilisées par chaque utilisateur.
Donc pour le logiciel L, je ferai le tableau suivant :
Fonctions : A B C D E F G H I J
-----------------------------------------------------
User 001 x x x
User 002 x x x
User 003 x x x x x
User 004 x x x x x x x
.
.
.
User 999
REMARQUES
1) Autant de colonnes que de fonctions offertes par
la dernière version du logiciel L
2) Autant de lignes que d'utilisateurs, en remplaçant
User NNN par leur nom
3) Et bien sûr, pour chaque User, mettre une lettre X minuscule (coche x) pour chaque fonction qu'il utilise.
4) Les utilisateurs 001 et 002 ne peuvent pas utiliser les fonctions F à J car ils ont le logiciel L en version 1.
5) Les utilisateurs 003 et 004 peuvent utiliser les fonctions F à J car ils ont le logiciel L en version 2.
6) Tous les utilisateurs utilisent les fonctions A et B du logiciel L, car ce sont les fonctions de base minimum dont tous ont besoin.
Il se peut que je me trompe complètement, auquel cas j'aurais répondu à côté (hors sujet). Mais pour l'instant, c'est comme ça que je vois les choses.
Cedric_hess
Messages postés
28
Date d'inscription
mercredi 30 mars 2016
Statut
Membre
Dernière intervention
24 mai 2016
6 avril 2016 à 09:57
6 avril 2016 à 09:57
en faite ce que vous venez de decrire est encore plus compliqué pour le travail que je cherche mais comme meme merci a vous j'ai trouvé la solution je vais la poster ici comme ca si qlq1 on a besoin ..
6 avril 2016 à 10:14
Citons les sources...
Très bon code de Michel_m.
6 avril 2016 à 10:18