Bonsoir,
j'aurai voulu savoir comment on peut mettre par exemple le nom des éléves d'une classe dans une liste déroulante sachant que ces noms se trouvent sur un classeur excel!
merci beaucoup
Bonsoir,
j'aurai voulu savoir comment on peut mettre par exemple le nom des éléves d'une classe dans une liste déroulante sachant que ces noms se trouvent sur un classeur excel!
merci beaucoup
Slt,
voici un petit tuto tiré de la FAQ du site qui t'aideras certainement:
http://excel.developpez.com/faq/?pag...TriSansDoublon
Ta liste déroulante (c'est un controle Combobox) tu veux la mettre directement sur la feuille de calcul ou dans un userform.
Les noms des élèves ce trouvent dans une colonne ou sur une ligne? Laquelle ?
Avec un peu + d'éléments ou pourras t'aider plus.
Merci A+
Bonjour rvtoulon,
Ma liste déroulante se trouve dans un formulaire.
Les noms des éléves se trouvent en colonne sur la feuille 1 à partir de la seconde ligne.
Merci beaucoup
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 Private Sub MODIFIER_Click() Unload Me With Modif_eleves '********************************************* 'INITIALISATION DU MENU DEROULANT '******************************************** .Nom_Eleves For i = 0 To 18 .Nom_Eleves.AddItem Feuil1.Cells(2 + i, 1) Next i 'Use drop-down list .Nom_Eleves.Style = fmStyleDropDownList 'Combo box values are ListIndex values .Nom_Eleves.BoundColumn = 0 'Set combo box to first entry .Nom_Eleves.ListIndex = 0 End With 'Afficher le formulaire Modif_eleves.Show End Sub
Slt,
alors pour l'exemple :
- mon formulaire = userform1,
- ma liste déroulante = combobox1
- La liste de donnée se trouve en Feuil1, colonne A, à partir de la deuxième ligne.
dans userform initialize :
Adapte le code en fonction de tes besoins.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub UserForm_Initialize() ' je boucle sur toute les lignes pleines à partir de la 2eme ligne de ' la colonne A For i = 2 To ActiveSheet.Range("A2").End(xlDown).Row 'je remplie la combobox ComboBox1.AddItem (Range("A" & i).Value) Next i End Sub
A+
Je suis arrivée à faire une liste déroulante!!
Mon problème c'est que j'aimerai que la liste s'arrête au moment où il n'y a plus de noms sachant qu'on peut ajouter ou supprimer des noms des éléves!!!
En faite j'ai trois classes de terminales : la ts1 - la ts2 - la ts3. Pour ces trois terminales il ya les noms des éléves sur la feuille 1.
dans la colonne A = il y a les noms de la TS1
dans la colonne B = il y a les noms de la TS2
dans la colonne c = il y a les noms de la TS3
Il y a une liste déroulante pour sélectionner la terminale et après il y a la liste déroulante des noms des éléves sur le même formulaire. J'aimerai pouvoir sélectionner une terminale et avoir le nom des éléves de cette classe dans l'autre liste déroulante.
De plus je vais devoir après changer le nom de cet éléve qui devra être modifié sur excel.
Je vous ai mis ci-joint le formulaire pour que vous puissiez visualiser.
Voici mon algo :
Merci d'avance
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 [Private Sub MODIFIER_Click() Unload Me With MODIF_ELEVES '******************************************** 'INITIALISATION DU MENU DEROULANT '******************************************** .classe_CONCERNEE.AddItem "TS1" .classe_CONCERNEE.AddItem "TS2" .classe_CONCERNEE.AddItem "TS3" '********************************************* 'INITIALISATION DU MENU DEROULANT '******************************************** For i = 0 To 19 .Nom_Eleves.AddItem Feuil1.Cells(2 + i, 1) Next i 'Combo box values are ListIndex values .Nom_Eleves.BoundColumn = 0 'Set combo box to first entry .Nom_Eleves.ListIndex = 0 End With 'Afficher le formulaire MODIF_ELEVES.Show End Sub]
J'ai essayé mais je n'y arrive pas, voilà ce que j'ai fait :
SUPPRESSION_MATIERE = formulaire concerné
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub SUPPRESSION_MATIERE_Initialize() '********************************************* 'INITIALISATION DU MENU DEROULANT '******************************************** For i = 2 To ActiveSheet.Range("A2").End(xlDown).Row SUPPRESSION_MATIERES.AddItem (Range("A" & i).Value) Next i End Sub
SUPPRESSION_MATIERES = nom de la liste déroulante
Ls matières se trouvent sur la feuille 2
Elles commencent sur la ligne 2 colone A
Par contre je le mets où cet algo???
Bonsoir,
à mettre de la fenêtre code de ton usf!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Userform_Initialize() '********************************************* 'INITIALISATION DU MENU DEROULANT '******************************************** For i = 2 To ActiveSheet.Range("A2").End(xlDown).Row SUPPRESSION_MATIERES.AddItem (Range("A" & i).Value) Next i End Sub
pas besoin de mettre son nom: Private Sub Userform_Initialize()
Je suis désolée mais je suis débutante je ne sais pas exactement quel mot correspond à quoi!! j'ai fais ça et bien sûr ça bloque!!! Pouvez vous me dire où j'ai faux car je comprends plus rien!!!
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 MODIFIER_Click() Unload Me With MODIF_MATIERES '********************************************* 'INITIALISATION DU MENU DEROULANT '******************************************** For i = 0 To ActiveSheet.MATIERE_A_MODIFIE.AddItem Feuil2.Cells(2 + i, 1)End(xlDown).Row Next i 'Combo box values are ListIndex values .MATIERE_A_MODIFIE.BoundColumn = 0 'Set combo box to first entry .MATIERE_A_MODIFIE.ListIndex = 0 End With 'Afficher le formulaire MODIF_MATIERES.Show End Sub
J'ai essayé un nouveau algo ms ca fonctionne pas non plus !!!
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 Private Sub MODIFIER_Click() Unload Me With MODIF_MATIERES '********************************************* 'INITIALISATION DU MENU DEROULANT '******************************************** For i = 2 To ActiveSheet.Range("A1").End(xlDown).Row MATIERE_A_MODIFIE.AddItem (Feuil2(2 + i, 1).Value) Next i 'Combo box values are ListIndex values .MATIERE_A_MODIFIE.BoundColumn = 0 'Set combo box to first entry .MATIERE_A_MODIFIE.ListIndex = 0 End With 'Afficher le formulaire MODIF_MATIERES.Show End Sub
Slt,
pourrais-tu mettre ton fichier en pièce jointe stp, en, enlevant ce qui est confidentiel pour qu'on puisse voir ce que tu souhaites.
Merci.
edit: si joint un exemple de liste déroulante.
C'est un devoir que je dois rendre, les noms de correspondent a personne
En même temps je vous met l'énoncé pour que ça soit plus claire!! merci beaucoup de prendre du temps pour m'aider!!
Par contre au niveu des feuilles excel, j'ai oublié de rajouter deux autres classeurs pour bien différencier le notes de la TS1 - TS2 - TS3
La je reste un peu bête je copie exactement ce que vous avez marqué, j'ai ma liste déroulante vierge alors que pour vous ça fonctionne très bien!! (J'ai changé le nom des combox avec les bons :-) )
RV help me please!!! je bloque sur ces algos!!!
re,
voici le code corriger :
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 '********************************************************************************************* Private Sub MODIFIER_Click() Unload Me With MODIF_MATIERES '********************************************* 'INITIALISATION DU MENU DEROULANT '******************************************** 'Je boucle a partir de la cellule A2 jusque la dernière ligne pleine de la colonne A de la feuille "Matières" For i = 2 To Sheets("Matières").Range("A1").End(xlDown).Row 'J'ajoute à la combobox les matières .MATIERE_A_MODIFIE.AddItem (Sheets("Matières").Range("A" & i).Value) Next i 'Combo box values are ListIndex values .MATIERE_A_MODIFIE.BoundColumn = 0 'Set combo box to first entry .MATIERE_A_MODIFIE.ListIndex = 0 End With 'Afficher le formulaire MODIF_MATIERES.Show End Sub
Désolé RV je vais te demander un petit service si tu veux bien.
Mon devoir je dois le rendre vendredi et j'ai un pb au niveau des boutons valider pourrais tu me donner un exemple d'algo pour :
- un ajout
- une modification
- une suppression
Si j'aurais plus de temps j'aurai essayé de le trouver par moi-même ms la je ne pourrais....
Merci beaucoup pour la liste déroulante!!!
Bien que je sois ici pour t'aider et non pas pour faire l'exercice à ta place, voici ce que tu pourrais faire pour les boutons valider:
avec l'userform AJOUT_MATIERE:
Voici maintenant ce que tu pourrais mettre avec l'userform MODIF_MATIERES:
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 Private Sub VALIDER_Click() Dim vnom As String, c As Range vnom = Me.AJOUT_MATIERE.Value 'Je recherche la matière dans la colonne A Set c = Columns("A:A").Find(What:=vnom) 'Si la matière n'existe pas alors on l'insère à la suite des autres If c Is Nothing Then derlign = Sheets("Matières").Range("A1").End(xlDown).Row + 1 Range("A" & derlign).Value = vnom 'Si la matière existe on envois un message Else MsgBox "Cette Matière existe dèjà !" End If End SubEnfin avec l'userform SUPPRESSION_MATIERE:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub VALIDER_Click() Dim vnom As String, c As Range, lign As Long vnom = MODIF_MATIERES.MATIERE_A_MODIFIE.Text 'Je recherche dans la colonne A la matière à modifier Set c = Sheets("Matières").Columns("A:A").Find(What:=vnom) 'Si la matière existe alors on remplace le nom If Not c Is Nothing Then c.Value = Me.NOUVEAU_NOM_MATIERE.Value End If End SubCeci est l'une des méthodes dont tu peux te servir. Essaye de l'appliquer as tes autres userforms. Bon courage pour le reste. Si tu as des questions n'hésite pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub VALIDER_Click() Dim vnom As String, c As Range vnom = Me.SUPPRESSION_MATIERES.Text Set c = Sheets("Matières").Columns("A:A").Find(What:=vnom) 'Si la matière existe alors on supprime la ligne entière If Not c Is Nothing Then c.EntireRow.Delete End If End Sub
A+
Pour l'ajout d'un éléve j'ai fait ça :
Ca me dit que j'ai faux
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
49 Private Sub VALIDER_Click() If Me.classe_CONCERNEE.ListIndex = 0 Then Dim vnom As String, c As Range vnom = Me.AJOUT.Value 'Je recherche le nom dans la colonne A Set c = Columns("A:A").Find(What:=vnom) 'Si le nom n'existe pas alors on l'insère à la suite des autres If c Is Nothing Then derlign = Sheets("Classes").Range("A1").End(xlDown).Row + 1 Range("A" & derlign).Value = vnom 'Si le nom de l'éléve existe on envoie un message Else MsgBox "Cet éléve existe dèjà !" End If End If If Me.classe_CONCERNEE.ListIndex = 1 Then Dim vnom As String, c As Range vnom = Me.AJOUT.Value 'Je recherche le nom dans la colonne b Set c = Columns("B:B").Find(What:=vnom) 'Si le nom n'existe pas alors on l'insère à la suite des autres If c Is Nothing Then derlign = Sheets("Classes").Range("B1").End(xlDown).Row + 1 Range("b" & derlign).Value = vnom 'Si le nom de l'éléve existe on envoie un message Else MsgBox "Cet éléve existe dèjà !" End If End If If Me.classe_CONCERNEE.ListIndex = 2 Then Dim vnom As String, c As Range vnom = Me.AJOUT.Value 'Je recherche le nom dans la colonne b Set c = Columns("c:c").Find(What:=vnom) 'Si le nom n'existe pas alors on l'insère à la suite des autres If c Is Nothing Then derlign = Sheets("Classes").Range("c1").End(xlDown).Row + 1 Range("c" & derlign).Value = vnom 'Si le nom de l'éléve existe on envoie un message Else MsgBox "Cet éléve existe dèjà !" End If End If End Sub
slt,
tout d'abord si tu devrais déclarer tes variables dès le début comme ci-dessous, et donc supprimer toutes les autres.
Ensuite dans le fichier que tu m'as donnée le textbox que tu appelles Me.AJOUT s'appelle Me.textbox1 (à vérifier).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Private Sub VALIDER_Click() Dim vnom As String, c As Range
maintenant pour améliorer un peu plutot que d'avoir une série de if et end if tu peux-mettre :
Tu es en bonne voie. Je pense que le temps va te manquer mais on pourrait l'optimiser avec une boucle. mais ça fonctionne ne change rien.
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 Private Sub VALIDER_Click() Dim vnom As String, c As Range 'Si ........ alors If Me.classe_CONCERNEE.ListIndex = 0 Then vnom = Me.TextBox1.Value 'Je recherche le nom dans la colonne A Set c = Columns("A:A").Find(What:=vnom) 'Si le nom n'existe pas alors on l'insère à la suite des autres If c Is Nothing Then derlign = Sheets("Classes").Range("A1").End(xlDown).Row + 1 Range("A" & derlign).Value = vnom 'Si le nom de l'éléve existe on envoie un message Else MsgBox "Cet éléve existe dèjà !" End If 'Sinon si ...... alors ElseIf Me.classe_CONCERNEE.ListIndex = 1 Then 'Ton code 'Sinon si ..... alors ElseIf Me.classe_CONCERNEE.ListIndex = 2 Then 'Ton Code End If End Sub
A+
Quand je fais ce code, excel me souligne en jaune valider et end sub
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 Private Sub VALIDER_Click() If Me.classe_CONCERNEE.ListIndex = 0 Then vnom = Me.AJOUT.Value 'Je recherche le nom dans la colonne A Set c = Columns("A:A").Find(What:=vnom) 'Si le nom n'existe pas alors on l'insère à la suite des autres If c Is Nothing Then derlign = Sheets("Classes").Range("A1").End(xlDown).Row + 1 Range("A" & derlign).Value = vnom 'Si le nom de l'éléve existe on envoie un message Else MsgBox "Cet éléve existe dèjà !" End If ElseIf Me.classe_CONCERNEE.ListIndex = 1 Then vnom = Me.AJOUT.Value 'Je recherche le nom dans la colonne b Set c = Columns("B:B").Find(What:=vnom) 'Si le nom n'existe pas alors on l'insère à la suite des autres If c Is Nothing Then derlign = Sheets("Classes").Range("B1").End(xlDown).Row + 1 Range("B" & derlign).Value = vnom 'Si le nom de l'éléve existe on envoie un message Else MsgBox "Cet éléve existe dèjà !" End If ElseIf Me.classe_CONCERNEE.ListIndex = 2 Then vnom = Me.AJOUT.Value 'Je recherche le nom dans la colonne b Set c = Columns("c:c").Find(What:=vnom) 'Si le nom n'existe pas alors on l'insère à la suite des autres If c Is Nothing Then derlign = Sheets("Classes").Range("c1").End(xlDown).Row + 1 Range("C" & derlign).Value = vnom 'Si le nom de l'éléve existe on envoie un message Else MsgBox "Cet éléve existe dèjà !" End If End Sub
il manque un end if :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Else MsgBox "Cet éléve existe dèjà !" End if End If End Sub
Merci ça a fonctionné!! suite des pb....
Dans mes listes déroulantes rien n'apparaît!!!
Voici les algos pour la modification des noms des éléves :
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 Private Sub ComboBox1_Change() Dim i As Long If Me.ComboBox1.ListIndex = 0 Then Me.Nom_Eleves.Clear For i = 2 To Range("A2").End(xlDown).Row Me.Nom_Eleves.AddItem (Sheets("Feuil1").Range("A" & i).Value) Next i ElseIf Me.ComboBox1.ListIndex = 1 Then Me.Nom_Eleves.Clear For i = 2 To Range("B2").End(xlDown).Row Me.Nom_Eleves.AddItem (Sheets("Feuil1").Range("B" & i).Value) Next i ElseIf Me.ComboBox1.ListIndex = 2 Then Me.Nom_Eleves.Clear For i = 2 To Range("C2").End(xlDown).Row Me.Nom_Eleves.AddItem (Sheets("Feuil1").Range("C" & i).Value) Next i End If End SubMerci beaucoup de m'aider car je suis dépassée!!!
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 VALIDER_Click() If Me.classe_CONCERNEE.ListIndex = 0 Then vnom = Me.MODIF_ELEVES.Nom_Eleves.Text 'Je recherche le nom dans la colonne à modifier Set c = Sheets("Classes").Columns("A:A").Find(What:=vnom) 'Si le nom existe alors on remplace le nom If Not c Is Nothing Then c.Value = Me.NOUVEAU_NOM.Value End If If Me.classe_CONCERNEE.ListIndex = 1 Then vnom = Me.MODIF_ELEVES.Nom_Eleves.Text 'Je recherche le nom dans la colonne à modifier Set c = Sheets("Classes").Columns("B:B").Find(What:=vnom) 'Si le nom existe alors on remplace le nom If Not c Is Nothing Then c.Value = Me.NOUVEAU_NOM.Value End If If Me.classe_CONCERNEE.ListIndex = 2 Then vnom = Me.MODIF_ELEVES.Nom_Eleves.Text 'Je recherche le nom dans la colonne à modifier Set c = Sheets("Classes").Columns("C:C").Find(What:=vnom) 'Si le nom existe alors on remplace le nom If Not c Is Nothing Then c.Value = Me.NOUVEAU_NOM.Value End If End If End Sub
dans ton fichier avec le userform modif_eleves tu avais une listbox intitulé "classe_CONCERNEE". donc normalement ce devrait être :
Maintenant si tu as changé la listbox par un combobox dont le nom est bien "Combobox1" alors ton code devrait fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub classe_CONCERNEE_Change() Dim i As Long With Me 'Si la 1ere valeur de la listbox (TS1) est sélectionnée alors 'j'ajoute au combobox la liste des élèves correspondant If .classe_CONCERNEE.ListIndex = 0 Then 'ETC....
A CONDITION que tu ai pensé à modifié aussi le code qui remplit cette combobox1 dans le code du bouton modifier de l'userform "MODIFICATION_ELEVES".Si c'est la cas pense lorsque tu fais des changements à vérifier les codes qui sont liés.
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 MODIFIER_Click() Unload Me With MODIF_ELEVES '******************************************** 'INITIALISATION DU MENU DEROULANT '******************************************** 'remplacer ce qu'il y a en rouge par ComboBox1 .classe_CONCERNEE.AddItem "TS1" .classe_CONCERNEE.AddItem "TS2" .classe_CONCERNEE.AddItem "TS3" '********************************************* 'INITIALISATION DU MENU DEROULANT '******************************************** End With 'Afficher le formulaire MODIF_ELEVES.Show End Sub
On verra après pour le bouton valider.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager