Liste modifiable combobox

Résolu/Fermé
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015 - 23 févr. 2015 à 14:11
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 23 févr. 2015 à 15:19
Bonjour,

Je suis étudiante en troisième année de génie civil et dans le cadre d'un projet, je dois établir un programme informatique. Malheureusement je suis novice en la matière, je m'aide de livres et des forum, mais je ne trouve pas réponse à toutes mes questions...

Je rencontre un problème avec le code qu'il faut affecter à un combobox.
Voici comment se présente la boite déroulante qui contient ce menu déroulant


j'aimerais que le code permette :
-de choisir des valeurs déjà enregistrer dans le menu déroulant
-que l'utilisateur puisse créer de nouvelles valeur en cliquant sur ajouter

j'ai déjà essayer plusieurs codes mais aucun je ne suis pas arrivée à faire ce dont je souhaitais...

voici mon code actuel



merci par avance :)

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
23 févr. 2015 à 15:02
Bonjour,

Puisque tu es sous Excel, utilise une feuille pour stocker les infos à afficher.

Exemple, dans une feuille nommée Data, en colonne A, à partir de A2, saisi tes infos.

Créer une fonction Alim_Combo, comme ceci :

Sub Alim_Combo()
Dim Lig As Long
Lig = 2
ComboBox1.Clear
Do While Sheets("Data").Cells(Lig, 1) <> ""
    ComboBox1.AddItem Sheets("Data").Cells(Lig, 1)
    Lig = Lig + 1
Loop
End Sub


A l'initialisation de ton Userform, Appelle la fonction créée ci-dessus comme ceci :

Private Sub UserForm_Initialize()
Call Alim_Combo
End Sub


Au clic sur ton bouton de commande, enregistre le contenu de la combobox dans la feuille Data, en première ligne vide colonne A et relance ta fonction Alim_Combo. Comme ceci :

Private Sub CommandButton1_Click()
    Sheets("Data").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = ComboBox1
    Call Alim_Combo
End Sub

0
loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
23 févr. 2015 à 15:16
le problème pijaku est que mon programme va servir pour plusieurs projet et chaque projet aura sa feuille excel où l'ensemble des informations entrées par l'utilisateur seront retranscrite.
Ce tableur excel à déjà une mise en forme au niveau des colonnes et au niveau des lignes en fait ce que j'aimerais faire c'est que en fonction du type de document, mes informations soient retranscrites dans le bon endroit.
De plus en fonction des projets, le type de plan utilisé peut varié.
j'ai réussi à initialisé mon tableau avec le type de plan qu'on retrouve très souvent mais j'aimerais qu'on puisse agrémenter la liste si besoin...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > loupti Messages postés 30 Date d'inscription lundi 23 février 2015 Statut Membre Dernière intervention 13 mai 2015
23 févr. 2015 à 15:19
Tu peux ajouter une feuille à ton classeur, ça ne devrait pas l'alourdir.
Ta méthode est faisable, en mémoire, mais à chaque ouverture / fermeture de classeur, tu annules tout...
Donc, il faut que tes données soient enregistrées, en "dur", quelque part. Soit dans ton classeur...
Après, si tu veux que cela soit invisible, tu peux toujours enregistrer ça dans les noms de ton classeur, mais ça risque de l'alourdir inutilement...
0