[Résolu] Comparer deux tableaux de deux fichiers différents

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
ianou
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 16 avr. 2019 13:33

[Résolu] Comparer deux tableaux de deux fichiers différents

Message par ianou »

Bonjour à tous ceux qui m'aideront et bien entendu également à tous ceux qui me liront,
Je poste mon message dans "Débutant sur le forum" déjà parce que c'est mon premier message ici, et ensuite puisque je ne sais pas s'il doit aller dans le sous forum "Calc" ou dans "Macro", je laisse donc aux bons soins des modérateurs de le transférer où bon leur semble en les remerciant à l'avance.

Passons dans le vif du sujet, avant tout je suis sous Windows 10 Entreprise et Libre office Version: 5.4.7.2.M6 (x64) version obligatoire

Maintenant le problème initial, je voudrais comparer deux tableaux de deux fichiers différents pour m'assurer que les valeurs rentrées à l'intérieur sont bien les mêmes. Sur le papier ça semble simple mais il y a quelques subtilités qu'il me faudrait qui seront indispensable, je m'explique :

1. La comparaison doit se faire entre deux fichiers qui ne sont pas tout à fait les mêmes. Pour mieux expliquer je vais vous insérer un document Libre Office Writer.
exemple.odt
Le Fichier 2 est généré automatiquement et n'est pas modifiable. Le Fichier 1 lui est remplie à la main tout au long du mois. L'idée est de comparer les lignes de chaque tableau en les rapprochant par les "Données A": Les "Données A" des deux tableaux sont des valeurs sures qui ne pourront pas avoir d'erreur donc elles seront pris comme point de repaire pour comparer une ligne. Premier problème les "Données A" ne sont pas situées aux mêmes endroits sur les lignes de chaque Fichiers.

Une fois ces points de repaires reconnus, il faudrait comparer les lignes complètes, mis à part les "Données A", toutes les autres données des lignes du Fichier 1 ou du Fichier 2 se suivent de la même façon. Deuxième problèmes certaines lignes apparaissent dans le Fichier 1 en plein milieu du tableau et n'ont rien à voir avec le Fichier 2.

2. Une fois les lignes comparées, j'aimerais que si quelques erreurs ont été commises entre le Fichier 1 et le Fichier 2, que les cases d'erreurs se colorent en rouge sur le Fichier 1.

Bon voilà, pour moi et vu que je sais exactement ce que je veux ça me parait clair mais pour une personne extérieure, je sais pas si c'est très limpide. J'invite donc toute personne qui nécessiterait d'autres informations ou explications à me les poser directement, et je remercie à l'avance toutes les personnes disposées à m'aider. Cela fait déjà quelques temps que je planche sur ce problème, principalement en cherchant sur le net sans trouver de solution.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par ianou le 26 avr. 2019 09:56, modifié 3 fois.
Libre Office 7.2.7.2.M8(x64) sous Windows 10 entreprise par obligation
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 3953
Inscription : 06 oct. 2008 08:03

Re: [Calc] Comparer deux tableaux de deux fichiers différent

Message par Oukcha »

Bonjour et bienvenue,

Sujet transféré en section Tableur dans un premier temps, si seule une solution par macro est possible, nous vous prierons alors d’ouvrir un sujet en section Macros et API.
ianou a écrit :2. Une fois les lignes comparées
Nous vous rappelons que la règle n° 7 stipule qu'il ne faut mettre qu'une question par fil : les règles de ce forum

Poser plusieurs questions complique la compréhension et n'encourage pas les réponses : il vaut donc mieux découper votre problème. Le titre de votre question ne peut pas refléter l'ensemble des problèmes exposés.

Afin que nous puissions avoir une base de connaissance efficace lors d'une recherche sur un seul de vos problèmes, nous vous prions de créer autant de fil que de questions.

Merci de votre collaboration.
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
ianou
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 16 avr. 2019 13:33

Re: Comparer deux tableaux de deux fichiers différents

Message par ianou »

Je comprends bien cette règles numéro 7, néanmoins j'ai surtout voulu bien séparer les deux fragments de ma questions pour être le plus clair possible mais il s'agit de deux parties d'une même question, il va être dur et surtout inutile de faire une comparaison entre deux éléments si le résultats n'apparait nulle part à mon sens. Mais comme dit précédemment je ne suis pas un expert du tout dans ce domaine, et je me trompe peut être :/
Libre Office 7.2.7.2.M8(x64) sous Windows 10 entreprise par obligation
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: Comparer deux tableaux de deux fichiers différents

Message par Jean-Louis Cadeillan »

Bonsoir,
Une comparaison suppose de bien connaître la forme des données. Dans ton exemple, tu mets Donnée A1... je doute que la donnée en question ait cette forme-là. Dans le fichier joint, j'ai fait abstraction de cette ambiguïté et basé mon approche sur la forme que tu donnes dans ton exemple. Pour simplifier, j'ai mis ton Fichier 1 comme Feuille 1 et ton Fichier 2 comme Feuille 2. La feuille Fichier 1B reprend les lignes de Fichier 1 qui contiennent A1 et seulement elles. La feuille Comparaison affiche VRAI si la ligne contient les trois mêmes valeurs (dans l'ordre donné par ton exemple).
Si ton jeu de données-exemple est très éloigné de ton vrai jeu de données, la solution proposée ici pourra tout au plus te mettre sur la voie...
On ne connaît pas vraiment le détail de la comparaison (l'ordre des B/C/A et A/B/C est-il toujours le même ? Les chiffres dans A1, A2, A3... sont-ils toujours croissants ?...) et je n'ai pas compris non plus ce que tu cherches à obtenir, la seule phrase qui comportait une indication ayant été rayée...
Ce serait bien de nous fournir, en plus des deux fichiers, le résultat souhaité (en plus des réponses aux questions ci-dessus).
Avec ces repères, nous pourront peut-être sortir du repaire...
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
ianou
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 16 avr. 2019 13:33

Re: Comparer deux tableaux de deux fichiers différents

Message par ianou »

Bonjour Jean-Louis, tout d'abord merci pour ton aide et effectivement je me rend compte qu'il manque quelques informations de par ton message, comme j'ai dit c'est difficile de penser à donner toutes les infos étant donné que je connais bien mes fichiers, du coup ça fais un peu effet tunnel.

Pour te répondre, alors il s'agit de deux fichiers différents avec différentes feuilles et non pas différentes feuilles d'un même fichier. Ce qui rajoute en difficulté.
Les données que j'ai représenté par Donnée A, B, C etc peuvent être différentes valeurs ou du texte. La donnée A qui est le point de repaire entre les deux fichiers est un texte sous la forme X/Y/2019 (ce n'est pas une date) ou X et Y peuvent aller de 1 à 999.

En vrai il y a beaucoup plus que 3 colonnes de données j'ai simplifié pour l'exemple mais la donnée A qui reste le point de repaire se trouve au début du tableau dans le Fichier 2 et à la fin du tableau dans le Fichier 1 sinon toutes les autres données B, C, D etc... sont dans le même ordre à la suite les unes des autres. Il n'y a aucune correspondance entre ces données mis à part qu'elle appartiennent à la même affaire.

Malheureusement je n'ai pas l'autorisation de transmettre mes deux fichiers et donc je ne peux vous donner que des exemples.
Mais en gros, chaque ligne s'agit d'une intervention avec un numéro d'intervention : la donnée A, et après chaque colonne représente une information sur le lieu de l'intervention ou le nombre de chose d'un type effectuée lors de l'intervention donc comme dit plus haut il peut y avoir du texte ou des nombres qui n'ont rien à voir entre eux.

comme dit il me semble dans un message précédent le fichier 2 se rempli tout seul par un logiciel, mais le fichier 1 est rempli à la main puisqu'il comprend des interventions non mentionné dans le fichier 2.

Ce que je cherche à obtenir par le biais de formules ou de macros, je ne sais pas, c'est que sur le fichier 1 les cases, ou une erreur s'est glissé par rapport au fichier 2, deviennent rouge. Pour bien repérer qu'il y a eu une erreur et qu'il faut vérifier.

J'espère être un peu plus clair.

En tout cas ta réponse me donne déjà un début de piste de comment je peux faire cela.
Et je t'en remercie!

Cordialement,
ianou.
Libre Office 7.2.7.2.M8(x64) sous Windows 10 entreprise par obligation
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: Comparer deux tableaux de deux fichiers différents

Message par Jean-Louis Cadeillan »

Bonjour,
ianou a écrit :il s'agit de deux fichiers différents avec différentes feuilles et non pas différentes feuilles d'un même fichier. Ce qui rajoute en difficulté
Là n'est pas la difficulté ; il suffit par exemple, de créer une feuille nommée « Fichier1 » dans le fichier 2 et en A1 de cette feuille saisir =, puis, le fichier 1 étant ouvert, de cliquer sur la cellule A1 de la feuille à comparer de ce fichier 1, puis Entrée : on crée ainsi un lien entre les deux fichier pour la cellule A1, qu'il suffit de cliquer glisser vers la droite et le bas pour rapatrier les autres valeurs du fichier 1 vers le fichier 2. Ce lien se mettra à jour à chaque ouverture ou par Édition > Lien vers des fichiers externes.
Tu cherches à discriminer les lignes contenant les données A des lignes contenant les données Y
ianou a écrit :La donnée A qui est le point de repère entre les deux fichiers est un texte sous la forme X/Y/2019 (ce n'est pas une date) ou X et Y peuvent aller de 1 à 999.
C'est une information utile... mais comme tu ne nous dis rien sur les informations Y, comment faire, quelle est leur forme ? Par exemple, si une donnée Y se termine aussi par 2019 et que mon test de discrimination est basé sur la présence à la fin de la donnée de 2019, je vais créer un faux positif !
ianou a écrit :une erreur s'est glissée par rapport au fichier 2
Une fois que les bonnes lignes seront connues (voir point précédent), je crois comprendre qu'il faut vérifier qu'il n'y a pas de différence entre la ligne du fichier 1 qui contient par exemple 887/331/2019 et celle du fichier 2 qui contient la même valeur.
ianou a écrit :toutes les autres données B, C, D etc... sont dans le même ordre à la suite les unes des autres
Cette information doit permettre de faire un test de comparaison du style

Code : Tout sélectionner

=ET(Fichier1.A1=Fichier2.B1;Fichier1.B1=Fichier2.C1;etc.)
ianou a écrit :Ce que je cherche à obtenir par le biais de formules ou de macros, je ne sais pas, c'est que sur le fichier 1, les cases où une erreur s'est glissée par rapport au fichier 2, deviennent rouges
Une fois le test de comparaison mis en place, il suffit de l'exploiter par une mise en forme conditionnelle (Format > Conditionnel > Condition).
Voilà quelques pistes et questionnements ...
Cordialement,
Jean-Louis
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
ianou
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 16 avr. 2019 13:33

Re: Comparer deux tableaux de deux fichiers différents

Message par ianou »

ça me fascine toujours les gens comme toi qui ont autant de connaissance dans le domaine de Libre Office Calc et qui explique avec autant de facilité un problème qui me semblait quasi impossible à résoudre et qui au final se décante petit à petit. Je tiens à te préciser que j'apprécie beaucoup ton aide!

Cela étant dit je reviens un peu sur tes questions, alors les Données X, Y et Z que j'avais placé sont juste la pour montrer qu'elles ne sont pas toutes les deux dans le tableau, mis à part ça, chaque colonne contient des données similaires sous la même forme. En gros comme je te l'ai mentionné avant, pour les données A ou les données Y il s'agit de la forme x/y/2019 où x correspond au numéro d'intervention de 1 à 999 et y au nombre de missions de 1 à 99. Donc j'imagine qu'il faudra isoler avant tout les données A parmi les données A et Y pour lancer la comparaison.
ianou a écrit:
une erreur s'est glissée par rapport au fichier 2
Une fois que les bonnes lignes seront connues (voir point précédent), je crois comprendre qu'il faut vérifier qu'il n'y a pas de différence entre la ligne du fichier 1 qui contient par exemple 887/331/2019 et celle du fichier 2 qui contient la même valeur.
C'est exactement ça tu as bien compris ce que je cherche à faire! =)

En gros là ce qui me manque surtout c'est comment isoler les lignes qui sont à la fois dans le Fichier 1 et dans le Fichier 2 et les comparer entre elle. Bonne nouvelle je viens de m'apercevoir d'un détail que je n'avais pas remarqué avant, seule la donnée A n'est pas au même endroit dans les deux tableaux. Sinon les données B, C, D etc sont toutes placées au même endroit sur les deux fichiers étant donné que sur le fichier 1 il y a une colonne pas importante dans la colonne A.

Voilà j'espère t'avoir éclairé au mieux!
Libre Office 7.2.7.2.M8(x64) sous Windows 10 entreprise par obligation
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: Comparer deux tableaux de deux fichiers différents

Message par Jean-Louis Cadeillan »

Bonsoir,
Ci-joint un fichier (comme dit précédemment la feuille Fichier1 simule le fichier 1 et la feuille Fichier2 le fichier 2). Donc sur la feuille Fichier1 apparaissent en fond vert les données qui correspondent avec le fichier 2, en fond rouge les données qui devraient correspondre mais avec une erreur et en blanc les données qui ne correspondent pas parce que la donnée de type x/y/2019 n'est pas présente dans le fichier 2.
J'ai laissé quelques étapes intermédiaires en colonnes F à N, formules qui m'ont servi à élaborer les formules de la mise en forme conditionnelle (MFC que tu pourras analyser par Format > Conditionnel > Gérer) : tu peux supprimer ces colonnes sans crainte pour le fonctionnement de la MFC, je ne les ai laissées qu'à titre explicatif (point rouge = commentaire en tête de colonne). Idem pour la feuille Génération, que tu peux supprimer, elle se contente de garder trace de la génération des données... et des erreurs dans les données.
Il te reste à vérifier que cela correspond à ce que tu souhaites et à l'adapter à ta situation réelle, c'est-à-dire créer une feuille dans ton fichier 1 qui rapatrie les données du fichier 2 et mettre en place la MFC : deux formules pour les colonnes B à D de Fichier1 :

Code : Tout sélectionner

ET(NON(ESTNA(EQUIV($E1;Fichier2.$A$1:$A$48;0)));B1=INDEX(Fichier2.$B$1:$D$48;EQUIV($E1;Fichier2.$A$1:$A$48;0);COLONNE(A1)))
associée au style « Ok »

Code : Tout sélectionner

ET(NON(ESTNA(EQUIV($E1;Fichier2.$A$1:$A$48;0)));B1<>INDEX(Fichier2.$B$1:$D$48;EQUIV($E1;Fichier2.$A$1:$A$48;0);COLONNE(A1)))
associée au style « Error » ;
et une formule plus simple :

Code : Tout sélectionner

NON(ESTNA(EQUIV($E1;Fichier2.$A$1:$A$48;0)))
associée au style « Ok » pour la colonne E. Je n'ai pas traité la colonne A de fichier 1 puisqu'elle n'est pas importante.
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
ianou
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 16 avr. 2019 13:33

Re: Comparer deux tableaux de deux fichiers différents

Message par ianou »

Bon j'ai eu quelques soucis pour associer les formules à mes tableurs, avec quelques REF qui tombaient toutes seules je ne sais pas trop pourquoi, par exemple sur une référence AT4(équivalant à E1 dans ta formule) à chaque fois ça me passait la formule en AT#REF!, je n'ai pas trop compris pourquoi. Mais en reprenant toutes les formules et les corrigeant avant de les étirer sur la plage tout à fini par fonctionner.

Du coup un grand merci à toi Jean-Louis Cadeillan, tu as su rendre possible ce que je cherchais à faire et même mieux tu me l'a apporter exactement comme je le voulais.

Tout fonctionne parfaitement et ça va faire gagner à mon service un temps précieux que l'on va pouvoir investir dans des projets plus importants que de la comparaisons de données case par case sur 500 lignes et 46 colonnes.

Vraiment MERCI!

PS: Je suppose qu'il faut maintenant que je modifie mon premier post en résolue c'est bien ça?
Libre Office 7.2.7.2.M8(x64) sous Windows 10 entreprise par obligation
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: Comparer deux tableaux de deux fichiers différents

Message par Jean-Louis Cadeillan »

LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1