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 entre listes et résultat dans ListBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut Comparaison entre listes et résultat dans ListBox
    Bonjour à tous,

    Ne maîtrisant pas très bien VBA, je vous sollicite pour m’aider à traiter mon problème qui doit être enfantin pour certains d’entre vous. Je dispose sur une feuille1 d’une liste de données (A, B, C,........jusqu’à L dans la première colonne) avec des caractéristiques correspondant (AX ou BX dans la seconde colonne, toutes les données sont présentes deux fois, une fois pour AX et une fois pour BX). J’ai sur une feuille2 une liste de référence pour la caractéristique AX uniquement avec dans une seule colonne (A, B, C, D, E, F, G, H). Ensuite sur une feuille3 sont présents deux CommandButton (1 et 2) et une ListBox1. Lors d’un clique sur le premier bouton, je souhaiterai donc faire afficher dans la ListBox1 les références présentes sur la feuille1 pour la caractéristique AX qui ne sont pas déjà présentes dans la liste de référence sur la feuille2, en l’occurrence I, J, K et L. Enfin, lors d’un clique sur le second bouton, I, J, K et L s’ajouteraient dans la liste de référence de la feuille2. J’espère que mon explication est suffisamment détaillée.
    Merci d’avance pour vos réponses qui m’éclaireront sûrement sur la démarche à suivre pour bien débuter.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je comprends mal comment tes données sont disposées. Peux-tu mettre en PJun classeur exemple ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    Bonjour,

    Merci d'avoir répondu, voici la pièce jointe, j'ai essayé de mettre en forme mon interface basiquement.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Je ne vois pas comment sélectionner uniquement "AX" sur la feuille "Données". Ne pourrait-on pas avoir uniquement "AX" en A1 sur la feuille "Référence" ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 31
    Par défaut
    Si, il est bien sur possible de changer l'intitulé de la colonne de la feuille de référence en mettant "AX" dans la cellule A1. D'autre part je vais essayer d'être un peu plus précis. Je souhaiterai dans un premier temps stocker (dans des variables ou tableau ou......) toutes les données de la feuille "Données" dont la caractéristique est "AX" pour ainsi obtenir une liste. Puis comparer cette liste avec la liste de référence et en ressortir les données nouvelles.
    Cependant je ne vois pas trop comment m'en sotir avec les If et For.
    J'ai essayé des choses mais sans succès.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Voici la macro attachée au bouton Recherche :

    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
    Sub Recherche()
        Dim C As Range, Plage As Range
        With Sheets("Données")
            Set Plage = .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
        End With
        With Sheets("Interface").ListBox1
            .Clear
            For Each C In Plage
                If C.Offset(, 1) = "AX" Then
                    If Not IsNumeric(Application.Match(C.Value, [Référence!A:A], 0)) Then
                        If .ListCount = 0 Then
                            .AddItem C.Value
                        Else
                            ctr = 0
                            For i = 0 To .ListCount - 1
                                Var = .List(i)
                                If C.Value = .List(i) Then
                                    ctr = ctr + 1
                                End If
                            Next i
                            If ctr <> .ListCount Then
                                .AddItem C.Value
                            End If
                        End If
                    End If
                End If
            Next C
        End With
    End Sub
    Celle ajoutée au bouton "Ajouter à la liste de référence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Ajout()
        Dim LB As Object, Ligne As Long
        Set LB = Sheets("Interface").ListBox1
        With Sheets("Référence")
            Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
            For i = 0 To LB.ListCount - 1
                Ligne = Ligne + 1
                .Cells(Ligne, 1) = LB.List(i)
            Next i
        End With
    End Sub
    et celle ajoutée au bouton "Effacer la liste" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Efface()
        Sheets("Interface").ListBox1.Clear
    End Sub
    Je joins le classeur au format compressé (on ne peux pas transmettre les classeurs au format xlsm). Le code n'est pas commenté, si tu ne le comprends pas, n'hésite pas à demander des précisions.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [Python 2.X] Comparaison entre list et addressbook
    Par aerane dans le forum Général Python
    Réponses: 15
    Dernier message: 08/09/2014, 09h01
  2. Réponses: 4
    Dernier message: 28/04/2013, 15h05
  3. [XSLT] Calcul entre deux noeuds, résultat dans un autre noeud
    Par thefutureisnow dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/12/2009, 15h55
  4. Réponses: 1
    Dernier message: 25/03/2008, 14h31
  5. [CSV] liste de résultats dans un champ
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2006, 18h25

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