Comparaison de 2 tableaux Excel.
Résolu/Fermé
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
-
13 févr. 2015 à 11:23
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 - 17 févr. 2015 à 19:47
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 - 17 févr. 2015 à 19:47
A voir également:
- Comparaison de 2 tableaux Excel.
- Liste déroulante excel - Guide
- Tableau croisé dynamique excel - Guide
- Fusionner 2 tableaux excel - Guide
- Formule excel - Guide
- Si et excel - Guide
6 réponses
via55
Messages postés
14402
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 avril 2024
2 702
13 févr. 2015 à 14:40
13 févr. 2015 à 14:40
Bonjour
Poste un exemple de ton fichier (allégé et anonymé si nécessaire) avec ses 2 tableaux sur cjoint.com et reviens ici indiquer le lien fourni.
En fonction de la structure exacte de ton fichier on pourra te dire comment adapter une macro qui crée le récapitulatif souhaité
Cdlmnt
Poste un exemple de ton fichier (allégé et anonymé si nécessaire) avec ses 2 tableaux sur cjoint.com et reviens ici indiquer le lien fourni.
En fonction de la structure exacte de ton fichier on pourra te dire comment adapter une macro qui crée le récapitulatif souhaité
Cdlmnt
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
Modifié par Kuartz le 13/02/2015 à 15:46
Modifié par Kuartz le 13/02/2015 à 15:46
Bonjour,
Merci d'abord d'avoir répondu aussi vite.
Je vous donne le lien pour aller télécharger mon fichier Excel (ZIP) :
https://www.cjoint.com/?0Bnp4VFbp7V
Alors voilà sur la feuille 1, le tableau de mon client. Sur la feuille 2, le tableau issu de mon logiciel de gestion. Sur la feuille 3, un exemple de ce que je souhaiterais obtenir après avoir utilisé la macro. Il faudrait qu'apparaissent les lignes dont la référence ou les prix ne correspondent pas et que la nature de la différence (prix ou référence) apparaisse en face de la ligne.
PS : J'ai créé une macro qui me permet de retraiter le tableau de mon client en supprimant les doublons en ajoutant les totaux HT lorsque 2 références sont identiques. Mais je dois cliquer plusieurs fois sur le bouton pour que tous les doublons s'ajoutent.... Si vous avez le temps d'y jeter un oeil....
Merci beaucoup.
Cordialement,
Merci d'abord d'avoir répondu aussi vite.
Je vous donne le lien pour aller télécharger mon fichier Excel (ZIP) :
https://www.cjoint.com/?0Bnp4VFbp7V
Alors voilà sur la feuille 1, le tableau de mon client. Sur la feuille 2, le tableau issu de mon logiciel de gestion. Sur la feuille 3, un exemple de ce que je souhaiterais obtenir après avoir utilisé la macro. Il faudrait qu'apparaissent les lignes dont la référence ou les prix ne correspondent pas et que la nature de la différence (prix ou référence) apparaisse en face de la ligne.
PS : J'ai créé une macro qui me permet de retraiter le tableau de mon client en supprimant les doublons en ajoutant les totaux HT lorsque 2 références sont identiques. Mais je dois cliquer plusieurs fois sur le bouton pour que tous les doublons s'ajoutent.... Si vous avez le temps d'y jeter un oeil....
Merci beaucoup.
Cordialement,
via55
Messages postés
14402
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 avril 2024
2 702
13 févr. 2015 à 16:13
13 févr. 2015 à 16:13
Re
Avec 2 tableaux non identiques c'est moins évident mais il faut surtout savoir ce qui est à reporter et où donc
1) tu parles de noter la ligne du tableau 2 , cela veut dire qu'il peut y avoir des lignes du tableau 2 dont on ne trouve pas la référence dans le tableau 1 mais pas l'inverse ?
2) dans le tableau 2 le prix est en K et dans le récap tu le mets en L ???? Erreur je supposes qu'on le met en K
3) pour le bouton un seul clic suffit chez moi mais cà demande un peu de temps de traitement vu le nombre de données
Dans l'attente
Cdlmnt
Avec 2 tableaux non identiques c'est moins évident mais il faut surtout savoir ce qui est à reporter et où donc
1) tu parles de noter la ligne du tableau 2 , cela veut dire qu'il peut y avoir des lignes du tableau 2 dont on ne trouve pas la référence dans le tableau 1 mais pas l'inverse ?
2) dans le tableau 2 le prix est en K et dans le récap tu le mets en L ???? Erreur je supposes qu'on le met en K
3) pour le bouton un seul clic suffit chez moi mais cà demande un peu de temps de traitement vu le nombre de données
Dans l'attente
Cdlmnt
via55
Messages postés
14402
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 avril 2024
2 702
>
via55
Messages postés
14402
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 avril 2024
13 févr. 2015 à 16:57
13 févr. 2015 à 16:57
Sans réponse de ta part essaie cette macro :
Cdlmnt
Sub recap() Dim DLig As Long Dim DLig2 As Long DLig = Sheets(1).Range("D3").End(xlDown).Row DLig2 = Sheets(2).Range("B3").End(xlDown).Row x = 3 'boucle sur les lignes de Feuil2 For t = 3 To DLig2 ' si ref n'existe pas en feuil 1 on recopie les colonnes en feuil3 + message If Application.WorksheetFunction.CountIf(Sheets(1).Range("D:D"), Sheets(2).Range("B" & t)) = 0 Then x = x + 1 For k = 1 To 18 Sheets(3).Cells(x, k) = Sheets(2).Cells(t, k) Next Sheets(3).Range("S" & x) = "Erreur référence" End If Next t ' boucle sur lignes en Feuil 1 et sur lignes en feuil2 For n = 2 To DLig For t = 3 To DLig2 ' si les ref correspondent If Sheets(1).Range("D" & n) = Sheets(2).Range("B" & t) Then ' alors on verifie que les prix correspondent st si pas correspondance on relève les colonnes + message et calcul de différence If Sheets(1).Range("J" & n) <> Sheets(2).Range("K" & t) Then 'MsgBox (Sheets(1).Range("J" & n) & "/" & Sheets(2).Range("K" & t)) x = x + 1 For k = 1 To 18 Sheets(3).Cells(x, k) = Sheets(2).Cells(t, k) Next Sheets(3).Range("S" & x) = "Ecart de prix " Sheets(3).Range("t" & x) = Sheets(2).Range("K" & t) - Sheets(1).Range("J" & n) End If End If Next t Next n
Cdlmnt
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
13 févr. 2015 à 18:38
13 févr. 2015 à 18:38
Re,
Je n'ai pas pu tester pour l'instant, je le fais demain ou dimanche. Mais vous avez raison, mon exemple de la feuille 3 était à titre purement indicatif. Les colonnes ne sont peut-être pas respectées.
Vous avez raison, le tableau 1 peut également contenir des lignes que le tableau 2 ne contient pas, même si cela est plus rare (le client chercherait-il à m'avoir? :p). Et ce problème soulevé me pose un autre problème. C'est qu'il va falloir que je sache si la ligne se trouve dans le tableau 1 et pas dans le 2 ou l'inverse. Hum....
En tout cas merci pour cette aide merveilleuse et le travail fourni. Sincèrement merci.
Je teste tout ça demain et je vous dis :)
Merci encore.
Cordialement.
Je n'ai pas pu tester pour l'instant, je le fais demain ou dimanche. Mais vous avez raison, mon exemple de la feuille 3 était à titre purement indicatif. Les colonnes ne sont peut-être pas respectées.
Vous avez raison, le tableau 1 peut également contenir des lignes que le tableau 2 ne contient pas, même si cela est plus rare (le client chercherait-il à m'avoir? :p). Et ce problème soulevé me pose un autre problème. C'est qu'il va falloir que je sache si la ligne se trouve dans le tableau 1 et pas dans le 2 ou l'inverse. Hum....
En tout cas merci pour cette aide merveilleuse et le travail fourni. Sincèrement merci.
Je teste tout ça demain et je vous dis :)
Merci encore.
Cordialement.
via55
Messages postés
14402
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 avril 2024
2 702
Modifié par via55 le 13/02/2015 à 19:36
Modifié par via55 le 13/02/2015 à 19:36
Re,
En ce cas tu peux modifier le code ainsi pour tester aussi dans l'autre sens
mais je ne peux pas faire afficher la ligne du fichier 1 car pas les mêmes colonnes
De plus j'ai oublié tout à l'heure, dans ton fichier 2 les références sont au format texte alors qu'elles sont en format numérique dans le 1, mets les deux au même format avant de lancer la macro !
Cdlmnt
En ce cas tu peux modifier le code ainsi pour tester aussi dans l'autre sens
mais je ne peux pas faire afficher la ligne du fichier 1 car pas les mêmes colonnes
De plus j'ai oublié tout à l'heure, dans ton fichier 2 les références sont au format texte alors qu'elles sont en format numérique dans le 1, mets les deux au même format avant de lancer la macro !
Sub recap() Dim DLig As Long Dim DLig2 As Long DLig = Sheets(1).Range("D3").End(xlDown).Row DLig2 = Sheets(2).Range("B3").End(xlDown).Row x = 3 'boucle sur les lignes de Feuil2 For t = 3 To DLig2 ' si ref n'existe pas en feuil 1 on recopie les colonnes en feuil3 + message If Application.WorksheetFunction.CountIf(Sheets(1).Range("D:D"), Sheets(2).Range("B" & t)) = 0 Then x = x + 1 For k = 1 To 18 Sheets(3).Cells(x, k) = Sheets(2).Cells(t, k) Next Sheets(3).Range("S" & x) = "Erreur référence Inexistant en 1" End If Next t 'boucle sur les lignes de Feuil1 For t = 2To DLig ' si ref n'existe pas en feuil 2 message (on ne recopie pas lignes car pas même emplacements mais juste la ref) If Application.WorksheetFunction.CountIf(Sheets(2).Range("B:B"), Sheets(1).Range("D" & t)) = 0 Then x = x + 1 Sheets(3).Range("B" & x)=Sheets(1).Range("D" & t) Sheets(3).Range("S" & x) = "Erreur référence Inexistant en 2" End If Next t ' boucle sur lignes en Feuil 1 et sur lignes en feuil2 For n = 2 To DLig For t = 3 To DLig2 ' si les ref correspondent If Sheets(1).Range("D" & n) = Sheets(2).Range("B" & t) Then ' alors on verifie que les prix correspondent st si pas correspondance on relève les colonnes + message et calcul de différence If Sheets(1).Range("J" & n) <> Sheets(2).Range("K" & t) Then 'MsgBox (Sheets(1).Range("J" & n) & "/" & Sheets(2).Range("K" & t)) x = x + 1 For k = 1 To 18 Sheets(3).Cells(x, k) = Sheets(2).Cells(t, k) Next Sheets(3).Range("S" & x) = "Ecart de prix " Sheets(3).Range("t" & x) = Sheets(2).Range("K" & t) - Sheets(1).Range("J" & n) End If End If Next t Next n End sub
Cdlmnt
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
Modifié par Kuartz le 16/02/2015 à 08:57
Modifié par Kuartz le 16/02/2015 à 08:57
Re,
Merci infiniment via55.
Il ne reste qu'un problème apparemment et je ne trouve pas pourquoi cela ne marche pas dans le code. Pour les références, il semble que la macro marche à merveille. Pour les prix en revanche, cela ne marche pas. J'ai essayé de changer un prix sur 2 références existantes dans les 2 tableaux. Lorsque je fais tourner la macro, rien ne s'affiche sur la feuille 3 concernant les prix. D'ailleurs la référence dont j'ai modifié le prix n'apparaît même pas avec un Ctrl+F..
Je rajoute que si on pouvait également mettre le prix en plus de seulement la ref pour les écarts sur le tableau 1 ce serait parfait :) Mais je vais essayer de me débrouiller pour ça.
Merci encore.
Cordialement,
Merci infiniment via55.
Il ne reste qu'un problème apparemment et je ne trouve pas pourquoi cela ne marche pas dans le code. Pour les références, il semble que la macro marche à merveille. Pour les prix en revanche, cela ne marche pas. J'ai essayé de changer un prix sur 2 références existantes dans les 2 tableaux. Lorsque je fais tourner la macro, rien ne s'affiche sur la feuille 3 concernant les prix. D'ailleurs la référence dont j'ai modifié le prix n'apparaît même pas avec un Ctrl+F..
Je rajoute que si on pouvait également mettre le prix en plus de seulement la ref pour les écarts sur le tableau 1 ce serait parfait :) Mais je vais essayer de me débrouiller pour ça.
Merci encore.
Cordialement,
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
Modifié par Kuartz le 16/02/2015 à 09:40
Modifié par Kuartz le 16/02/2015 à 09:40
OK, j'ai pu me débrouiller pour recopier les cases du tableau 1 dont j'avais besoin :)
Reste le problème des prix que je n'arrive décidément pas à résoudre...
Reste le problème des prix que je n'arrive décidément pas à résoudre...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
16 févr. 2015 à 11:42
16 févr. 2015 à 11:42
D'ailleurs petite question, est-ce normal que ton code MsgBox apparaisse en commentaire et ne soit pas intégré au code?
Merci.
Cordialement,
Merci.
Cordialement,
via55
Messages postés
14402
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 avril 2024
2 702
16 févr. 2015 à 12:05
16 févr. 2015 à 12:05
Bonjour Kuartz
En ce qui concerne le code msgbox c'est un oubli je l'avais mis dans la macro avant de la faire tourner pour voir quelles lignes elle trouvait et je l'ai shunté après en le mettant en commentaire puis j'ai oublié de l'effacer
Pour les prix cela m'étonne, sur l'exemple que tu m'avais renvoyé il m'avait bien renvoyé un écart de prix mais je ne sais plus sur quelle ligne, par contre vérifie bien que selon les tableaux les prix soient bien au même format (comme pour les références) et qu'il n'y en ait pas avec des espaces devant ou ou derrière non visibles à l'affichage mais créant une différence (c'est parfois le cas lorsque les listes proviennent d'importation)
Cdlmnt
En ce qui concerne le code msgbox c'est un oubli je l'avais mis dans la macro avant de la faire tourner pour voir quelles lignes elle trouvait et je l'ai shunté après en le mettant en commentaire puis j'ai oublié de l'effacer
Pour les prix cela m'étonne, sur l'exemple que tu m'avais renvoyé il m'avait bien renvoyé un écart de prix mais je ne sais plus sur quelle ligne, par contre vérifie bien que selon les tableaux les prix soient bien au même format (comme pour les références) et qu'il n'y en ait pas avec des espaces devant ou ou derrière non visibles à l'affichage mais créant une différence (c'est parfois le cas lorsque les listes proviennent d'importation)
Cdlmnt
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
Modifié par Kuartz le 16/02/2015 à 17:45
Modifié par Kuartz le 16/02/2015 à 17:45
Je confirme, les prix ne s'affichent pas lorsqu'ils ne correspondent pas. J'ai volontairement changé le prix d'une des deux références se trouvant sur les 2 tableaux en prenant bien le soin de mettre les 2 éléments au format "Nombre" et en vérifiant les espaces, je lance la macro et aucun élément correspondant à une différence de prix ne s'affiche en page 3...
Je vous laisse voir mon fichier avec la macro un peu plus à ma sauce et suivant mes besoins. Je vous invite à modifier un prix dont la référence est présente dans les 2 tableaux et à lancer la macro. Vous pourrez constater que je n'ai aucune ligne concernant le prix qui apparaît en page 3.
https://www.cjoint.com/?0Bqr3rR8VMR
Cordialement,
Je vous laisse voir mon fichier avec la macro un peu plus à ma sauce et suivant mes besoins. Je vous invite à modifier un prix dont la référence est présente dans les 2 tableaux et à lancer la macro. Vous pourrez constater que je n'ai aucune ligne concernant le prix qui apparaît en page 3.
https://www.cjoint.com/?0Bqr3rR8VMR
Cordialement,
via55
Messages postés
14402
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 avril 2024
2 702
16 févr. 2015 à 19:07
16 févr. 2015 à 19:07
Re
Ce sont toujours les ref de la colonne B Feuille2 qui posent problème, certaines sont des nombres sous forme de texte
Selectionner toutes les valeurs avec un petit triangle rouge dans le coin supérieur gauche, cliquer sur l'icone ! qui s'affiche et Convertir en nombre
Ceci fait la macro affiche des écarts de prix pour les ref 81041880 et 2754386
Cdlmnt
Ce sont toujours les ref de la colonne B Feuille2 qui posent problème, certaines sont des nombres sous forme de texte
Selectionner toutes les valeurs avec un petit triangle rouge dans le coin supérieur gauche, cliquer sur l'icone ! qui s'affiche et Convertir en nombre
Ceci fait la macro affiche des écarts de prix pour les ref 81041880 et 2754386
Cdlmnt
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
17 févr. 2015 à 08:42
17 févr. 2015 à 08:42
Tu as raison, en changeant le format des refs de la feuille 2, la macro marche enfin pour les prix. Seul petit bémol, mais d'où sort l'écart de 5.68E-14 sur la ref 2754386?! Si je vérifie sur les feuilles, il n'y a pas d'écart.... Enfin bon ce n'est pas très grave, j'aurais juste aimé comprendre. Je te remercie infiniment pour ton aide qui va me faire gagner beaucoup de temps à l'avenir. Je met le sujet en "résolu". Si tu as une réponse à m'apporter pour le 5.68E-14 tant mieux sinon tant pis.
Cordialement,
Cordialement,
via55
Messages postés
14402
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 avril 2024
2 702
>
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
17 févr. 2015 à 19:47
17 févr. 2015 à 19:47
Bonsoir
Il n'y a pas d'écart apparent sur l'affichage mais les nombres ne doivent pas être exactement identiques puisqu'il y a une différence de 5 x 10 exposant -14 soit 0, puis 13 zéros et 5 après la virgule !
Les nombres provenant d'extraction de fichiers différents et pouvant être le résultat de calculs peuvent avoir une différence selon la précision de départ en nombre de chiffres après la virgule
Cdlmnt
Il n'y a pas d'écart apparent sur l'affichage mais les nombres ne doivent pas être exactement identiques puisqu'il y a une différence de 5 x 10 exposant -14 soit 0, puis 13 zéros et 5 après la virgule !
Les nombres provenant d'extraction de fichiers différents et pouvant être le résultat de calculs peuvent avoir une différence selon la précision de départ en nombre de chiffres après la virgule
Cdlmnt