IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Formule pour comparer 2 lignes [Toutes versions]


Sujet :

Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut Formule pour comparer 2 lignes
    Bonjour à tous,

    Si possible sans VBA, je souhaiterais écrire une formule qui permettrait de comparer 2 lignes dans 2 feuilles différentes (disons "SOURCE" et "EXTRAIT").
    Ces 2 feuilles sont construites de manière identique, mais des modifications seront apportées à la feuille "SOURCE", et je souhaiterais les mettre en évidence dans une colonne supplémentaire de la feuille "EXTRAIT", par une formule qui m'indique que la données a été modifiée à la "SOURCE".
    Le lien (entre source et destination) se fait par un champ ID.

    Voici un exemple pour être plus parlant :

    SOURCE :
    ID
    NOM PRENOM ADRESSE VILLE
    ... ... ... ... ...
    1521 MARTIN Robert Rue Perdue TRUCMUCHE
    1522 BIDOCHON Robert Rue Bidon PAUME-EN-FRANCE
    1523 BIDOCHON Germaine Rue Machin TRUCVILLE
    ... ... ... ... ...

    EXTRAIT :
    ID
    NOM PRENOM ADRESSE VILLE DIFFERENCE
    1522 BIDOCHON Robert Rue Bidon PAUME-EN-FRANCE
    1523 BIDOCHON Germaine Rue Bidon PAUME-EN-FRANCE X
    ... ... ... ... ...

    Je fais régulièrement des comparaisons sur une seule colonne, avec la formule (magique !) INDEX + EQUIV, mais ça ne marche que pour comparer 1 info. Pour comparer une plage entière, je ne vois que la solution de rajouter une colonne concaténant l'ensemble des autres, et me baser sur cette colonne pour identifier les changements... Mais ça ne me semble pas satisfaisant

    Auriez-vous d'autres pistes ?
    (si ça semble impossible sans VBA, j'accepte aussi une solution VBA ! )

    Merci à vous !

    Sylvain M.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,


    et bien tu compare les 4 infos puis tu fait un OU..

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    tu compare les 4 infos
    Merci à toi, mais je n'ai mis que 4 colonnes pour simplifier la base. En réalité, il y a plusieurs dizaines de colonnes pour chaque ligne.
    Et surtout, comment faire référence à la bonne ligne dans la table source, sachant que dans la table extrait, elles n'ont pas la même position, et qu'il n'y a pas le même nombre de contacts (juste un extrait).
    Merci encore !

    (je mets à jour les tableaux pour que ce soit plus clair)

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par SylvainM Voir le message
    ...Et surtout, comment faire référence à la bonne ligne dans la table source, ...
    j'avais compris que tu connaissais EQUIV ...et INDEX ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par bbil
    j'avais compris que tu connaissais EQUIV ...et INDEX ?
    Pas suffisamment on dirait !
    Je ne vois pas comment les "enchainer" pour le faire sur plusieurs colonnes successives, dans une même cellule...

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Ben tu peu tout mettre tout dans une cellule ... mais bon ... tes formules seront plus lisibles si tu décompose en plusieurs colonnes ... sur ta feuille extraction une colonne EQUIV ou tu extrait le numéro de ligne de ton index dans l'autre feuille, puis une colonne par colonne comparées avec formule à base d'INDEX + comparaison avec signe égal..

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Je dois avouer que je n'arrive pas à saisir la procédure que tu me propose.
    Voici le tableau Excel simplifié.
    Serait-il possible d'y ajouter les formules que tu proposes ?

    Merci à toi !

    Sylvain M.
    Pièces jointes en attente de validation Pièces jointes en attente de validation

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par SylvainM Voir le message
    Je dois avouer que je n'arrive pas à saisir la procédure que tu me propose.
    Voici le tableau Excel simplifié.
    Serait-il possible d'y ajouter les formules que tu proposes ?

    Merci à toi !

    Sylvain M.
    non c'est pas possible ...



    Commence par créer dans ta feuille extraction une colonne dans laquelle tu place une formule Equiv qui affiche le numéro de ligne de la feuille source pour l'ID concerné..

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par bbil
    Commence par créer dans ta feuille extraction une colonne dans laquelle tu place une formule Equiv qui affiche le numéro de ligne de la feuille source pour l'ID concerné..
    Voila qui est fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EQUIV($A2;SOURCE!$A:$A;0)
    Puis la formule de comparaison pour chaque colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($B2=INDEX(SOURCE!$A$1:$Z$10000;EXTRAIT!$G2;EQUIV(EXTRAIT!B$1;SOURCE!$1:$1;0));"";"x")
    Il faut ensuite ajouter n colonnes de contrôle, pour comparer les n colonnes sources.
    Je comprends ce principe, mais j'aurai aimé ne pas ajouter toutes ces colonnes au tableau "Extrait" (plus dur à maintenir quand on ajoutera/supprimera des colonnes à l'avenir).
    Et les SI() imbriqués dans une seule colonne vont très vite atteindre le nombre maximal de caractères pour une formule Excel...
    Bref, je conclue que si je veux comparer 2 lignes sans trop toucher la structure du tableau, le VBA sera plus approprié.
    Je me méprend ?
    Merci quand même !

    Sylvain M.

  10. #10
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Avec les références de cellules correspondant à l'image ci-dessous, écrire dans la cellule F2 la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(DECALER(Source!$A$1;EQUIV(A2;Source!A:A;0)-1;1)=B2)*(DECALER(Source!$A$1;EQUIV(A2;Source!A:A;0)-1;2)=C2)*(DECALER(Source!$A$1;EQUIV(A2;Source!A:A;0)-1;3)=D2)*(DECALER(Source!$A$1;EQUIV(A2;Source!A:A;0)-1;4)=E2)
    Cette formule renvoie 0 s'il y des différences entre les lignes des deux tableaux pour une même référence et 1 si les lignes correspondantes sont identiques.
    A recopier vers le bas dans la colonne Comparaison.
    Les résultats 1 , 0 n'apparaissent pas car la couleur des caractères dans la colonne F est le blanc. Par contre , une règle de MFC utilisant un jeu d'icones permet de visualiser
    le résultat de chaque comparaison.
    Nom : Comparaison.JPG
Affichages : 8437
Taille : 60,5 Ko
    Cordialement
    Claude

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Sympa cette formule couplée à une MFC !
    Mais comme je le disais, j'ai en réalité plusieurs dizaines de colonnes, donc je risque d'atteindre la limite du nombre de caractères dans une formule, non ?
    (suis pas au bureau là, et pas Excel pour tester)

    Sylvain M.

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    on en reviens à :
    Citation Envoyé par bbil Voir le message
    ... tes formules seront plus lisibles si tu décompose en plusieurs colonnes ... .

  13. #13
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Remplacer la formule proposée en F2 par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(1*(DECALER(Source!$A$1:$E$1;EQUIV(A2;Source!A:A;0)-1;)=Extrait!$A2:$E2))-COLONNES($B:$E)
    Cordialement
    Claude

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Super papouclo !
    Bon, va falloir que je me concentre pour comprendre le fonctionnement de cette formule (j'ai essayé tout à l'heure, mais pas encore réussi ), mais elle est d'ors-et-déjà opérationnelle sur les données réelles, et ne m'ajoute qu'une seule colonne au tableau !
    En effet, la décomposition en plusieurs colonnes des INDEX+EQUIV modifiait trop la structure du tableau, structure qui est encore évolutive. J'avais trouvé une parade en ajoutant une feuille, et en y mettant mes formules de comparaisons, mais c'est beaucoup plus simple à maintenir avec cette seule colonne/formule !
    Un immense merci !

    Sylvain M.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comparer des lignes sur le même fichier
    Bonjour Sylvain - Claude,

    Je déterre cette conversation en espérant que vous êtes toujours actifs ! Merci pour votre partage ca m'a servi !

    J'ai néanmoins un besoin supplémentaire dans mon cas : J'aimerai comparer chaque ligne avec les toutes les autres (si possible sinon une par une) => si les lignes comparées ont la même Machine / Constructeur / Modèle je met un 0. Si le modèle ou le Constructeur est différent je met un 1.
    L'objectif est d'avoir des lignes de machine unique, celles qui sont identiques (doublons) je les affiche pas.

    J'aimerai donc utiliser la formule donnée par Claude mais sur une même table en comparant les lignes entre elles. Je ne sais pas si c'est possible sans passer par VBA non plus, si vous avez une solution en VBA je suis preneur aussi !
    Je peux vous envoyer mon fichier si c'est nécessaire.

    Merci d'avance !
    Cordialement,

    Identifiant Machines Constructeur Modèle Cout
    1 Machin BO ZEAZEA 50
    2 Machin HIL SGSG 50
    3 Machin HIL SGSG 50
    4 Truc RO RV 35
    5 Truc RO RV 35
    6 Truc RO WS 35

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Formule pour recopier une ligne en fonction d'un critère
    Par odsen.s dans le forum Excel
    Réponses: 2
    Dernier message: 01/07/2010, 15h38
  2. Réponses: 0
    Dernier message: 03/06/2010, 19h13
  3. Un outil pour comparer la visibilité des publicités en ligne
    Par Bovino dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 03/06/2010, 19h13
  4. comparer 2 nombre pour insérer des lignes
    Par moimemessssssssss dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/04/2008, 22h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo