XL 2016 Liste déroulante et création de cellules (en fonction du choix effectué dans la liste)

ntb

XLDnaute Nouveau
Bonjour à tous,

J'aimerai faire apparaitre du texte ou des valeurs en fonction du choix que j'effectue dans une liste déroulante.
Si je choisi par exemple la valeur "Création de cellules" dans le menu déroulant j'aimerai que 2 lignes en dessous s'affiche des valeurs dans les cellules comme par exemple "première cellule créée" puis la ligne d'en dessous "deuxième cellule créée"
Lorsque je choisi "pas de création" j'aimerai que rien n'apparaisse dans les cellules en dessous.

Avez-vous une solution pour cela? Si vous ne comprenez pas ma requête n'hésitez pas ;)
 

Pièces jointes

  • Test création de cellule-menu déroulant.xlsx
    10.1 KB · Affichages: 25
Solution
Bonjour ntb

Je viens de modifier le code suivant ta derniere demande. Dans ce cas, on utilise la procedure evenementielle WorkSheet_Change qui se declenche au changement de du contenu de la cellule D9.

Voir fichier joint
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.Volatile
    If Not Intersect(Target, [D9]) Is Nothing Then
        If Target = "Lignes masquées" Then
            Rows("11:14").EntireRow.Hidden = True
        ElseIf Target = "Lignes apparentes" Then
            Rows("11:14").EntireRow.Hidden = False
        End If
    End If
End Sub

Fred0o

XLDnaute Barbatruc
Bonjour ntb

En fait vu que je n'ai pas ton fichier, je ne peux faire que des suppositions. il est très important de mettre le code dans la feuille en question, soit Feuil1 dans l'exemple. Le moyen de s'en assurer est de te mettre dans EXCEL sur cette feuille puis click droit sur le nom de l'onglet et visualiser le code.
il s'agit d'une procédure évènementielle.
 

ntb

XLDnaute Nouveau
Bonjour ntb

En fait vu que je n'ai pas ton fichier, je ne peux faire que des suppositions. il est très important de mettre le code dans la feuille en question, soit Feuil1 dans l'exemple. Le moyen de s'en assurer est de te mettre dans EXCEL sur cette feuille puis click droit sur le nom de l'onglet et visualiser le code.
il s'agit d'une procédure évènementielle.
Bonjour Fred0o,

j'ai essayé mais ça ne marche pas. Ci-joint tu trouveras le fichier :)
Peux-tu écrire ici ce que tu mets dans la macro car malheureusement je n'arrive pas à accéder aux macros depuis mon ordinateur...

Merci encore
 

Pièces jointes

  • Test cellules masquées-menu déroulant.xlsx
    10.8 KB · Affichages: 4

ntb

XLDnaute Nouveau
Bonjour ntb

En fait vu que je n'ai pas ton fichier, je ne peux faire que des suppositions. il est très important de mettre le code dans la feuille en question, soit Feuil1 dans l'exemple. Le moyen de s'en assurer est de te mettre dans EXCEL sur cette feuille puis click droit sur le nom de l'onglet et visualiser le code.
il s'agit d'une procédure évènementielle.
Voici la macro que j'avais testé :

Private Sub Cellule_SelectionChange(ByVal Target As Range)

Target = Range("D9")
If Range("D9") = "Lignes masquées" Then
Rows("11:14").Hidden = False
Else
If Range("D9") = "Lignes apparentes" Then
Rows("11:14").Hidden = True
End If
End If

End Sub
 

Fred0o

XLDnaute Barbatruc
Bonjour ntb

Pas sur d'avoir bien compris ce que tu veux. Voici le fichier complété et corrigé.
Il ne faut changer le nom des Sub évènementielles.
Dis moi si ça te convient
 

Pièces jointes

  • Test cellules masquées-menu déroulant.xlsm
    17 KB · Affichages: 9
Dernière édition:

ntb

XLDnaute Nouveau
Bonjour ntb

Pas sur d'avoir bien compris ce que tu veux. Voici le fichier complété et corrigé.
Il ne faut changer le nom des Sub évènementielles.
Dis moi si ça te convient
Pour être un peu plus claire j'aimerai que lorsque je clique sur "Lignes masquées" les lignes 11-12-13-14 soient masquées. Si elles sont masquées et que je clique ensuite sur "Lignes apparentes" j'aimerai que les lignes 11-12-13-14 réapparaissent et ne soient plus masquées.
J'aimerai que cela se lance automatiquement à chaque fois que je sélectionne un des deux choix du menu déroulant et que je ne sois pas obligée d'exécuter la macro à chaque fois.

Peut-être que je n'ai pas bien compris le fonctionnement de "Private Sub"...

C'est très gentil que tu m'aides et j'espère que mon explication est plus claire sinon n'hésite pas :)
 

Fred0o

XLDnaute Barbatruc
Bonjour ntb

En fait, le dernier que je t'ai fourni au post #8 fait exactement ce que tu demandes. L'as-tu testé ?
Dans le code fourni, plus besoin de liste déroulante, les lignes se masquent et demasquent et le texte de le cellule change tout seul.
Pour les procedures évènementielles, elle se situent dans la feuille en question (ici Feuil1) et pas dans un module. Elles commencent par Private, ce qui veut dire qu'on ne peut pas les lancer en cliquant sur un bouton ni en les sélectionnant en choisissant "Développeur - Macro - Executer".
Leur nom est code d'origine par Excel et il ne faut surtout pas changer ce nom :
- Worksheet_SelectionChange = S'execute lorsqu'on change la cellule sélectionnée
- Worksheet_Change = S'execute lorsqu'on change le contenu d'une cellule
Ce sont les plus utiles et les plus utilisées. Il en existe aussi lorsqu'on change de feuille, lorsqu'on lance le calcul, clic droit, clic gauche, ...

l'image ci-dessous te montre ou doit se situer la macro et le fait que le nom des macros évènementielles est immuable.

1622081639191.png


Ici, la liste des macros évènementielles :

1622081828981.png
 
Dernière édition:

ntb

XLDnaute Nouveau
Bonjour ntb

En fait, le dernier que je t'ai fourni au post #8 fait exactement ce que tu demandes. L'as-tu testé ?
Dans le code fourni, plus besoin de liste déroulante, les lignes se masquent et demasquent et le texte de le cellule change tout seul.
Pour les procedures évènementielles, elle se situent dans la feuille en question (ici Feuil1) et pas dans un module. Elles commencent par Private, ce qui veut dire qu'on ne peut pas les lancer en cliquant sur un bouton ni en les sélectionnant en choisissant "Développeur - Macro - Executer".
Leur nom est code d'origine par Excel et il ne faut surtout pas changer ce nom :
- Worksheet_SelectionChange = S'execute lorsqu'on change la cellule sélectionnée
- Worksheet_Change = S'execute lorsqu'on change le contenu d'une cellule
Ce sont les plus utiles et les plus utilisées. Il en existe aussi lorsqu'on change de feuille, lorsqu'on lance le calcul, clic droit, clic gauche, ...

l'image ci-dessous te montre ou doit se situer la macro et le fait que le nom des macros évènementielles est immuable.

Regarde la pièce jointe 1106725

Ici, la liste des macros évènementielles :

Regarde la pièce jointe 1106726
Merci pour tes explications!
Lorsque j'applique tout cela il s'affiche cela :
1622101188348.png

Est-ce que j'ai fait une erreur de recopie?
 

Fred0o

XLDnaute Barbatruc
Bonjour ntb

Je ne vois pas d'erreur dans ton screenshot, mais probablement un point d'arret. Lorsque tu obtiens cela, essaie de faire terminer la macro en appuyant sur la touche F8.
Pour voir si tu as un point d'arret dans la macro, il te faut chercher le cercle dans la marge a gauche de l'instruction, lorsque la macro n'est pas en cours d'execution. Il se peut que chez toi, e ne soit pas en couleur violette. Pou supprimer le point d'arret, fais un clic gauche sur le cercle.

1622101847479.png
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Bonjour ntb

Je viens de modifier le code suivant ta derniere demande. Dans ce cas, on utilise la procedure evenementielle WorkSheet_Change qui se declenche au changement de du contenu de la cellule D9.

Voir fichier joint
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.Volatile
    If Not Intersect(Target, [D9]) Is Nothing Then
        If Target = "Lignes masquées" Then
            Rows("11:14").EntireRow.Hidden = True
        ElseIf Target = "Lignes apparentes" Then
            Rows("11:14").EntireRow.Hidden = False
        End If
    End If
End Sub
 

Pièces jointes

  • Test cellules masquées-menu déroulant_V2.xlsm
    20.3 KB · Affichages: 8
Dernière édition:

ntb

XLDnaute Nouveau
Bonjour ntb

Je viens de modifier le code suivant ta derniere demande. Dans ce cas, on utilise la procedure evenementielle WorSheet_Change qui se declenche au changement de du contenu de la cellule D9.

Voir fichier joint
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.Volatile
    If Not Intersect(Target, [D9]) Is Nothing Then
        If Target = "Lignes masquées" Then
            Rows("11:14").EntireRow.Hidden = True
        ElseIf Target = "Lignes apparentes" Then
            Rows("11:14").EntireRow.Hidden = False
        End If
    End If
End Sub
Merci beaucoup de ton aide (et de ta patience ahaaaa) c'est exactement ce que je voulais! :)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette