Microsoft 365 ComBox directement dans la feuille

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
J'espère que vous allez bien et je vous souhaite un beau et bon WE :)

Sur les conseils toujours avisés de Job75, j'ai créé une ComboBox directement dans ma feuille de travail :)

Mais je n'arrive pas à coder pour répondre à mes besoins :
J'aurais besoin que :

J'aurais besoin que :
si message sélectionné dans "Rappels"

1 quand clic dans cellules colonne "J" : la liste "Rappels" s'affiche
et je sélectionne un message qui est écrit dans la cellule cliquée après les msg déjà existants
2 la liste "OK Rappels" s'affiche et le msg sélectionné est écrit dans la cellule après les msg déjà existants
3 enfin, la liste déroulante se vide

si message sélectionné dans "NE PAS RAPPELER"
1 quand clic dans cellules colonne "J" : la liste déroute s'affiche
et je sélectionne un message qui est écrit dans la cellule cliquée après les msg déjà existants
2 la liste déroulante se vide.

Pourriez-vous m'aider ?
Je joins le fichier test.

Avec mes remerciements,
lionel,
 

Pièces jointes

  • ComboBox.xlsm
    20.6 KB · Affichages: 27
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Gérard,
j'essaie de le dire différemment lol :
si message sélectionné dans le menu déroulant "Rappels"
Par exemple clic sur J8

le menu déroulant s'affiche, je sélectionne un msg
"J8" prend la valeur du msg sélectionné (en gardant le msg déjà existant)
le menu déroulant "OK Rappel" s'affiche à son tour et je sélectionne un msg
"J8" prend à nouveau la valeur du msg sélectionné (en gardant le msg déjà existant)

si message sélectionné dans le menu déroulant "NE PAS RAPPELER"
Par exemple clic sur J8

1 la liste déroute s'affiche, je sélectionne un msg
"J8" prend la valeur du msg sélectionné (en gardant le msg déjà existant)

J'espère que j'arriverai à être plus clair ;)
Je remets le fichier test,

Merci Gérard :)
 

Pièces jointes

  • ComboBox.xlsm
    26.3 KB · Affichages: 5
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bon sang, je n'arrive pas à être clair :mad:

Est-ce que c'est mieux comme ci-dessous :
Sans titre.jpg
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir Lionel
il me semblait que tu avais fait un super truc de menu popup pour ça ;)
que se passe t il ça marche plus ? ;)
en tout cas plus ça va ,moins je comprends le sens de ta démarche
maintenant on a plus un menu ni 2 mais trois combobox
qui je suppose doit fonctionner de paire voir de triple selon les deux précédents choix
ce qui fait pas mal de combi certainement impossible a réaliser sans passer par des sub et conditions patchée et à patcher a tout bout de champs
perso ces combo formulaire et non activX je les utilise jamais elle sont trop démunie d'events et propriété nécessaire a ce que tu veux faire
c'est encore moins un bon chemin que les 3 précédent
afin que je comprenne la chose je vais te demander une chose très simple
il faudrait que tu fasse une liste de toute les possibilités d'association
est tu capable de faire ça sans en louper
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Patrick,
Vraiment merci d'être là :)
Effectivement le menu popup fonctionne super bien mais le souci d'affichage pose un vrai problème et je serai obligé de tenter de le mettre en place demain si la ComBox directement dans la feuille n'est pas possible.

Le principe est le même que pour le menu popup :
1 - si je sélectionne l'un des messages dans "Rappels", fonctionnement comme la photo du #post7,
2 - si je sélectionne l'un des messages dans "Ne pas Rappeler, même fonctionnement sauf qu'il ne m'envoie pas au menu "OK Rappel",

C'est tellement important pour moi que je ne bouge pas et je reste à ton écoute :)
Merci patrick,
lionel,
 

job75

XLDnaute Barbatruc
Finalement avec le fichier joint j'affiche la ComboBox à gauche de la cellule cliquée :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ComboBox1
    .Visible = False
    If Intersect(ActiveCell, [J8:J31]) Is Nothing Then Exit Sub
    .Left = ActiveCell.Left - .Width 'affichage à gauche de la cellule
    .Top = ActiveCell.Top
    .List = Array("RAPPELS", "NE PAS RAPPELER")
    .Visible = True
    Application.OnTime 1, Me.CodeName & ".Deroule"
End With
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(ActiveCell, [J8:J31]) Is Nothing Then Cancel = True: Worksheet_SelectionChange ActiveCell: Exit Sub
End Sub

Private Sub Combobox1_Change()
With ComboBox1
    If .ListIndex = -1 Then .Text = "": Exit Sub
    If .Text = "RAPPELS" Then
        .List = [Rappels].Value
    ElseIf .Text = "NE PAS RAPPELER" Then
        .List = [Ne_pas_Rappeler].Value
    Else
        If .Text = "<effacer>" And ActiveCell <> "" Then
            ActiveCell = Left(ActiveCell, Len(ActiveCell) - 1)
            ActiveCell = Left(ActiveCell, InStrRev(ActiveCell, "-"))
            .Visible = False
        Else
            ActiveCell = ActiveCell & " " & .Text & " -"
            If IsError(Application.Match(.Text, [Rappels], 0)) Then
                .Visible = False
            Else
                .List = [OKRappels].Value
            End If
        End If
    End If
End With
ActiveCell.Activate
Application.OnTime 1, Me.CodeName & ".Deroule"
End Sub

Sub Deroule()
With ComboBox1
    If .Visible Then .Text = "": .Activate: .DropDown 'déroule la liste
End With
End Sub
Salut patricktoulon, comme je l'avais dit une seule ComboBox suffit.
 

Pièces jointes

  • ComboBox(1).xlsm
    97.4 KB · Affichages: 12

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Gérard :)
Vraiment super ça marche nickel , Bon sang j'en ai vraiment besoin.
Tu ne peux imaginer à quel point tu me rends service là.
Je vais voir pour l'intégrer dans mon fichier de travail en remplacement des UserForm et si c'est bon = PLUS DE PROBLEMES DE RALENTISSEMENT.

Je te rends compte dès que je l'aurai fait :)
Super merci Gérard,
lionel,
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Gérard,
Si c'est pas trop long à m'expliquer :)
Pourquoi le doubleclic ? :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(ActiveCell, [J8:J31]) Is Nothing Then Cancel = True: Worksheet_SelectionChange ActiveCell: Exit Sub
End Sub
lionel,
 

Discussions similaires