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

VBA Discussion :

Tri combobox avec doublons


Sujet :

VBA

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Employé
    Inscrit en
    Août 2017
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Août 2017
    Messages : 32
    Points : 27
    Points
    27
    Par défaut Tri combobox avec doublons
    Bonjour à toutes et à tous,

    J'utilise une BDD dans la feuille INVENTAIRE qui s'affiche dans une combobox triée a colonne unique (CB_PROD). Pour plus de facilité lors d'une recherche,
    il suffit d'introduire "*" pour afficher tous les produits ou "*bleu" pour afficher tous les produits contenant le mot "bleu" par exemple.

    Il est possible d'avoir 2 produits de noms identiques mais d'unités différentes :

    Produit unité
    ------- -----
    Tape blanc RLX
    Tape blanc BTE

    Ceci ne sera pas récurrent sur tous les produits mais exceptionnel.

    Lorsque j'effectue une recherche sur "Tape blanc", je n'obtiens qu'une seule ligne car la macro effectue un tri sans doublon sur le nom uniquement.

    Dès lors, comment pourrait-on afficher les 2 produits de noms identiques dans la combobox triée ? Pour moi, pas de souci si le nom apparaît 2 fois l'un à la suite de l'autre. Faudrait-il introduire 2 colonnes dans la combobox ?

    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
    Dim d1
    Dim tmp As String
    Dim c As Range
    Dim tbl As Variant 'déclare la variable tbl (TaBLeau)
    Dim z As Integer 'déclare la variable z (incrément)
    Dim j As Integer 'déclare la variable j (incrément)
    Dim temp As Variant 'déclare la variable temp (valeur TEMPoraire)
     
    If Me.CB_PROD <> "" Then
     
        Set d1 = CreateObject("Scripting.Dictionary")
        tmp = "*" & UCase(Me.CB_PROD) & "*"
        For Each c In Sheets("INVENTAIRE").[LISTE]
        If UCase(c) Like tmp Then d1(c.Value) = ""
        Next c
        tbl = d1.keys 'définit le tableau des valeurs sans doublons
        'tri alphabétique
        For z = 0 To UBound(tbl) 'boucle 1 de 0 au nombre de valeur du tableau
        For j = 0 To UBound(tbl) 'boucle 2 de 0 au nombre de valeur du tableau
        If tbl(z) < tbl(j) Then 'condition : si la valeur de la boucle 1 est invérieure à la valeur de la boucle 2
            temp = tbl(z) 'définit la valeur temporaire temp
            tbl(z) = tbl(j) 'la valeur de la boucle un devient la valeur de la boucle 2
            tbl(j) = temp 'la valeur de la boucle deux devient la valeur temporaire temp
        End If 'fin de la condition
            Next j 'prochaine valeur de la boucle 2
            Next z 'prochaine valeur de la boucle 1
     
            Me.CB_PROD.List = tbl
            Me.CB_PROD.DropDown
     
    End If
    Merci d'avance pour votre aide et conseils

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 670
    Points : 34 385
    Points
    34 385
    Par défaut
    Salut,

    si ton tableau est a multiple dimension, il faut le prendre en compte.

    Tu as un tuto ultra complet sur les arrays
    http://silkyroad.developpez.com/vba/tableaux/
    http://silkyroad.developpez.com/vba/tableaux/#LXIV-D

Discussions similaires

  1. [XL-2007] Alimenter une ComboBox avec un tableau trié
    Par c.piette dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/04/2015, 09h56
  2. Tri valeurs avec doublons
    Par sousou_ dans le forum Langage
    Réponses: 7
    Dernier message: 22/03/2013, 10h09
  3. [XL-2003] Trier combobox avec des valeurs numériques sans doublon
    Par goldfinger13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/02/2012, 21h31
  4. combobox sans doublon (colonne de reference avec cellule vide)
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/04/2008, 18h08
  5. tri obligatoire avec DISTINCT?
    Par Marseillais9 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 31/07/2003, 18h50

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