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 :

Combobox multiples avec tri alphabétique et suppression des doublons


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut Combobox multiples avec tri alphabétique et suppression des doublons
    Bonjour,

    J'ai trouvé ce code qui fonctionne à merveille avec un combobox, comment répéter ce code pour charger les autres combobox lors de l'initialisation du Userform ?

    J'ai dupliqué le code en changeant la source des datas, mais le combobox2 reçoit les 2 sources de data ...

    J'ai 26 combobox à initialiser

    Merci pour votre aide
    Philippe


    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
    Private Sub UserForm_Initialize()
    Dim a As Variant
    Dim f As Variant
    Dim i As Variant
    Dim bd As Variant
    Dim mondico As Variant
    Dim temp As Variant
            Set f = Sheets("DATA_Interventions")
            Set mondico = CreateObject("Scripting.Dictionary")
            a = f.Range("E3:E" & f.[A65000].End(xlUp).Row)   ' tableau a(n,1) pour rapidité
            For i = LBound(a) To UBound(a)
              If a(i, 1) <> "" Then mondico(a(i, 1)) = ""
            Next i
            '--avec tri
            temp = mondico.keys
            Call Tri(temp, LBound(temp), UBound(temp))
            Me.ComboBox1.List = temp
     
             a = f.Range("F3:F" & f.[A65000].End(xlUp).Row)   ' tableau a(n,1) pour rapidité
            For i = LBound(a) To UBound(a)
              If a(i, 1) <> "" Then mondico(a(i, 1)) = ""
            Next i
            '--avec tri
            temp = mondico.keys
            Call Tri(temp, LBound(temp), UBound(temp))
            Me.ComboBox2.List = temp
    End Sub
    Private Sub BT_OK_Click()
        Sheets("Fiche_travail").Range("A2") = ComboBox1
    End Sub
    Sub Tri(a, gauc, droi) ' Quick sort
    Dim ref As Variant
    Dim g As Variant
    Dim d As Variant
    Dim temp As Variant
      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

  2. #2
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, vous nous présentez un code, c'est parfait, mais sans préciser si c'est celui qui fonctionne à merveille ou celui que vous avez modifié???
    Vous devriez nous mettre les deux, ainsi nous n'aurions pas besoin d'une boule de cristal pour deviner
    Cordialement

  3. #3
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    Bonjour,

    Dans le code ci-dessous, j'ai dupliqué le code en changeant la source des datas, mais le combobox2 reçoit les 2 sources de data de la colonne E et F ...

    Comment modifier ce code pour charger les 26 autres combobox lors de l'initialisation du Userform ?

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Voici le code modifié pour les 26 ComboBox nommés CombBox1, ComboBox2, ..., ComboBox26.
    mais le combobox2 reçoit les 2 sources de data de la colonne E et F ...
    Il te faut vider le dictionnaire avec "RemoveAll" sinon, tu te retrouve avec toutes les données des colonnes :
    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
     
    Private Sub UserForm_Initialize()
     
        Dim f As Worksheet
        Dim MonDico As Object
        Dim a As Variant
        Dim temp As Variant
        Dim I As Long
        Dim J As Integer
     
        Set f = Sheets("DATA_Interventions")
     
        Set MonDico = CreateObject("Scripting.Dictionary")
     
        'boucle sur les 26 ComboBox
        For J = 1 To 26
     
            'déplace la source de colonne en colonne à partir de la colonne E (1 + 4 = 5)
            a = f.Range(f.Cells(3, J + 4), f.Cells(Rows.Count, J + 4).End(xlUp)) ' tableau a(n,1) pour rapidité
     
            For I = LBound(a) To UBound(a)
                If a(I, 1) <> "" Then MonDico(a(I, 1)) = ""
            Next I
     
            '--avec tri
            temp = MonDico.keys
            Call Tri(temp, LBound(temp), UBound(temp))
     
            Me.Controls("ComboBox" & J).List = temp
     
            'ici, il est impératif de vider le dictionnaire car sinon, tu te retrouves avec le problème que tu soulèves !
            MonDico.RemoveAll
     
        Next J
     
    End Sub

  5. #5
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    je revient à la première solution que je t'avais proposé!
    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
    Private Sub UserForm_Initialize()
    Me.ComboBox1.Clear
    Me.ComboBox1.Column = Lst(Range("E3"))
    End Sub
    Function Lst(R As Range)
    Dim Nom  As String,Adds As String
    With R.Parent
        Nom = .Name
    If .Cells(.Cells.Rows.Count, R.Column).End(xlUp).Row < R.Row Then Lst = Array(""): Exit Function
        Adds = Replace(.Range(R, .Cells(.Cells.Rows.Count, R.Column).End(xlUp)).Address, "$", "")
    End With
    With CreateObject("Adodb.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=no;"""
        Lst = .Execute("Select Distinct * from [" & Nom & "$" & Adds & "] where [F1] is not null Order By [F1]").GetRows
        .Close
    End With
    End Function

  6. #6
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonsoir,
    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
    Private Sub UserForm_Initialize()
    'Lst Me.ComboBox1, Sheets("DATA_Interventions").Range("E3")
    'Lst Me.ComboBox2, Sheets("DATA_Interventions").Range("G3")
    For i = 1 To 26
       Lst Me.Controls("ComboBox" & i), Sheets("DATA_Interventions").Range("E3").Offset(, i - 1)
    Next
    End Sub
     
    Sub Lst(Ls As Object, R As Range)Dim Nom As String
    With R.Parent
        Nom = .Name
        Adds = Replace(.Range(R, .Cells(.Cells.Rows.Count, R.Column).End(xlUp)).Address, "$", "")
    End With
    With CreateObject("Adodb.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=no;"""
        Ls.Column = .Execute("Select Distinct * from [" & Nom & "$" & Adds & "] Order By [F1]").GetRows
        .Close
    End With
    End Sub

  7. #7
    Membre éclairé
    Homme Profil pro
    aucune
    Inscrit en
    Août 2019
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Août 2019
    Messages : 59
    Par défaut
    Bonsoir le forum
    Bonsoir goninph, Transitoire, THese & Thumb down

    Tu peux essayer comme cela (Reprise d'un code de Jacques BOISGONTIER) :
    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
    Private Sub UserForm_Initialize()
      Set MonDico = CreateObject("Scripting.Dictionary")
      Set plage = Feuil1.Range("e3:e" & Feuil1.Range("e65000").End(xlUp).Row)
     
      For Each c In plage
         If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
      Next c
      Me.ComboBox1.List = MonDico.items
     
            '--avec tri
            temp = MonDico.keys
            Call Tri(temp, LBound(temp), UBound(temp))
            Me.ComboBox1.List = temp
     
           Set MonDico = CreateObject("Scripting.Dictionary")
            Set plage = Feuil1.Range("f3:f" & Feuil1.Range("f65000").End(xlUp).Row)
      For Each c In plage
         If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
      Next c
      Me.ComboBox2.List = MonDico.items
     
            '--avec tri
            temp = MonDico.keys
            Call Tri(temp, LBound(temp), UBound(temp))
            Me.ComboBox2.List = temp
    End Sub
    Bonne soirée à toutes & à tous
    @+ Ericcool02

  8. #8
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    Bonjour à tous et merci,

    J'ai opté pour la solution de Ericcool02.

    Les données sont triées et sans doublons, par contre si il y a une ou plusieurs lignes vides, il y aura un choix vide, est possible de le suppirmer ?
    Merci pour votre aide
    Philippe


    Citation Envoyé par Ericcool02 Voir le message
    Bonsoir le forum
    Bonsoir goninph, Transitoire, THese & Thumb down

    Tu peux essayer comme cela (Reprise d'un code de Jacques BOISGONTIER) :
    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
    Private Sub UserForm_Initialize()
      Set MonDico = CreateObject("Scripting.Dictionary")
      Set plage = Feuil1.Range("e3:e" & Feuil1.Range("e65000").End(xlUp).Row)
     
      For Each c In plage
         If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
      Next c
      Me.ComboBox1.List = MonDico.items
     
            '--avec tri
            temp = MonDico.keys
            Call Tri(temp, LBound(temp), UBound(temp))
            Me.ComboBox1.List = temp
     
           Set MonDico = CreateObject("Scripting.Dictionary")
            Set plage = Feuil1.Range("f3:f" & Feuil1.Range("f65000").End(xlUp).Row)
      For Each c In plage
         If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
      Next c
      Me.ComboBox2.List = MonDico.items
     
            '--avec tri
            temp = MonDico.keys
            Call Tri(temp, LBound(temp), UBound(temp))
            Me.ComboBox2.List = temp
    End Sub
    Bonne soirée à toutes & à tous
    @+ Ericcool02

  9. #9
    Membre éclairé
    Homme Profil pro
    aucune
    Inscrit en
    Août 2019
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Août 2019
    Messages : 59
    Par défaut
    Re le forum
    Re le fil

    Essaie ceci pour retirer les "vides" :

    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
    Private Sub UserForm_Initialize()
      Set MonDico = CreateObject("Scripting.Dictionary")
      Set plage = Feuil1.Range("e3:e" & Feuil1.Range("e65000").End(xlUp).Row)
     
      For Each c In plage
      If c.Value <> "" And Not MonDico.Exists(c.Value) Then
      MonDico.Add c.Value, c.Value
       Me.ComboBox1.List = MonDico.items
     
    End If
        Next c
        '--avec tri
            temp = MonDico.keys
            Call Tri(temp, LBound(temp), UBound(temp))
            Me.ComboBox1.List = temp
     
           Set MonDico = CreateObject("Scripting.Dictionary")
           Set plage = Feuil1.Range("f3:f" & Feuil1.Range("f65000").End(xlUp).Row)
      For Each c In plage
       If c.Value <> "" And Not MonDico.Exists(c.Value) Then
       MonDico.Add c.Value, c.Value
     
      Me.ComboBox2.List = MonDico.items
    End If
      Next c
      '--avec tri
            temp = MonDico.keys
          Call Tri(temp, LBound(temp), UBound(temp))
         Me.ComboBox2.List = temp
      End Sub
    Bonne après-midi à toutes & à tous
    @+ Ericcool02

  10. #10
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    Hello,

    Suppression des doublons OK
    Tri de A à Z OK
    Suppression totale des cellules vides OK

    Problème lorsqu'il n'y a pas de données empêche l'initialisation de l'Userform

    Faut pas vous prendre la tête, on peut vivre avec une ligne vide

    Merci et bonne nuit
    Philippe

  11. #11
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    Un arryliste ça n'existe pas !
    Dans notre cas c'est une fonction qui retourne un tableau trié par ordre alphabétique sans doublons basé sur une plage de celles !

    J'ai mis [E1] parceque je ne connais pas le contexte mai tu peux donner [B5:B20] si le données que tu veux travailler ce trouve dans cette plage !

    Je me demandais comment répliquer ce code avec une dizaine de combos (tapant sur la même plage

  12. #12
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    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
    Private Sub UserForm_Initialize(
    dim Lst,I as integer 
    Lst=ArrayList(Range("E3"))
     
    For I 1 To 10 'pour combobox1 à combobox10
    With Me.Controls("ComboBox" & i)
               .Clear
                .List = Lst
    En With
    Next
    End Sub

  13. #13
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize(
    dim Lst,I as integer 
    Lst=ArrayList(Range("E3"))
     
    For I 1 To 10 'pour combobox1 à combobox10
    With Me.Controls("ComboBox" & i)
               .Clear
                .List = Lst
    En With
    Next
    End Sub
    Merci beaucoup.
    Ceci dit, j'ai dû louper une marche : que trouve-t-on en "E3" (dans mon monde merveilleux, je pensais qu'une array list comprenait par exemple les valeurs que peut prendre une combo par exemple, mais si j'ai 10 combos tapant dans 10 colonnes différentes bien sûr ?) ? J'ai bien pigé que ce E3 provient du code de Gonimph mais j'ai pas trop compris sa vocation...
    Bonne soirée ! (to everybody oeuf corse)

  14. #14
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    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
    Private Sub UserForm_Initialize()
    Me.ComboBox1.Clear
    Me.ComboBox1.List = ArrayList(Range("E3"))
    End Sub
    Function ArrayList(R As Range)
    Dim Nom As String, coll As Object
    Set coll = CreateObject("System.Collections.ArrayList")
    With R.Parent
        Nom = .Name
        For Each c In .Range(R, .Cells(.Cells.Rows.Count, R.Column).End(xlUp))
            If CStr(c.Text) <> "" Then
                If Not coll.contains(CStr(c.Text)) Then coll.Add CStr(c.Text)
            End If
        Next
    End With
    coll.Sort
    ArrayList = coll.toarray
    'coll.Reverse
    End Function

  15. #15
    Membre éclairé
    Homme Profil pro
    aucune
    Inscrit en
    Août 2019
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Août 2019
    Messages : 59
    Par défaut
    Bonjour le fil
    Bonjour Thumb down

    Excellent travail. Tout y est dans un minimum de code. J'achète .... euh j'archive.
    @+ Ericcool02

  16. #16
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    Hello,

    Merci, comment modifier, car E3 est sur une autre feuille

    Merci
    Philippe

  17. #17
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut Comment structurer le code pour plusieurs combos (même plage)
    Citation Envoyé par Thumb down Voir le message
    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
    Private Sub UserForm_Initialize()
    Me.ComboBox1.Clear
    Me.ComboBox1.List = ArrayList(Range("E3"))
    End Sub
    Function ArrayList(R As Range)
    Dim Nom As String, coll As Object
    Set coll = CreateObject("System.Collections.ArrayList")
    With R.Parent
        Nom = .Name
        For Each c In .Range(R, .Cells(.Cells.Rows.Count, R.Column).End(xlUp))
            If CStr(c.Text) <> "" Then
                If Not coll.contains(CStr(c.Text)) Then coll.Add CStr(c.Text)
            End If
        Next
    End With
    coll.Sort
    ArrayList = coll.toarray
    'coll.Reverse
    End Function
    Bonjour, bravo et merci pour cette aide si précieuse ! Je me demandais comment répliquer ce code avec une dizaine de combos (tapant sur la même plage) sans redondances et autres inutilités : pouvez-vous me montrer avec 2/3 ? Merci en tout cas pour votre temps,

  18. #18
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Un arryliste, ce que ne précise pas wiki ,est un classe DotNet !

    Oui ça existe mais faut tenir compte du langage de programmation ici VBA!

    Dans ma fonction Arryliste justement je fais appel à cette classe DotNet . Notes que cette classe ne fonctionnera pas si le framework auquel elle ce refaire n'est pas installé sur ta machine


    CreateObject("System.Collections.ArrayList")Ce n'est pas un tableau c'est une collection.

    Je l'utilise pour filtrer le doublons et trier alphabétiquement les ranges pour te retourner un Array pour alimenter une ComboBox

    Tu peux alimenter plusieurs ComboBox grâce à cette fonction en utilisant des plages de cellules différentes. Co1, col2, etc.

  19. #19
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut
    Ha ok merci encore !

  20. #20
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ComboBox1.List = ArrayList(Sheets("DATA_Interventions").Range("E3"))

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2013] Tri alphabétique et suppression de doublons
    Par DenisHen dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 11/02/2016, 12h52
  2. [ListView] ListView personnalisée avec tri alphabétique
    Par Nuzei dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 02/03/2011, 12h14
  3. [XL-2003] suppression des doublons dans une Combobox
    Par karim19 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2009, 16h42
  4. Listes : tri, suppression des doublons,"triplons" et compte
    Par yoshik dans le forum Général Python
    Réponses: 6
    Dernier message: 06/07/2009, 23h53
  5. problème avec la suppression des doublons dans arraylsit
    Par ulysse031 dans le forum Langage
    Réponses: 13
    Dernier message: 04/03/2007, 12h52

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