liste et sous-listes en une cellule

polomoche

XLDnaute Nouveau
Bonjour à tous,

voici ce que j'aimerais faire :

J'ai une liste de matériels, classés par catégories.

J'aimerais dans une cellule donnée pouvoir sélectionner une catégorie (par liste déroulante), et que cela m'affiche une autre liste déroulante ou je sélectionnerais un matériel de cette catégorie, lequel deviendrait la valeur de ma cellule. Le tout donc sans avoir à changer de cellule, et sans utiliser de form.

En gros un peu comme quand on va dans l'onglet "Outils" il apparaît "Protection", "Macro" et "Options", et si je met ma souris sur "Macros" je fais apparaître une autre liste dans laquelle je peux sélectionner "Nouvelle Macro".

Au pire, si cela n'est pas possible, est-il possible simplement de faire une seule liste déroulante mais dans laquelle on puisse mettre des titres de catégories en gras ?

Je ne sais pas si je suis très clair, mais je vous remercie d'avance pour votre réponse.

Polomoche
 

polomoche

XLDnaute Nouveau
Re : liste et sous-listes en une cellule

:eek:

je suis au taf et mes accès internet sont filtrés. L'accès à ton lien m'est donc refusé sous le motif "site web dangereux".
Le plus drôle c'est quand j'essaie d'aller sur le site du PSG, ça indique "site à caractère sexuel".

Merci beaucoup pour ta réponse et la célérité de celle-ci, je regarderai ça ce soir à la maison.

Bonne journée
 

job75

XLDnaute Barbatruc
Re : liste et sous-listes en une cellule

Bonjour polomoche, salut JB,

Fichier joint.

J'ai fait cette macro (clic droit sur l'onglet de la feuille et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$3" Then Exit Sub
With Target.Validation
.Delete
If Application.CountIf([Liste], Target) Then
.Add xlValidateList, Formula1:="=" & Target
SendKeys "%{DOWN}"
Else
.Add xlValidateList, Formula1:="=Liste"
End If
End With
End Sub

Edit : pour comprendre la macro, voir les noms définis dans la feuille (menu Insertion-Nom-Définir)

A+
 

Pièces jointes

  • polomoche.xls
    36 KB · Affichages: 126
  • polomoche.xls
    36 KB · Affichages: 127
  • polomoche.xls
    36 KB · Affichages: 127
Dernière édition:

polomoche

XLDnaute Nouveau
Re : liste et sous-listes en une cellule

Merci !

Malin le CountIf !

Il me faudra quelques adaptations (genre les noms de mes catégories ont des espaces donc je peux pas appeler les listes correspondantes pareil) mais ça devrait le faire.

Bonne soirée
 

job75

XLDnaute Barbatruc
Re : liste et sous-listes en une cellule

Re,

Les espaces ne sont pas un problème.

Pour les noms dans la feuille, les remplacer par des tirets _ ou les supprimer.

La macro est à modifier légèrement :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$3" Then Exit Sub
With Target.Validation
.Delete
If Application.CountIf([Liste], Target) Then
.Add xlValidateList, Formula1:="=" & [COLOR="Red"]Replace(Target, " ", "_")[/COLOR]
SendKeys "%{DOWN}"
Else
.Add xlValidateList, Formula1:="=Liste"
End If
End With
End Sub

A+
 

Pièces jointes

  • polomoche.xls
    36.5 KB · Affichages: 92
  • polomoche.xls
    36.5 KB · Affichages: 87
  • polomoche.xls
    36.5 KB · Affichages: 89

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : liste et sous-listes en une cellule

Les noms de champ pour chaque catégorie ne sont pas nécessaires (fastidieux)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$C$2" And Target.Count = 1 Then
     Target.Validation.Delete
     If Not IsError(Application.Match(Target, [choix1], 0)) Then
       Target.Validation.Add xlValidateList, Formula1:="=" & "offset(Choix2,1,match(C2,Choix1,0)-1,countA(offset(Choix2,,match(C2,Choix1,0)-1))-1)"
     Else
       Target.Validation.Add xlValidateList, Formula1:="=choix1"
     End If
  End If
End Sub

JB
 

Pièces jointes

  • ListeCascade1celluleCat.xls
    31 KB · Affichages: 126
  • ListeCascade1celluleCat.xls
    31 KB · Affichages: 123
  • ListeCascade1celluleCat.xls
    31 KB · Affichages: 126
Dernière édition:

Discussions similaires

Réponses
12
Affichages
310