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 :

listbox sans doublons


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 271
    Par défaut listbox sans doublons
    slt à tous
    j'ai développé une macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub LBfournisseur_Click()
    Dim cel As Range 'variable de boucle qui represente les elements de la feuil "recap" de la col article
    Dim str As String 'variable de comparaison
    LBarticle.Clear 'mise à zero de cette listbox
        str = LBfournisseur.Value 
        For Each cel In Worksheets("recap").Range("a2:a" & Worksheets("recap").Range("a" & Rows.Count).End(xlUp).Row)
            If cel = str Then 'si les éléments sont identiques
                With LBarticle
                    .AddItem cel(1, 2) '1ere col
                 End With
            End If
        Next cel 'on boucle
    End Sub
    le problème c'est que la listbox LBarticle m'affiche des doublons.
    merci infiniment.

  2. #2
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    Bonjour,

    Regarde ICI, cela devrait t'aider.

  3. #3
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 271
    Par défaut
    merci,
    j'ai bien vu ton lien mais je pense que mon problème est un peu compliqué.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Si tu observais bien cette FAQ, tu constaterais qu'en fait tu as juste ta condition à modifier un petit peu.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 271
    Par défaut
    j'ai bien fait ce que vous avez dit mes son resultat
    veuillez m'aider.
    le classeur ci joint
    mon problème est sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub LBfournisseur_Click()
    merci.

    j'ai modifier le code mais la 1ere ligne de la colonne article se repète pour tous les fournisseur.
    merci.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    J'ai corrigé le code de toute ta procédure et fait de grosses modifications.

    Déjà j'ai rajoute ceci tout en haut du userform:
    Ceci signifie que les tableaux commenceront toujours à l'indice 1, et donc plus besoin d'écrire "1 To" quand tu redimensionnes.

    De deux, toi tu ajoutais arbitrairement toujours la même case avant, et donc tu partais avec un tableau déjà non-vide.

    Un tableau vide provoque une erreur si on le teste avec Ubound. On sait que cette erreur est provoquée par ça, donc on gère cette erreur (On Error Resume Next).
    S'il n'y a pas eu d'erreur (Err.Number=0), alors on peut parcourir le tableau, sinon on passe directement à la suite (vu qu'il ne risque pas d'y avoir de doublon).

    Ensuite, on ajoute un élément. S'il y avait eu une erreur, on redimensionne le tableau de façon simple avec une case (ne surtout pas mettre preserve ici sinon cela provoque une erreur, et comme la gestion d'erreurs est activée à cet endroit ton code se terminerait avec des résultats bizarre, et je suppose qu'ici ça serait aucun affichage dans ta boite), et sinon on fait le redim preserve.
    une fois qu'on a fini avec la cellule active, on réinitialise le code d'erreur (Err.Clear) et on stope la gestion d'erreurs (On Error Goto 0).

    C'est en gros la signification du code que je t'ai fait. Je te conseille de grandement potasser la gestion d'erreurs: c'est hyper-pratique, mais de mauvaises manipulations sont très vite arrivées.

    Code teste et ça marche correctement.

    Voilà un petit tuto là-dessus:
    http://gilmir.developpez.com/tutoriels-vb6/tutoriel16/
    Perso je trouve qu'il embrouille un peu, mais avec de la pratique on finit par bien comprendre comment ça marche.

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

Discussions similaires

  1. [Débutant] Copie items sélectionnés listbox sans doublon
    Par RKYDA dans le forum VB.NET
    Réponses: 4
    Dernier message: 19/06/2012, 16h11
  2. [MySQL] listbox sans doublon avec disabled
    Par akara dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/03/2009, 15h17
  3. listbox sans doublons
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/02/2009, 22h14
  4. Réponses: 0
    Dernier message: 15/01/2009, 12h00
  5. ListBox sans Doublons
    Par pobrouwers dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 20/02/2007, 17h41

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