VBA ComboBox

Bonsoir,

Se serait pour demander si quelqu'un saurait m'expliquer clairement bout à bout ce que signifie ce code. Je comprends le code en lui même et le résultat mais je n'arrive pas à comprendre certains détails.

Merci à ceux qui prendront la peine de me répondre, bien que ma question est digne d'un novice.

Private Sub UserForm_Initialize()

With Sheets("Database")
    ComboBox1.List = .Range("A1:A" & .Range("A65536").End(xlUp).Row).Value
End With

End Sub

Bonsoir,

Le contrôle Combobox est en fait un tableau de valeurs à 2 dimensions, la première étant la ligne et la seconde la colonne. Si la Combobox ne comporte qu'une colonne, il s'agit donc d'un tableau de la forme (n,1)

.Range("A1:A" & .Range("A65536").End(xlUp).Row).Value correspond au même type de tableau à 2 dimensions . Dans ce cas précis, il s'agit d'un tableau de la forme (i,1) où i = 1 à i_fin avec i_fin =numéro de la dernière remplie de la colonne A

La propriété ".List" permet donc de charger directement le tableau des valeurs de la ComboBox et de plus est beaucoup plus rapide que la méthode ".AddItem"

Bonjour toutes et tous,

coucou Thev

Je vais essayé de te répondre le plus explicitement que possible :

Private Sub UserForm_Initialize()

With Sheets("Database")
    ComboBox1.List = .Range("A1:A" & .Range("A65536").End(xlUp).Row).Value
End With

End Sub

(private sub userform_initialize()) = Il y a un userform qui s'initialise lorsque, j'irai déclencher une action

With Sheets("Database") pour alimenter ma combobox1 de ma liste, il faut qu'avec cet userform d'initialisation, que je lui dise , tu vas me chercher cette feuille de mon classeur qui se nomme Database

pour cela, il faut lui dire a cet comboxbox ou pécher où dans quoi, afin de finaliser l'initialisation de mon userform , donc, se sera dans la colonne A (.range ("A1:A")dès ma première ligne jusqu'au bout de ma colonne entière A , Range("A65356") jusqu'à la fin de ligne (row)

(voir post ci-dessus post de Thev plus commenté merci à lui )

en grossomodo

with avec qui quoi ?

end with = fin de qui quoi

end sub = fin de ma procédure

sheets=feuille

en espérant que cela puisse t'avoir aidé, n'hésitez-pas à corriger si erreur trouvé

crdlt,

André

Pour compléter la réponse d'André, on peut aussi libeller l'instruction de chargement ainsi et c'est peut être plus compréhensible.

ComboBox1.List = Range(.Cells(1, "A"), .Cells(Rows.Count, "A").End(xlUp)).Value

.Cells(1, "A") représente la cellule A1 de la feuille

Rows.count est le nombre maximal de lignes dans une feuille Excel : 65536 pour les versions < 2007 et plus d'1 million pour celles >= 2007

.Cells(Rows.Count, "A") représente donc la dernière cellule de la colonne A de la feuille

.Cells(Rows.Count, "A").End(xlUp) représente la dernière cellule utilisée de la colonne A de la feuille

Range(.Cells(1, "A"), .Cells(Rows.Count, "A").End(xlUp)) est la plage utilisée de la colonne A de la feuille à partir de la ligne 1

D'accord, merci à vous 2

Pour compléter la réponse d'André, on peut aussi libeller l'instruction de chargement ainsi et c'est peut être plus compréhensible.

ComboBox1.List = Range(.Cells(1, "A"), .Cells(Rows.Count, "A").End(xlUp)).Value

.Cells(1, "A") représente la cellule A1 de la feuille

Rows.count est le nombre maximal de lignes dans une feuille Excel : 65536 pour les versions < 2007 et plus d'1 million pour celles >= 2007

.Cells(Rows.Count, "A") représente donc la dernière cellule de la colonne A de la feuille

.Cells(Rows.Count, "A").End(xlUp) représente la dernière cellule utilisée de la colonne A de la feuille

Range(.Cells(1, "A"), .Cells(Rows.Count, "A").End(xlUp)) est la plage utilisée de la colonne A de la feuille à partir de la ligne 1

Tu me conseillerais de remplacer" .Range("A65536") " par " .Cells(Rows.Count, "A") ".

Pour être sur d'atteindre la dernière ligne et avoir ainsi une base de donnée qui peut être plus vaste ?

Tu me conseillerais de remplacer" .Range("A65536") " par " .Cells(Rows.Count, "A") ".

Comme tu es en version 2016, c'est mieux et plus standard sauf si tu es certain de ne jamais dépasser 65536 lignes.

Rechercher des sujets similaires à "vba combobox"