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 :

Stocker Une colonne sans Doublons dans un Vecteur ou tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2016
    Messages : 192
    Points : 81
    Points
    81
    Par défaut Stocker Une colonne sans Doublons dans un Vecteur ou tableau
    Bonjour,

    Je voudrais creer une fonction qui me permet de stocker les valeurs d'une colonne d une colonne dans un vecteur ou tableau don't la longeur n est pas define a l avance.

    J ai une combobox1 qui correspond a la liste de mes onglest (onglet1, onglet2, onglet3 ... ongletn)

    Selon la selection de l'utilisateur l onglet de la combobox1 est selectionne et les element de la colonne1 de cet onglet sont a afficher dans une combobox2 et sans doublons.

    Par example, si l'utilisateur a choisi l'onglet3 dans la combobox1 et que la colonne 1 de l'onglet3 comprend les elements suivants :

    Renard
    Loup
    Poule
    Renard
    Poule
    Poisson

    Je voudrais que la combobox2 se remplisse de la maniere suivante :

    Loup
    Poisson
    Poule
    Renard

    Je les ai mis dans cet ordre car je pense que pour eviter les doublons un premier tri par ordre alphabetique est necessaire. Le mieux serait pour moi que ces donnees soient stockees dans un tableau et qu'a la fin de la fonction Combobox1.change, un evenement soit declencher pour alimenter la combobox2

    Merci pour votre aide

    N'hesitez pas a me poser des questions pour plus de precision.

  2. #2
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,
    tu as 2 solutions pour avoir une liste sans doublon
    - utiliser une collection => cf faq du forum Excel
    - utiliser un dictionnaire => une recherche te permettra d'avoir des réponse notamment dans ce forum

    une fois les doublons supprimer tu pourras alimenter ta combobox2 via ta collection ou ton dictionnaire
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  3. #3
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    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
     
    Dim f
    Private Sub UserForm_Initialize()
      Set f = Sheets("base")
      Set MonDico = CreateObject("Scripting.Dictionary")
      For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row)   ' on explore la colonne de niveau 1
        MonDico(c.Value) = ""                                    ' on ajoute l'élément de la famille au dictionnaire
      Next c
      temp = MonDico.keys      'les clés du dico dans la table temp()
      Call Tri(temp, LBound(temp), UBound(temp))
      Me.Famille.List = temp
    End Sub
     
    Private Sub famille_click()
      Me.SousFamille.Clear
      Set MonDico = CreateObject("Scripting.Dictionary")
      For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row)      ' on explore la colonne de niveau 1
         If c = Me.Famille Then MonDico(c.Offset(, 1).Value) = ""   ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire
      Next c
      temp = MonDico.keys        'les clés du dico dans la table temp()
      Call Tri(temp, LBound(temp), UBound(temp))
      Me.SousFamille.List = temp
    End Sub
     
    Private Sub SousFamille_click()
      For Each c In f.Range("B2:B" & f.[B65000].End(xlUp).Row)      ' on explore la colonne de niveau 1
         If c = Me.Famille And c.Offset(, 1) = Me.SousFamille Then Me.Code = c.Offset(, -1) ' si famille alors on ajoute l'élément de la sous-famille au dictionnaire
      Next c
    End Sub
     
    Sub Tri(a, gauc, droi) ' Quick sort
       ref = a((gauc + droi) \ 2)
       g = gauc: D = droi
       Do
          Do While a(g) < ref: g = g + 1: Loop
          Do While ref < a(D): D = D - 1: Loop
          If g <= D Then
            temp = a(g): a(g) = a(D): a(D) = temp
            g = g + 1: D = D - 1
         End If
       Loop While g <= D
       If g < droi Then Call Tri(a, g, droi)
       If gauc < D Then Call Tri(a, gauc, D)
    End Sub
    boisgontier
    http://boisgontierjacques.free.fr
    Fichiers attachés Fichiers attachés

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2016
    Messages : 192
    Points : 81
    Points
    81
    Par défaut
    Merci beaucoup pour ta reponse mais je suis au travail donc impossible d ouvrir la pj. Peux tu copier les lignes de code ?

    Merci beaucoup

Discussions similaires

  1. Formule compter valeurs d'une colonne sans doublons
    Par spark_legion dans le forum Modélisation
    Réponses: 2
    Dernier message: 05/05/2011, 14h12
  2. Renseigner une liste sans doublon dans une feuille ou dans un userform
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 26/01/2009, 14h54
  3. Liste de choix sans doublons dans une colonne
    Par LouFels dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2008, 22h58
  4. Récupérer valeurs d'une colonne sans doublons
    Par paflolo dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 17/10/2006, 14h19
  5. Réponses: 4
    Dernier message: 10/06/2006, 00h38

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