VBA Remplir une Combobox sans utiliser de sel [Résolu/Fermé]

Signaler
Messages postés
12248
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 mars 2021
-
Messages postés
12248
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 mars 2021
-
Bonjour,
Sous Excel, j'ai créé un Userform avec des tas de combobox, textbox etc... Je souhaite incrémenter, au lancement de mon Userform, mes combobox à partir de listes que j'ai dans une feuille de mon classeur. J'ai fait ceci :
Private Sub UserForm_Activate()
Application.ScreenUpdating = False
TextBox1 = ""
TextBox2 = ""
ComboBox1.Clear
Sheets("Données").Visible = True
Sheets("Données").Select
ActiveSheet.Range("C2").Select
Do While ActiveCell <> ""
comboBox1.AddItem UCase(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
CheckBox4 = False
OptionButton3 = False
End Sub
Ce code fonctionne, mais je sais d'expérience qu'il utilise pas mal de mémoire. Que faire pour ajouter des item à ma comboBox1 sans utiliser .Select???
Merci d'avance.

6 réponses

Messages postés
17000
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
4 mars 2021
10 228
Bonjour,

Je ne suis pas sûre d'avoir bien saisi ta demande.
Quand tu dis que tu souhaites "incrémenter tes combobox à partir de listes", est-ce que ça signifie que tes listes sont susceptibles de s'agrandir ?
Si tel est le cas, une solution simple consiste à donner un nom aux listes avec une formule Décaler, ou encore plus simple (à partir de la version 2002 ou 2003, je ne sais plus exactement) de transformer ces listes en listes façon Excel qui s'agrandira automatiquement (Données, Listes => Créer une liste).

Mais peut être n'ai-je pas compris ta question... ;)

m@rina
Messages postés
12248
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 mars 2021
2 576
Effectivement mes listes s'agrandissent au fur et à mesure de l'utilisation du classeur.
Par incrémenter j'attends simplement que lors de l'ouverture du UserForm, ma combobox soit complétée des valeurs que j'ai rentré en Sheets("Données").Range("C2:C15") par exemple.
Messages postés
16393
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
3 mars 2021
3 144
Salut Pijaku
Y'avait bin longtemps!...

With Sheets("données")
    fin = .Range("C2").End(xlDown).Row
    For cptr = 2 To fin
        ComboBox1.AddItem UCase(.Cells(cptr, 3))
    Next
End With


a la place de
Sheets("Données").Visible = True
Sheets("Données").Select
ActiveSheet.Range("C2").Select
Do While ActiveCell <> ""
comboBox1.AddItem UCase(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop 
Messages postés
12248
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 mars 2021
2 576
Salut et merci Michel,
Ben ouais y'avais bin longtemps... En fait, je suis là tous les jours mais tu prends tous les sujets auxquels je peux répondre et forcément donne de bien meilleures solutions que moi. Résultat, je lis beaucoup sur CCM, j'apprends, j'apprends, j'apprends en lisant les solutions de Marina, de toi bien sur mais de Mr PENTIER également.
A bientôt.
ps : si tu ne me laisse pas un sujet facile de temps à autre je vais finir par disparaître du forum bureautique!!!
@+

Edit : ta solution est superbe, ça fonctionne à merveille. J'aurais encore besoin d'autres tuyaux pour mon classeur, mais chaque sujet à la fois, celui-ci est "résolu".
Merci
Messages postés
16393
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
3 mars 2021
3 144
re,

bin tu vois, j'pars en ouacances demain, bien sûr sans ordi, dans un coin béni où il n'y a pas d'adsl
donc t'es pénard pour 3 semaines!
si tu veux continuer à progresser, va faire un tour chez un copain à moi, maintenant MVP comme Marina:
https://silkyroad.developpez.com/
A mon avis, c'est + intéressant qu' intervilles ou la chasse au trésor....
Messages postés
12248
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 mars 2021
2 576
Ouaou!! waw!!! Que de lecture. Thanks for the lien...
Bonnes vacances à toi. Repose toi bien. En attendant ton retour, vais essayer de pas dire trop de bêtises à les gens.
A+