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 :

Comparaison de données entre plusieurs feuilles d'un classeur [XL-2007]


Sujet :

Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 84
    Par défaut Comparaison de données entre plusieurs feuilles d'un classeur
    Bonjour,

    J'ai un classeur Excel comportant trois feuilles :
    "Administration" ;
    "Web" ;
    "Résultats".

    Chaque feuille se compose de la même manière : plusieurs colonnes (Nom, Prénom, n°, Date_Naissance et chaque ligne représente une personne différente. Les feuilles : "Administration" comporte 4000 personnes, la feuille "web" comporte 1000 personnes et la feuille Résultats ne comporte aucune personne.

    Quelqu'un pourrait il me donner un système (macro, ...) me permettant de comparer les enregistrements pressent sur les feuilles "administration" et "web" et complétant la feuille "résultat" avec les personnes qui ne sont présents que sur la feuille "administration" et complétant les colonnes de la feuille "résultats" avec les infos correspondant.

    SVP Merci

    Raphaël

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Raphaël,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Macro1()
    Dim plgA As Range, plgB As Range, c As Range
    Dim i As Integer, x As Integer, col As Integer
     
    Set plgA = Sheets("Administration").Range("A1:A" & Sheets("Administration").Range("A65536").End(xlUp).Row)
    Set plgB = Sheets("web").Range("A1:A" & Sheets("web").Range("A65536").End(xlUp).Row)
    col = Sheets("Administration").Range("IV1").End(xlToLeft).Column
     
    For Each c In plgA
      If IsError(Application.Match(c, plgB, 0)) Then
         x = x + 1
        For i = 1 To col
         Sheets("résultat").Cells(x, i) = Sheets("Administration").Cells(c.Row, i)
        Next
      End If
    Next
     
    End Sub
    isabelle

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 84
    Par défaut Pb de macro
    Bonjour

    Merci pour cette réponse rapide mais je n'arrive pas d'une part a la mettre en œuvre (j'ai crée une macro avec les mêmes instructions que ce que tu as écrit) et d'autre par a comprendre les instructions.

    Ci joint mon fichier exemple.

    Pourrais tu voir ce qui "cloche" et m'expliquer les différentes instructions afin que je comprenne comment ce la fonctionne et ceci dans le but d'une adaptation possible sur d'autres projet.

    SVP Merci

    Raphael
    Fichiers attachés Fichiers attachés

  4. #4
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Raphaël,

    j'ai modifié la macro puisqu'il peut y avoir des doublons en colonne A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Sub Macro1()
    Dim plgA As Range, plgB As Range, c As Range
    Dim listA(), listB()
    Dim i As Integer, x As Integer, col As Integer
    Dim a As String, b As String, champ As Variant, sp As Variant
     
    Set plgA = Sheets("Administration").Range("A2:A" & Sheets("Administration").Range("A65536").End(xlUp).Row)
    Set plgB = Sheets("web").Range("A2:A" & Sheets("web").Range("A65536").End(xlUp).Row)
    col = Sheets("Administration").Range("IV1").End(xlToLeft).Column
     
    For Each c In plgA
    'CONCATENER chaque cellule Colonne 1 à 4 de chaqu'une des lignes des tableau A et B
    ' et renseigne les listA et lisB, pour éviter les doublons
        For i = 1 To col
        a = a & "," & Sheets("Administration").Cells(c.Row, i)
        b = b & "," & Sheets("web").Cells(c.Row, i)
        Next
          ReDim Preserve listA(i)
          listA(x) = Right(a, Len(a) - 1)
          a = ""
          ReDim Preserve listB(i)
          listB(x) = Right(b, Len(b) - 1)
          b = ""
          x = x + 1
    Next
     
    'vérifier si chaque item(champ) de listA est présente dans listB
    'si non présente mets l'information sur la feuille résultat en commencant à la 
    'ligne 2
     
    x = 2
    For Each champ In listA()
    If champ = Empty Then Exit Sub
      If IsError(Application.Match(champ, listB, 0)) Then
      sp = Split(champ, ",")
        For i = 0 To col - 1
            Sheets("résultat").Cells(x, i + 1) = sp(i)
        Next
        x = x + 1
      End If
    Next
     
    End Sub
    isabelle

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 84
    Par défaut Probleme macro
    Bonjour,

    Merci pour ta réponse toujours aussi rapide.

    Mais je viens de m'apercevoir d'un petit problème :


    Voici par exemple mes données :

    LAGARDE Raphael Pavillons sous bois 93400
    TRYON Constance Courbevoie 92400
    COIFFARD Henri St Nazaire 44600
    COIFFARD Henri Rennes 35700
    ASA TETE Nantes 44000
    VIDORE Marc St Denis 93200
    VIDORE Marc Rennes 35700



    Quand je lance la macro j'ai une fenêtre qui s'ouvre et qui affiche :
    Erreur d'excecution "9"
    l'indice n'appartient pas a la sélection


    Peux tu me dire ce qui ne va pas ? SVP Merci


    Je peux avoir des enregistrements avec des nom, prenom, adresse et code postal identiques (sur un ou plusieurs ictems) ce qui peut différer se peut être que l'un ou plusieurs de ces ictems (par exemple Nom, Prenom et Code postal identiques mais pas l'adresse donc c'est deux enregistrements différents)

    Ci joint mon fichier exemple

    Merci pour ton aide

    Raphael
    Fichiers attachés Fichiers attachés

  6. #6
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Raphaël,

    meacoulpa,
    il faut remplacer ce bout de code,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
          ReDim Preserve listA(i)
          listA(x) = Right(a, Len(a) - 1)
          a = ""
          ReDim Preserve listB(i)
          listB(x) = Right(b, Len(b) - 1)
          b = ""
          x = x + 1
    par celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
          ReDim Preserve listA(x)
          listA(x) = Right(a, Len(a) - 1)
          a = ""
          ReDim Preserve listB(x)
          listB(x) = Right(b, Len(b) - 1)
          b = ""
          x = x + 1
    isabelle

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 84
    Par défaut
    Bonjour,

    Merci pour ta réponse rapide.

    Je viens de tester ta dernière modification et cela marche.

    Merci Beaucoup

    Raphaël

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 84
    Par défaut Comparaison de données entre ... (suite)
    Bonjour,

    Grace à l'aide de certains membres de forum, j'ai pu realiser dans un de mes classeur une macro me permettant de comparer les informations contenues dans plusieurs feuilles du classeur.

    Voici la desciption de ma macro :

    J'ai un classeur Excel comportant trois feuilles :
    "Administration" ;
    "Web" ;
    "Résultats".

    Chaque feuille se compose de la même manière : plusieurs colonnes (Nom, Prénom, n°, Adresse, code postal, ville) chaque ligne représente une personne différente. Les feuilles : "Liste" comporte 4000 personnes, la feuille "Inscrits" comporte 1000 personnes et la feuille Résultats ne comporte aucune personne.

    La macro réalise le travail suivant : comparer les enregistrements pressent sur les feuilles "Liste" et "Inscrits" et complétant la feuille "résultat" avec les personnes qui ne sont présents que sur la feuille "Liste" et complétant les colonnes de la feuille "résultats" avec les infos correspondant de chaque personne n'existant que dans la feuille "Liste".

    Le résultat ce trouve dans le fichier joint.

    Mon problème actuel est le suivant :

    Je voudrais que la comparaison ne s'effectue que sur les deux premières colonnes c'est a dire :Nom et Prénom mais que si la personne n'existe que dans la feuille "Liste" l'ensemble de ses informations (Nom, Prénom, n°, Adresse, code postal, ville) soit copiées dans la feuille "résultat".

    Quelqu'un aurait il une idée, une remarque, une piste ?

    Svp Merci

    Raphaël
    Fichiers attachés Fichiers attachés

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 84
    Par défaut Recherche d'aide
    Bonjour,

    Personne ne peut m'aider SVP Merci : moi je cale toujours ...

    Raphael

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

Discussions similaires

  1. [XL-2003] Comparaison données entre deux feuilles
    Par ivanG dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/05/2014, 09h51
  2. [XL-2003] Comparaison des données entre plusieurs colonnes
    Par floctc dans le forum Excel
    Réponses: 6
    Dernier message: 08/12/2009, 20h56
  3. Réponses: 2
    Dernier message: 02/05/2007, 13h28
  4. [VBA Excel] - Copie Aléatoire de données entre 2 feuilles
    Par ethan64 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2006, 17h34
  5. Comparaison de données entre deux arrays
    Par sironimo dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 20/04/2006, 17h44

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