List/rowsource

Résolu
Bonjour,

Voici le code suivant:

private sub me_initialize()
with worksheets("bddclients")
me.combobox1.list=.range("c1:c"& .range(c65365).end(xlup).row).value
end sub

le combobox devrait normalement aller chercher une liste de clients dans la feuille bddclients. Seulement, là, je n'ai rien: je fais EXECUTION et l'userform s'affiche correctement, mais rien dans le combobox.
La syntaxe de rowsource ou List me semble toujours très compliquée à partir du moment où on a une plage de source variable.

Quelqu'un peut-il m'aider?
Bonnes fêtes!

8 réponses

  1. Le nom de ta procédure semble ambigü, "me" est un mot réserve au langage, il ne faut pas nomme un objet "me"
    0
    1. Je me suis trompé, remplace me par client

      As tu une autre idée avec ce changement?
      0
      1. Essaies (avec un UserForm nommé Client):

        Private Sub UserForm_Initialize()
        With ThisWorkbook.Worksheets("bddclients")
        Client.ComboBox1.List = .Range("C1:C" & .Range("C65536").End(xlUp).Row).Value
        End With
        End Sub
        0
        1. PS : 2^16 = 65536 (et pas 65356) mais à partir de xl 2007 il vaut mieux écrire :
          Client.ComboBox1.List =.Range("C1:C" & .Range("C"&.Rows.Count).End(xlUp).Row).Value
          0
      2. Bonsoir chrisdemontigny,

            Dim i As Integer, iMin As Integer, iMax As Integer
            '
            iMin = 14: iMax = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
            For i = iMin To iMax
                ComboBox1.AddItem (Cells(i, 1).Value)
            Next i

        Joyeux Noël,
        Heliotte.
        0
        1. Bonjour,

          Tu peux remplacer :
          For i = iMin To iMax
          ComboBox1.AddItem (Cells(i, 1).Value)
          Next i

          Par :
          ComboBox1.List = Range(Cells(iMin, 1), Cells(iMax, 1)).Value
          0
      3. Bonsoir Patrice33740,

        Merci pour cet exemple .. rapide, net, sans bavure.

        Joyeuses fêtes,
        Heliotte.
        0
        1. Bonjour et merci pour vos réponses.

          Ce code a fonctionné dans un nouveau fichier où j'ai rajouté des données dans une colonne pour avoir des données qui apparaissent.
          En revanche, j'ai un fichier dans lequel j'ai plusieurs feuilles et plusieurs userform et là, ca reste toujours sans rien.
          J'ai fait un copier-coller du code de patrice33740 pour être sur que je n'oubliais rien, mais rien n'y fait.
          Voici le code que j'ai donc changé en fonction de vos lumières:

          Private Sub smclient_initialize()
          Dim i As Integer, iMin As Integer, iMax As Integer
          iMin = 1: iMax = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
          smclient.ComboBox1.List = ThisWorkbook.Sheets("bddclients").Range(Cells(iMin, 3), Cells(iMax, 3)).Value
          smclient.ComboBox2.List = ThisWorkbook.Sheets("bddclients").Range(Cells(iMin, 2), Cells(iMax, 2)).Value
          End Sub

          Merci de votre aide par avance.
          0
          1. Bonjour,

            iMax = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row

            Explications :
            - Ce code, signifie qu'il va rechercher la dernière ligne non-vide de la colonne "Columns(1)" ~~ signifie "Colonne A"

            Or, tu as besoin de rechercher la dernière ligne non-vide des colonne "B" et "C".

            Veux-tu essayer ceci:
            Private Sub smclient_initialize()
            	Dim i As Integer, iMin As Integer, iMax As Integer
            	'
            	iMin = 1: iMax = Columns(3).Find("*", , , , xlByColumns, xlPrevious).Row
            	smclient.ComboBox1.List = ThisWorkbook.Sheets("bddclients").Range(Cells(iMin, 3), Cells(iMax, 3)).Value
            	iMax = Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row
            	smclient.ComboBox2.List = ThisWorkbook.Sheets("bddclients").Range(Cells(iMin, 2), Cells(iMax, 2)).Value
            End Sub
            0
            1. Il est clair que j'avais laissé quelques erreurs sur mon code précédent.
              Cela fonctionne maintenant.

              Merci beaucoup.
              0