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

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:

job75

XLDnaute Barbatruc
Bonjour Lionel,

A priori une seule ComboBox doit suffire.

Ell s'affichera à droite ou en dessous de la cellule sélectionnée.

Mais je ne comprends pas ce que tu veux faire.

A+
 

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:

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…