Liste déroulante à sélection multiples
Résolu/Fermé
PaulCharente
Messages postés
9
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
29 avril 2020
-
Modifié le 18 nov. 2019 à 11:34
PaulCharente Messages postés 9 Date d'inscription lundi 18 novembre 2019 Statut Membre Dernière intervention 29 avril 2020 - 19 nov. 2019 à 18:04
PaulCharente Messages postés 9 Date d'inscription lundi 18 novembre 2019 Statut Membre Dernière intervention 29 avril 2020 - 19 nov. 2019 à 18:04
A voir également:
- Liste déroulante à sélection multiples
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Google sheet liste déroulante - Accueil - Guide bureautique
- Supprimer liste déroulante excel - Forum Excel
- Supprimer une liste déroulante excel - Forum Word
4 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
18 nov. 2019 à 14:48
18 nov. 2019 à 14:48
Bonjour,
un exemple:
https://www.cjoint.com/c/IKsnWdZLdxQ
un exemple:
https://www.cjoint.com/c/IKsnWdZLdxQ
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
18 nov. 2019 à 22:19
18 nov. 2019 à 22:19
Bonjour
En partant du fichier envoyé par le Pivert (que je salue au passage), en feuille 2 une combox qui s'affiche à la sélection d'une cellule dans la colonne déterminée :
https://www.cjoint.com/c/IKsvsPl00ev
Cdlmnt
Via
En partant du fichier envoyé par le Pivert (que je salue au passage), en feuille 2 une combox qui s'affiche à la sélection d'une cellule dans la colonne déterminée :
https://www.cjoint.com/c/IKsvsPl00ev
Cdlmnt
Via
PaulCharente
Messages postés
9
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
29 avril 2020
18 nov. 2019 à 22:32
18 nov. 2019 à 22:32
Wooooaaaawwww!
C'est exactement ça!
Et merci pour les notes dans le code pour que je puisse l'intégrer facilement avec mes petites mains pleines de gros doigts. Des jours que je cherche une solution par moi même sans y arriver.
Une grosse épine du pieds en moins!
^^
C'est exactement ça!
Et merci pour les notes dans le code pour que je puisse l'intégrer facilement avec mes petites mains pleines de gros doigts. Des jours que je cherche une solution par moi même sans y arriver.
Une grosse épine du pieds en moins!
^^
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
19 nov. 2019 à 17:00
19 nov. 2019 à 17:00
Bonjour
Il faut mettre les 2 premiers code dans la même sub
2) tes listes de choix étant en colonnes A et C je ne vois pas comment les colonnes après pourrait avoir une incidence (sauf formule en A ou C u faisant appel
Quoiqu'il en soit pour retourner dans une cellule de O la liste des jours de la période il faut créer une fonction personnalisée que tu mets dans un module de l'éditeur VBA
Tu utilise ensuite la fonction comme toute fonction Excel selon la syntaxe :
=periode_jours(cellule date début;cellule date fin
par ex =periode_jours(L2;M2)
Cdlmnt
Via
Il faut mettre les 2 premiers code dans la même sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' A la selection d'une cellule de la feuille If Not Intersect([G2:G1000], Target) Is Nothing And Target.Count = 1 Then ' zone de saisie possible A MODIFIER si nécessaire, si selection d'une celle dans cette zone alors ... Me.ListBox1.ListIndex = -1 'RAZ Listbox Me.ListBox1.ListFillRange = "THEMES!A2:A14" 'Alimentation de la listbox A MODIFIER si necessaire Me.ListBox1.Height = 176 'hauteur listbox Me.ListBox1.Width = 105 'largeur listbox Me.ListBox1.Top = Target.Top 'position haut listbox = haut cellule Me.ListBox1.Left = Target.Left + Target.Width ' position gauche listbox= position gauche cellule+largeur cellule => revient à positionner à droite de la cellule Me.ListBox1.Visible = True 'rend visible la listbox Else Me.ListBox1.Visible = False 'si saisie dans une zone différente masque la listbox End If If Not Intersect([H2:H1000], Target) Is Nothing And Target.Count = 1 Then ' zone de saisie possible A MODIFIER si nécessaire, si selection d'une celle dans cette zone alors ... Me.ListBox2.ListIndex = -1 'RAZ Listbox Me.ListBox2.ListFillRange = "THEMES!C2:C27" 'Alimentation de la listbox A MODIFIER si necessaire Me.ListBox2.Height = 360 'hauteur listbox Me.ListBox2.Width = 200 'largeur listbox Me.ListBox2.Top = Target.Top 'position haut listbox = haut cellule Me.ListBox2.Left = Target.Left + Target.Width ' position gauche listbox= position gauche cellule+largeur cellule => revient à positionner à droite de la cellule Me.ListBox2.Visible = True 'rend visible la listbox Else Me.ListBox2.Visible = False 'si saisie dans une zone différente masque la listbox End If End Sub
2) tes listes de choix étant en colonnes A et C je ne vois pas comment les colonnes après pourrait avoir une incidence (sauf formule en A ou C u faisant appel
Quoiqu'il en soit pour retourner dans une cellule de O la liste des jours de la période il faut créer une fonction personnalisée que tu mets dans un module de l'éditeur VBA
Function periode_jours(dateA As Range, dateB As Range) Application.Volatile For n = dateA To dateB + 1 js = Application.WorksheetFunction.Choose(Application.WorksheetFunction.Weekday(n, 2), "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche") aff = aff & js & ", " Next periode_jours = Left(aff, Len(aff) - 2) End Function
Tu utilise ensuite la fonction comme toute fonction Excel selon la syntaxe :
=periode_jours(cellule date début;cellule date fin
par ex =periode_jours(L2;M2)
Cdlmnt
Via
PaulCharente
Messages postés
9
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
29 avril 2020
19 nov. 2019 à 18:04
19 nov. 2019 à 18:04
Je te remercie via55. C'est vraiment super.
Et vu que tu explique bien comment faire en plus de donner la solution je progresse en même temps (un peu).
Je teste tous ça dès demain matin.
Bonne soirée.
Paul
Et vu que tu explique bien comment faire en plus de donner la solution je progresse en même temps (un peu).
Je teste tous ça dès demain matin.
Bonne soirée.
Paul
PaulCharente
Messages postés
9
Date d'inscription
lundi 18 novembre 2019
Statut
Membre
Dernière intervention
29 avril 2020
Modifié le 19 nov. 2019 à 16:13
Modifié le 19 nov. 2019 à 16:13
Bonjour,
merci encore via55. j'ai pu adapter ta macro sur mon fichier pro! ^^
ça marche tellement bien que j'ai voulu faire la même chose dans une autre colonne sur la même page...
Et depuis je m'arrache les cheveux car apparemment on ne peut pas avoir 2 "worksheet_SelectionChange" sur la même page, il faut les compiler. Chose que je ne sais pas faire et dont je ne trouve pas d'explication sur internet.
Je n'avais pas connaissance de cette restriction sinon j'aurais directement demandé l'explication pour comprendre et pouvoir le faire moi-même.
Le message d'erreur affiché est :
Erreur de compilation:
Nom ambigu détecté: Worksheet_SelectionChange
Voici le code de la 1ère macro adapté à mon fichier (qui fonctionne quand utilisé seul) :
Et voici l'autre code (qui fonctionne seul également) :
Les deux mis ensembles à la suite me donnent le message d'erreur écris plus haut.
D'après ce que j'ai lu sur différent forum, on ne peut pas mettre 2 macro worksheet_selectionchange et il faut donc les compiler.
Merci par avance de votre aide, c'est vraiment apprécié. :-)
######
Je dois également trouver une autre formule ou macro, je vous en parle ici dès fois que la réalisation de celle-ci influe mes listes à choix multiple (si pas d’impact je ferais un post dédier) :
J'ai une colonne L avec un groupe date heure (représente le début), une colonne M avec un autre groupe date heure (représente la fin), je voudrais dans une colonne O renseigner automatiquement les jours de la semaine concernés sur la période (la différence entre les dates L et M sont comprise entre 1 et 4 jours généralement) sous le format "lundi, mardi, mercredi, jeudi, ...". C'est pour pouvoir à terme faire des statistiques de récurrence : exemple tel évènement arrive 8 fois sur 10 le mercredi.
Cordialement,
Paul
merci encore via55. j'ai pu adapter ta macro sur mon fichier pro! ^^
ça marche tellement bien que j'ai voulu faire la même chose dans une autre colonne sur la même page...
Et depuis je m'arrache les cheveux car apparemment on ne peut pas avoir 2 "worksheet_SelectionChange" sur la même page, il faut les compiler. Chose que je ne sais pas faire et dont je ne trouve pas d'explication sur internet.
Je n'avais pas connaissance de cette restriction sinon j'aurais directement demandé l'explication pour comprendre et pouvoir le faire moi-même.
Le message d'erreur affiché est :
Erreur de compilation:
Nom ambigu détecté: Worksheet_SelectionChange
Voici le code de la 1ère macro adapté à mon fichier (qui fonctionne quand utilisé seul) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' A la selection d'une cellule de la feuille
If Not Intersect([G2:G1000], Target) Is Nothing And Target.Count = 1 Then ' zone de saisie possible A MODIFIER si nécessaire, si selection d'une celle dans cette zone alors ...
Me.ListBox1.ListIndex = -1 'RAZ Listbox
Me.ListBox1.ListFillRange = "THEMES!A2:A14" 'Alimentation de la listbox A MODIFIER si necessaire
Me.ListBox1.Height = 176 'hauteur listbox
Me.ListBox1.Width = 105 'largeur listbox
Me.ListBox1.Top = Target.Top 'position haut listbox = haut cellule
Me.ListBox1.Left = Target.Left + Target.Width ' position gauche listbox= position gauche cellule+largeur cellule => revient à positionner à droite de la cellule
Me.ListBox1.Visible = True 'rend visible la listbox
Else
Me.ListBox1.Visible = False 'si saisie dans une zone différente masque la listbox
End If
End Sub
Private Sub Listbox1_Change() ' à tout changement dans la listbox
Dim i As Byte
Dim chaine As String
'boucle sur les éléments de la listbox
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
chaine = chaine & ListBox1.List(i) & ", "
End If
Next i
ActiveCell.Value = Left(chaine, Len(chaine) - 2) 'affichage dans la cellule de la chaine concaténée moins la dernière virgule et le dernier espace
End Sub
Private Sub Listbox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ' lorsque une touche est pressée quand la listbox est visible
If KeyCode = 13 Then ActiveCell.Offset(1).Select ' si touche Entrée déplacement à la cellule en dessous
End Sub
Et voici l'autre code (qui fonctionne seul également) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' A la selection d'une cellule de la feuille
If Not Intersect([H2:H1000], Target) Is Nothing And Target.Count = 1 Then ' zone de saisie possible A MODIFIER si nécessaire, si selection d'une celle dans cette zone alors ...
Me.ListBox2.ListIndex = -1 'RAZ Listbox
Me.ListBox2.ListFillRange = "THEMES!C2:C27" 'Alimentation de la listbox A MODIFIER si necessaire
Me.ListBox2.Height = 360 'hauteur listbox
Me.ListBox2.Width = 200 'largeur listbox
Me.ListBox2.Top = Target.Top 'position haut listbox = haut cellule
Me.ListBox2.Left = Target.Left + Target.Width ' position gauche listbox= position gauche cellule+largeur cellule => revient à positionner à droite de la cellule
Me.ListBox2.Visible = True 'rend visible la listbox
Else
Me.ListBox2.Visible = False 'si saisie dans une zone différente masque la listbox
End If
End Sub
Private Sub Listbox2_Change() ' à tout changement dans la listbox
Dim i As Byte
Dim chaine As String
'boucle sur les éléments de la listbox
For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) = True Then
chaine = chaine & ListBox2.List(i) & ", "
End If
Next i
ActiveCell.Value = Left(chaine, Len(chaine) - 2) 'affichage dans la cellule de la chaine concaténée moins la dernière virgule et le dernier espace
End Sub
Private Sub Listbox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ' lorsque une touche est pressée quand la listbox est visible
If KeyCode = 13 Then ActiveCell.Offset(1).Select ' si touche Entrée déplacement à la cellule en dessous
End Sub
Les deux mis ensembles à la suite me donnent le message d'erreur écris plus haut.
D'après ce que j'ai lu sur différent forum, on ne peut pas mettre 2 macro worksheet_selectionchange et il faut donc les compiler.
Merci par avance de votre aide, c'est vraiment apprécié. :-)
######
Je dois également trouver une autre formule ou macro, je vous en parle ici dès fois que la réalisation de celle-ci influe mes listes à choix multiple (si pas d’impact je ferais un post dédier) :
J'ai une colonne L avec un groupe date heure (représente le début), une colonne M avec un autre groupe date heure (représente la fin), je voudrais dans une colonne O renseigner automatiquement les jours de la semaine concernés sur la période (la différence entre les dates L et M sont comprise entre 1 et 4 jours généralement) sous le format "lundi, mardi, mercredi, jeudi, ...". C'est pour pouvoir à terme faire des statistiques de récurrence : exemple tel évènement arrive 8 fois sur 10 le mercredi.
Cordialement,
Paul
Modifié le 18 nov. 2019 à 20:21
Toutefois comment puis-je faire pour que la listebox n'apparaisse que lorsque que l'on clique sur la cellule à renseigner (sur votre exemple : F4) en format d'une liste déroulante (type combobox)?
Sachant que je dois en plus pouvoir reproduire cette formule (ou macro) sur de très nombreuses lignes (pare exemple toute la colonne F) avec à chaque fois la possibilité de faire de nouveaux choix.
Cordialement