Excel : Listé déroulante
Vixage
-
Vixage Messages postés 20 Statut Membre -
Vixage Messages postés 20 Statut Membre -
Bonjour,
Sous Excel, dans une colonne j'ai une liste déroulante qui me permet d'afficher le nom de différentes équipes. Sachant que des personnes sont réparties entre chaque équipe, je souhaiterai que dans la colonne de droite, je puisse avoir une liste déroulante qui me permet de choisir des personnes mais qui sont uniquement dans l'équipe sélectionnée via ma première liste déroulante.
Je pense que dans ce cas, seule une macro peut faire l'affaire...
Merci pour votre aide
Sous Excel, dans une colonne j'ai une liste déroulante qui me permet d'afficher le nom de différentes équipes. Sachant que des personnes sont réparties entre chaque équipe, je souhaiterai que dans la colonne de droite, je puisse avoir une liste déroulante qui me permet de choisir des personnes mais qui sont uniquement dans l'équipe sélectionnée via ma première liste déroulante.
Je pense que dans ce cas, seule une macro peut faire l'affaire...
Merci pour votre aide
A voir également:
- Excel : Listé déroulante
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
2 réponses
Effectivement, pour avoir une liste déroulante on est obligé de passer par une macro (sinon on peut le faire de manière moche avec plein de blancs dans la liste beurk). Il est possible aussi de faire une validation par formule en L1C1 le résultat serait le même sans liste déroulante.
Donc en macro, pour le faire, personnellement je créerai un plage nommée (type liste_personnes) que la macro met à jour à chaque modification de l'entrée "équipe". La validation se faisant sur la plage nommée.
Donc à la base créer une plage "liste_pers", sur la cellule equipe_onchange faire .worksheet.range("liste_pers")=...
Et le tour est joué.
Irem
Donc en macro, pour le faire, personnellement je créerai un plage nommée (type liste_personnes) que la macro met à jour à chaque modification de l'entrée "équipe". La validation se faisant sur la plage nommée.
Donc à la base créer une plage "liste_pers", sur la cellule equipe_onchange faire .worksheet.range("liste_pers")=...
Et le tour est joué.
Irem
Bonjour,
Effectivement, le mieux est d'utiliser un code VBA, à placer sur la feuille du classeur voulue.
Voilà, c'est une première ébauche. J'espère que ça peut aider.
Effectivement, le mieux est d'utiliser un code VBA, à placer sur la feuille du classeur voulue.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strPlage As String 'Variable pour définir la plage de sélection utile pour la liste 2 (liée à la première)
'Définir la colonne (ici égale à 4 donc à D - qui peut être changée) dans laquelle on veut placer la seconde liste déroulante
If ActiveCell.Column = 4 Then
'On analyse la valeur choisie de la première liste située dans la colonne précédente à D (donc C - qui peut être modifiée)
Select Case ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column - 1)
'Par le case, on reprend chaque valeur de la première liste déroulante.
'Pour l'exemple, j'ai défini un première liste qui contient les valeurs 1, 2 et 3
Case 1
'Quand la première liste correspond à 1, alors la seconde liste récupère les valeurs placées sur la plage de B1 à B3 (qui peut être modifiée)
strPlage = "=$B$1:$B$3"
Case 2
'Quand la première liste correspond à 2, alors la seconde liste récupère les valeurs placées sur la plage de B4 à B5 (qui peut être modifiée)
strPlage = "=$B$4:$B$5"
Case 3
'Quand la première liste correspond à 3, alors la seconde liste récupère les valeurs placées sur la plage de B6 à B9 (qui peut être modifiée)
strPlage = "=$B$6:$B$9"
Case Else
'Quand la valeur n'appartient pas à la première liste, on affiche un message et on stoppe, on sort du programme
MsgBox "Vous devez spécifier une valeur de la liste", vbCritical + vbOKOnly, "Erreur de saisie !"
Exit Sub
End Select
'Dans la cellule activée, on définie la liste qui correspond à la plage récupérée dans strPlage
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=strPlage
End With
End If
End Sub
Voilà, c'est une première ébauche. J'espère que ça peut aider.
Merci beaucoup pour ton aide effectivement ca m'a bien aidé.
Par contre, quand je rentre ce code VBA et que je l'active rien ne se passe. Je n'ai pas de liste déroulante.
(A savoir que les données des listes déroulantes se trouvent sur une autre feuille du classeur)
Tu peux encore m'aider stp?
Merci d'avance
Par contre, quand je rentre ce code VBA et que je l'active rien ne se passe. Je n'ai pas de liste déroulante.
(A savoir que les données des listes déroulantes se trouvent sur une autre feuille du classeur)
Tu peux encore m'aider stp?
Merci d'avance