Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Liste déroulante contextuelle

  • Initiateur de la discussion Initiateur de la discussion Brig
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Brig

XLDnaute Nouveau
Bonjour à tous,

En avant propos, je tiens à vous dire que je suis débutante sur le forum et un peu aussi sur excel
Voilà mon problème, j'ai créé un fichier de suivi des heures des salariés avec un calendrier perpétuel. Ce fichier me permet de suivre les heures réalisées, la modulation, le solde des CP,...
Les salariés n'auront accès qu'aux cellules matin et après midi de chaque colonne. Ils peuvent entrer des nombres (d'heures mais au format standard), ou du texte (comme CP, RECUP, FORM ou ABS).
Mon problème est que je souhaiterai ouvrir un menu contextuel, ou une liste déroulante uniquement si ils saisissent ABS dans la cellule. Ce menu contextuel proposerait une liste comme MALADIE, abs pour enfant malade, congé mat, congé pat,...
Cette opération est-elle possible dans excel?
Merci de vos réponses
 
Bonjour JHA,

Merci pour cette solution. Cela dit, est-il possible que le texte de la liste déroulante remplace le mot abs après avoir sélectionné le type d'absence?

Merci de votre réponse
 
Bonjour à tous,

Avec cette méthode, ce n'est pas possible car pour la liste déroulante, je fais référence à cette colonne.
Autrement il faut passer par du code VBA mais moi je ne sais pas faire, patience, une âme charitable va certainement te donner la solution.

JHA
 
Bonsoir à tous

D'accord merci, mais plus j'y pense et plus je me dis que le VBA est indispensable en effet.
Plus j'y pense et plus je me dis qu'il serait non pas indispensable mais envisageable que le demandeur pense à joindre un fichier exemple (anonymisé) comme le suggère la charte du forum que tout nouveau membre prend bien sur le temps de lire avant de poster son premier message 😉

Ce fichier exemple permettait au répondeurs de se mettre à la tâche sans perdre de temps à recréer un fichier qui existe déjà sur le disque dur de Brig.
 
Re

Voila c'est tout de suite plus parlant avec le fichier.
Alors tout petit début de piste
(A mettre dans le code de la feuille et pas dans un module standard)
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
Dim Choix
If T.Count > 1 Then Exit Sub
Select Case T.Column
Case 3, 4 ' à compléter avec les numéros de colonnes adéquats
Choix = InputBox("1:CP,2:RECUP,3:FORM") ' à compléter
MsgBox Choose(Choix, "CONG", "CP", "FORM") ' à compléter
Case Else
'
End Select
End Sub

Brig
Je te suggère de chercher dans les archives des questions similaires ou l'on te parlera d'userform qui s'affiche en s'alignant sur le coin gauche de la cellule adjacente de la cellule active ou aussi de personnalisation du menu contextuel d'Excel
Bref plein de choses qui existent déjà sur le forum que je n'ai pas envie de réécrire ce soir.
Donc je cède la place à mes petits camarades de jeu 😉
 
Re

Finalement, j'avais un peu de temps à tuer, j'ai donc persévérer un chouia
Donc avec un Userform (dans le genre ci-dessous)

Quand on clique sur un OptionButtion , sa caption s'inscrit dans la cellule active et l'useform se masque.

Dans un module de classe
VB:
Public WithEvents OBtn As MSForms.OptionButton
Public Motif
Private Sub OBtn_Click()
    Motif = OBtn.Caption
    ActiveCell = Motif
    If OBtn Then UserForm1.Hide
    OBtn = False
End Sub

Dans le code de l'userform
VB:
Dim OBs() As New Classe1
Private Sub UserForm_Initialize()
Dim i As Integer, Ctrl As Control
i = 0
For Each Ctrl In UserForm1.Controls
If TypeName(Ctrl) = "OptionButton" Then
    i = i + 1
    ReDim Preserve OBs(1 To i)
    Set OBs(i).OBtn = Ctrl
    End If
Next Ctrl
With Me
    .StartUpPosition = 0
    .Top = ActiveCell.Top + 99
    .Left = ActiveCell.Offset(, 2).Left - 5
End With
End Sub

Dans le code de la feuille nommée Cob
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
If T.Count > 1 Then Exit Sub
If T.Row > 42 Then Exit Sub
Select Case T.Column
Case 3, 4 ' à compléter avec les numéros de colonnes adéquats
UserForm1.Show
Case Else
'
End Select
End Sub
 
Dernière édition:
Ah ça y est j'ai trouvé le module de classe. Encore une question, est-il possible que ce formulaire ne s'ouvre que après remplissage? Je veux dire par là, que les salariés doivent d'abord rentrer des heures et si c'est du texte (notamment s'ils tapent ABS alors la boite de dialogue s'ouvre?

Merci de vos réponse
Bonne soirée
 
rE

Il est l'heure pour moi d'aller me sustenter et sans doute m'abrutir devant quelque émission de télévision
par conséquent de nouveau je redis
Donc je cède la place à mes petits camarades de jeu 😉

Dernier conseil avant d'enfiler mon pyjama
Regardez dans les archives du forum, il devrait y avoir des exemples d'useform qui s'affiche aux alentour de la cellule active.
(Pour ce faire cliquez sur la loupe en haut à droite)

Bon appétit à tous
 
Bonjour à tous,

j'ai pas mal avancé dans mon idée à partir de vos idées et à force de recherche. J'arrive maintenant à ouvrir une boite de dialogue si les salariés saisissent "abs", ça marchait super. J'ai voulu compliquer les choses en intégrant une inputbox qui permet de saisir les cellules concernées (plage de dates) afin de reporter l'absence sur cette plage et là il y a un bug. Même si l'action se déroule, un message s'affiche (Erreur 13 : Incompatibilité de type) et ouvre le code VBA. Là ça dépasse franchement mes compétences.
Merci pour votre aide
 

Pièces jointes

Bonjour à tous

Si tu testes ta macro InputBox sur une feuille sans procédure Worksheet_Change
(en la mettant dans un module standard)
VB:
Sub Macro1()
Dim Plage As Range
  Set Plage = Application.InputBox("Sélectionnez une plage", "Sélection de cellules", Type:=8)
  MsgBox ("La plage que vous avez sélectionné est : " & Plage.Address)
End Sub
Donc le nœud du problème semble être dans l'interaction entre le code de l'inputbox et la procédure Worksheet_Change
Et pour le moment je sèche sur la résolution de la chose
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…