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

Macros et VBA Excel Discussion :

Comparaison de 2 tableaux


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Responsable des études
    Inscrit en
    Mai 2019
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2019
    Messages : 66
    Points : 71
    Points
    71
    Par défaut Comparaison de 2 tableaux
    Bonjour,

    je sèche complétement sur une macro.
    J'ai deux tableaux contenant des numéros et je souhaite dans un troisième tableau afficher les numéros qui ne sont présents que dans un seul tableau.
    Je vous met en capture le tableau 1 et 2 contenant les numéros et le 3 que je souhaite obtenir.

    Nom : 130.JPG
Affichages : 78
Taille : 19,3 Ko

    J'ai hésité à faire une boucle et à comparer toutes les lignes mais ça va tourner trop longtemps.

    Avez vous une idée qui pourrait m'aider ?

    Merci d'avance,

    Clémence

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par DéesseClem Voir le message
    Bonjour,

    Soient 3 tableaux structurés :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Option Explicit
     
    Sub Test()
     
    Dim Aire1 As Range, Aire2 As Range
    Dim LigneTab3 As ListRow
    Dim Tableau3 As ListObject
    Dim I As Long, Nb As Integer
    Dim HeureDebut, HeureFin, TempsTotal
     
        HeureDebut = Timer
     
        With Application
             .ScreenUpdating = False
             .Calculation = xlCalculationManual
        End With
     
     
        Set Aire1 = Range("Table1[tab1]")
        Set Aire2 = Range("Table2[tab2]")
        Set Tableau3 = ActiveSheet.ListObjects("Table3")
     
        With Tableau3
             If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        End With
     
        For I = 1 To Aire1.Count
              Nb = WorksheetFunction.CountIf(Range("Table2[tab2]"), Aire1(I))
              If Nb = 0 Then
                 Set LigneTab3 = Tableau3.ListRows.Add
                 LigneTab3.Range(1, 1) = Aire1(I)
                 Set LigneTab3 = Nothing
              End If
     
        Next I
     
        For I = 1 To Aire2.Count
              Nb = WorksheetFunction.CountIf(Range("Table1[tab1]"), Aire2(I))
              If Nb = 0 Then
                 Set LigneTab3 = Tableau3.ListRows.Add
                 LigneTab3.Range(1, 1) = Aire2(I)
                 Set LigneTab3 = Nothing
              End If
     
        Next I
     
     
        Set Aire1 = Nothing:    Set Aire2 = Nothing
        Set Tableau3 = Nothing
     
        With Application
             .ScreenUpdating = True
             .Calculation = xlCalculationAutomatic
        End With
     
        HeureFin = Timer
        TempsTotal = HeureFin - HeureDebut
        MsgBox "Temps total du traitement : " & Round(TempsTotal, 2) & " seconde(s)"
     
     
    End Sub

  3. #3
    Membre régulier
    Femme Profil pro
    Responsable des études
    Inscrit en
    Mai 2019
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2019
    Messages : 66
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    Je ne comprends pas tout, pourquoi me parlez vous d'heure de fin, de temps total, etc ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par DéesseClem Voir le message
    Cela n'a aucune importance. Supprimez ces lignes si vous voulez.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 754
    Points : 28 605
    Points
    28 605
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que vous souhaitez faire c'est matcher des données
    Il existe une solution à l'aide de la fonction MATCH
    Voir ce billet titré Comment comparer (matcher) des données dans Excel
    que l'on peut combiner avec une procédure VBA voir ce billet Exporter les données comparées (« Matchées »)

    mais il y a beaucoup plus simple si vous avez une version excel 2010 ou supérieure à l'aide de Power Query. pas de VBA en faisant une fusion des deux tables

    [EDIT]

    Nous avons deux tables structurées nommées respectivement t-Janvier (bleu) et t_Février (noir) avec une seule colonne mais bien entendu elles pourraient en avoir plus.

    Voici les étapes à suivre avec Power Query
    1. Sélectionner la première table (le bleu pour l'exemple)
    2. Cliquer sur la commande A partir d'un tableau ou d'une plage, du groupe Récupérer et transformer des données de l'onglet [Données]
    3. Dans l'éditeur PowerQuery, sélectionner la commande Fermer et charger dans ...
    4. Dans la boîte de dialogue Importation de données, choisir Ne créer que la connexion
      Répéter les étapes 1 à 4 pour la seconde table (la noire)
    5. Cliquer sur le bouton Obtenir des données et choisir dans la liste Combiner des requêtes et Fusionner
    6. Dans la boîte de dialogue Fusionner,
      sélectionner les deux tables dans les listes déroulantes
      sélectionner les colonnes Ref des deux tables (contenant les identifiants uniques)
      choisir comme type de jointure Interne (seules les lignes correspondantes)
    7. Enfin dans l'éditeur "PowerQuery", choisir Fermer et Charger. La liste avec les éléments correspondant seront chargés dans une nouvelle feuille d'excel


    Si l'on souhaite obtenir la liste des éléments manquants dans la seconde liste par rapport à la première, il y a lieu de choisir à l'étape 6 le type de jointure Gauche opposée

    Illustration

    Etape 1 & 2

    Nom : Charger A partir de tableau ou d'une plage.png
Affichages : 47
Taille : 20,8 Ko

    Etape 3

    Nom : Editeur Power Query - Fermer et charger dans.png
Affichages : 34
Taille : 25,2 Ko

    Etape 4

    Nom : dlgBox - Importation de données - Charger dans.png
Affichages : 33
Taille : 14,1 Ko

    Etape 5

    Nom : Combiner des requêtes.png
Affichages : 36
Taille : 37,2 Ko

    Etape 6

    Nom : Fusionner - Jointure Interne.png
Affichages : 34
Taille : 46,8 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  2. [Tableaux] Comparaison de 2 tableaux
    Par vodasan dans le forum Langage
    Réponses: 9
    Dernier message: 10/01/2008, 08h51
  3. Comparaison de 2 tableaux
    Par altecad dans le forum Web
    Réponses: 2
    Dernier message: 11/05/2007, 19h03
  4. Réponses: 31
    Dernier message: 07/12/2006, 11h46
  5. Comparaison de deux tableaux
    Par siaoly dans le forum Langage
    Réponses: 5
    Dernier message: 27/06/2006, 19h40

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