Vba Comparaison 2 Fichiers Excel
Maybe your like
Navigation
Discussion : vba comparaison 2 fichiers excel
Sujet :


Inscrivez-vous gratuitementpour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter
- Vous n'êtes pas encore inscrit sur Developpez.com ? Inscrivez-vous gratuitement !
- Recherche avancée

- Forum
- Logiciels
- Microsoft Office
- Excel
- Macros et VBA Excel
- vba comparaison 2 fichiers excel
Discussion : vba comparaison 2 fichiers excel Macros et VBA Excel
- Outils de la discussion
- Afficher une version imprimable
- S'abonner à cette discussion…
- Affichage
- Mode linéaire
- Choisir le mode hybride
- Choisir le mode arborescent
- 12/05/2013, 19h32 #1 Furil
Membre averti 






ÉtudiantInscrit enJanvier 2012Messages41
Détails du profil
Informations personnelles :Sexe :
Localisation : FranceInformations professionnelles :Activité : ÉtudiantInformations forums :Inscription : Janvier 2012Messages : 41
vba comparaison 2 fichiers excel Bonjour à tous, voilà on a 2 fichiers l'un s'appelant test et l'autre test2, mon fichier test est mis a jour régulièrement mais il a besoin d'une donnée particulière dans le fichier test2. contenu du fichier test.xls :
contenu du fichier test2.xls :
On peut identifier les utilisateur de façon unique avec leur "id" présent dans chacun des fichiers, on voudrais dans le cas où on parle du même utilisateur ajouter les données de la colonne "code" de test2 aux utilisateurs correspondants dans test. A savoir que ce sont bien sûr 2 fichiers excel et que je dois répéter plusieurs fois cette action car en réalité il y a des milliers d'utilisateurs. Voilà un code fonctionnel pour cet exemple mais j'obtiens l'erreur "dépassement de capacité" pour les plus gros fichiers : Code : Sélectionner tout - Visualiser dans une fenêtre à part
On m'a conseillé d'utiliser la méthode Find mais j'avoue ne pas savoir comment l'adapter à ce code. A savoir que la version d'office que j'utilise est la 2007.123456789101112131415161718192021222324252627282930313233 Sub comparaison() 'Evite de voir les opérations intermédiaire sur les fichiers Application.ScreenUpdating = False 'déclarations des variables Dim i As Integer Dim j As Integer Dim Trouve As Integer i = 2 'initialisation du compteur à 2 car la ligne 1 contient l'en-tête de chaque donnée While (Workbooks("test.xlsm" ).Sheets(1).Cells(i, 2).Value <> "" ) ' tant que dans le fichier test la cellule en (ligne i, colonne B) n'est pas vide j = 2 Trouve = 0 'cette variable sert d'indicateur si c'est à 0 on a rien trouvé ou 1 on a trouvé la cellule correspondante While (Workbooks("test2.xlsm" ).Sheets(1).Cells(j, 3).Value <> Null) & (Trouve = 0) 'si la cellule du fichier test2 correspond à celle de test alors If (Workbooks("test2.xlsm" ).Sheets(1).Cells(j, 3).Value = _ Workbooks("test.xlsm" ).Sheets(1).Cells(i, 2).Value) Then Trouve = 1 'On copie le code à la ligne actuelle dans une nouvelle colonne Workbooks("test.xlsm" ).Sheets(1).Cells(i, 3).Value = _ Workbooks("test2.xlsm" ).Sheets(1).Cells(j, 2).Value 'sinon on passe à la ligne suivante de icatfiltre Else j = j + 1 End If Wend i = i + 1 Wend
Répondre avec citation 0 0 - 12/05/2013, 19h38 #2 SfJ5Rpw8
Expert éminent 







Inscrit enJuin 2003Messages14 008
Détails du profil
Informations personnelles :Localisation : FranceInformations forums :Inscription : Juin 2003Messages : 14 008
bonjour, gros fichier ? combien de ligne ?
Répondre avec citation 0 0 - 12/05/2013, 20h27 #3 Marc-L
Expert éminent 






Développeur informatiqueInscrit enAvril 2013Messages9 468
Détails du profil
Informations personnelles :Sexe :
Localisation : France, Hauts de Seine (Île de France)Informations professionnelles :Activité : Développeur informatiqueSecteur : High Tech - Éditeur de logicielsInformations forums :Inscription : Avril 2013Messages : 9 468
Je lui ai effectivement conseillé la méthode Find, aussi de vérifier les types des variables ou mettre en commentaire les lignes des Dim mais surtout l'inutilité d'un code VBA car avec la colonne Id en première dans le fichier test2, une simple formule RECHERCHEV dans une cellule du fichier test s'acquitte de la récupération de la donnée !
Répondre avec citation 1 0 - 12/05/2013, 21h23 #4 SfJ5Rpw8
Expert éminent 







Inscrit enJuin 2003Messages14 008
Détails du profil
Informations personnelles :Localisation : FranceInformations forums :Inscription : Juin 2003Messages : 14 008
Envoyé par Marc-L
... ou mettre en commentaire les lignes des Dim... arf ... Vade rétro satanas .... il ne faut pas supprimer les Dim .. il faut déclarer toutes les variables !!! et rajouter en haut de toutes les pages de code la ligne :
Option Explicit cela permet d'éviter grand nombre de bugs !!Code : Sélectionner tout - Visualiser dans une fenêtre à part
Répondre avec citation 1 0 - 12/05/2013, 21h25 #5 Furil
Membre averti 






ÉtudiantInscrit enJanvier 2012Messages41
Détails du profil
Informations personnelles :Sexe :
Localisation : FranceInformations professionnelles :Activité : ÉtudiantInformations forums :Inscription : Janvier 2012Messages : 41
Alors pour le nombre de lignes ce serait de 1300 lignes. J'aimerai pouvoir réutiliser le code car je devrais faire la même chose pour un autre fichier mais copier cette fois plusieurs champs au lieu d'un seul lors d'une correspondance de l'id des utilisateurs. Ensuite concernant le recherchev je crains que ce ne soit inutile car la/les personnes mettant à jour le fichier le copie sur le partage et donc écrase directement le fichier modifié ce qui voudrait dire qu'à chaque fois je devrais bouger la colonne id donc ce n'est pas la bonne solution :/ Puis je viens de mettre en commentaire les dim et j'obtiens l'erreur "Erreur définit par l'application ou par l'objet". Enfin je ne sais pas pourquoi mais il me marque "incompatibilité de type" sur la deuxième boucle lorsque je met la double quote au lieu de Null:
While (Workbooks("test2.xlsm" ).Sheets(1).Cells(j, 3).Value <> ""Code : Sélectionner tout - Visualiser dans une fenêtre à part
Répondre avec citation 0 0 - 12/05/2013, 21h33 #6 SfJ5Rpw8
Expert éminent 







Inscrit enJuin 2003Messages14 008
Détails du profil
Informations personnelles :Localisation : FranceInformations forums :Inscription : Juin 2003Messages : 14 008
tu as rajouté en haut de tes page de codes la ligne OBLIGATOIRE (surtout pour les débutants) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 12 Option Explicit
Répondre avec citation 1 0 - 12/05/2013, 22h31 #7 Furil
Membre averti 






ÉtudiantInscrit enJanvier 2012Messages41
Détails du profil
Informations personnelles :Sexe :
Localisation : FranceInformations professionnelles :Activité : ÉtudiantInformations forums :Inscription : Janvier 2012Messages : 41
Oui j'ai bien mis Option Explicit, dans mon exemple ça fonctionne mais dans le fichier de 1300 lignes, j'obtient ce message : "dépassement de capacité".
Répondre avec citation 0 0 - 12/05/2013, 22h52 #8 BlueMonkey
Membre Expert 






Inscrit enDécembre 2011Messages1 186
Détails du profil
Informations personnelles :Sexe :
Localisation : FranceInformations forums :Inscription : Décembre 2011Messages : 1 186
Bonsoir, En VBA opérateur & ne fait pas la même chose qu'en C ou d'autres languages. En effet, seul, il sert à faire de la concaténation de chaînes de caractères. (même en C ça serait && pour l'opérateur logique) Donc la ligne suivante ne fait pas ce que tu crois.
While (Workbooks("test2.xlsm" ).Sheets(1).Cells(j, 3).Value <> Null) & (Trouve = 0) Ce que tu veux c'est en fait :Code : Sélectionner tout - Visualiser dans une fenêtre à part
While (Workbooks("test2.xlsm" ).Sheets(1).Cells(j, 3).Value <> "") And (Trouve = 0) [Edit] Avec cette correction, tu peux remettre les Dim.Code : Sélectionner tout - Visualiser dans une fenêtre à part
Répondre avec citation 1 0 - 12/05/2013, 22h54 #9 SfJ5Rpw8
Expert éminent 







Inscrit enJuin 2003Messages14 008
Détails du profil
Informations personnelles :Localisation : FranceInformations forums :Inscription : Juin 2003Messages : 14 008
Enleve le null et remet le <>"". J'avais pas remarqué ton & ... en Vb il faut utiliser And .
Répondre avec citation 1 0 - 13/05/2013, 02h14 #10 Marc-L
Expert éminent 






Développeur informatiqueInscrit enAvril 2013Messages9 468
Détails du profil
Informations personnelles :Sexe :
Localisation : France, Hauts de Seine (Île de France)Informations professionnelles :Activité : Développeur informatiqueSecteur : High Tech - Éditeur de logicielsInformations forums :Inscription : Avril 2013Messages : 9 468
Les variables i & j ne devraient pas être en Integer ! Car même en mettant en commentaire les Dim
, plus d'erreur si dépassement des 32767 lignes, si ?! ____________________________________________________________________ Ikéa est le meilleur prénom pour une femme : suédoise, bon marché, à emmener aussitôt chez soi et facile à monter !
Répondre avec citation 0 0 - 13/05/2013, 19h50 #11 Furil
Membre averti 






ÉtudiantInscrit enJanvier 2012Messages41
Détails du profil
Informations personnelles :Sexe :
Localisation : FranceInformations professionnelles :Activité : ÉtudiantInformations forums :Inscription : Janvier 2012Messages : 41
Grand merci à tous, ça venait bien du "&" et ça passe avec les doubles quotes maintenant, je met le code pour ceux qui en auront éventuellement besoin dans le future
: Code : Sélectionner tout - Visualiser dans une fenêtre à part
A savoir qu'avant d’exécuter cette macro, il faut veiller à ouvrir les 2 fichiers concerné.1234567891011121314151617181920212223242526272829303132333435363738 Sub Comparaison () 'Evite de voir les opérations intermédiaire sur les fichiers Application.ScreenUpdating = False 'déclarations des variables Dim i As Integer Dim j As Integer Dim Trouve As Integer i = 2 'initialisation du compteur à 2 car la ligne 1 contient l'en-tête de chaque donnée While (Workbooks("test.xlsm").Sheets(1).Cells(i, 2).Value <> "") ' tant que dans le fichier test la cellule en (ligne i, colonne B) n'est pas vide j = 2 Trouve = 0 'cette variable sert d'indicateur si c'est à 0 on a rien trouvé ou 1 on a trouvé la cellule correspondante While (Workbooks("test2.xlsm").Sheets(1).Cells(j, 3).Value <> "") And (Trouve = 0) 'si la cellule du fichier test2 correspond à celle de test alors If (Workbooks("test2.xlsm").Sheets(1).Cells(j, 3).Value = _ Workbooks("test.xlsm").Sheets(1).Cells(i, 2).Value) Then Trouve = 1 'On copie le code à la ligne actuelle dans une nouvelle colonne Workbooks("test.xlsm").Sheets(1).Cells(i, 3).Value = _ Workbooks("test2.xlsm").Sheets(1).Cells(j, 2).Value 'sinon on passe à la ligne suivante de test2 Else j = j + 1 End If Wend i = i + 1 Wend End Sub
Voilà donc encore merci et bonne soirée.
Répondre avec citation 0 0
| Actualités | FAQs OFFICE | TUTORIELS OFFICE | LIVRES OFFICE | SOURCES VBA | OFFICE 2010 |

- Forum
- Logiciels
- Microsoft Office
- Excel
- Macros et VBA Excel
- vba comparaison 2 fichiers excel
Discussions similaires
- [VBA-E] Enregistrement fichier Excel Par mulanzia2003 dans le forum Macros et VBA Excel Réponses: 2 Dernier message: 28/08/2006, 10h55
- [VBA-E]ouvrir fichier excel + boite dialogue VBA Par dananounette dans le forum Macros et VBA Excel Réponses: 2 Dernier message: 26/05/2006, 17h13
- [VBA-E]Création fichier EXCEL et détection cellule vide Par benoue dans le forum Macros et VBA Excel Réponses: 18 Dernier message: 24/02/2006, 18h22
- [VBA]Envoyer un fichier excel avec OutLook Par Sunchaser dans le forum Macros et VBA Excel Réponses: 2 Dernier message: 07/02/2006, 17h24
- [VBA]Lien entre fichiers excel : Update en VBA Par criocaps dans le forum Macros et VBA Excel Réponses: 2 Dernier message: 20/01/2006, 10h07
Partager
Partager
Tag » Code Vba Pour Comparer Deux Fichiers Excel
-
Macro Pour Comparer Deux Fichiers Excel - CCM
-
VBA Macro Pour Comparer Toutes Les Cellules De Deux Fichiers Excel
-
[VBA] Macro Pour Comparer 2 Fichiers Excel
-
Comment Comparer Deux Feuilles Excel (pour Les Différences)
-
COMMENT COMPARER AUTOMATIQUEMENT DEUX FEUILLES ...
-
Code Vba Pour Comparer Deux Feuilles | Excel-Downloads
-
Comparaison Entre Deux Fichiers EXCEL En Utilisant Un Code VBA
-
Comment Comparer Deux Tableaux Excel ? - Bureautique Efficace
-
Comment Comparer Deux Classeurs Excel ? - TechBlogSD
-
Comment Comparer Deux Fichiers Excel - Exceller Avec La Bureautique
-
[VBA] Rapidité De Comparaison De 2 Fichiers - OpenClassrooms
-
Tâches De Base Dans L'application Comparer Les Feuilles De Calcul
-
Comparer Deux Versions D'un Classeur à L'aide De La Fonction ...
-
Comment Comparer Deux Feuilles De Calcul Dans Un Classeur Ou ...