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

Remplir des cellules à l'aide d'un [menu contextuel]

  • Initiateur de la discussion Initiateur de la discussion powergirl
  • 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 !

P

powergirl

Guest
Bonjour,
J'aimerais créer un menu contextuel avec plusieurs niveaux (ci-joint une capture d'écran d'un menu contextuel)
pour remplir une cellule. Mais je ne sais pas où commencer.

J'ai fait le même travail en utilisant un userform.
J'aimerais que vous m'aider s'il vous plaît
En vous remerciant
 
Bonjour
Déjà !! ne peux tu pas faire une VRAIE capture d'écran au lieu d'une photo ?? pratiquement illisible !
prend par exemple : https://gadwin-printscreen.fr.softonic.com/
même en vers. 4.3 ( celle que j'ai) c'est largement suffisant et simple d'utilisation
Ensuite il faudra détailler en rapport avec l'image ce que tu veux avoir
On n'est pas des devins !!! ( quoique ....🙄 !!) tu veux remplir des cellules : avec Quoi, Comment , de Ou ...
??
 
J'ai réussi à faire un menu contextuel. J'aimerais avoir des données en cascade. C'est à dire quand je clique sur une famille, toutes les sous famille de cette famille apparaît. Quand je clique sur une sous famille, l'ensemble des référence que contient cette sous famille apparaissent. Voici mon fichier excel
 

Pièces jointes

J'ai réussi à faire un menu contextuel.
Il est Ou ???
Mais comme tu sais faire, aide toi de notre ami Jacques : http://boisgontierjacques.free.fr/
Dans son menu DIVERS tu as "liste en cascade" soit passer par le VBA ou formule avec nom de champ, j'ai déjà eu à faire et normalement on trouve sa solution via ses exemples
Par contre tu ne détailles toujours pas tes familles et sous familles correctement ( dans ton fichier c'est du chinois, rien de concret ) si tu l'avais fait , j'aurai déjà pu t'aiguiller sur l'exemple à utiliser .... puisque Jacques montre bien avec ses dessins ce que le code va faire !!
 
Dernière édition:
Bonsoir herve62 🙂

@herve62 : Windows+PrtSc ça suffit non? 😉

En plus, mis à part que l'image est de travers et qu'il faut pencher la tête coté SUD - SUD OUEST pour voir le menu droit 😀 😀 , celle-ci est nette.
 
Dernière édition:
Re


@Lone-wolf
J'ai surtout publié mon message pour INFO et précautions
(comme j'ai pris le soin de le préciser dans le message#5)
Tu as cliqué sur le lien *précaution* ?

Et accessoirement parce que le lien (tel que posté) d'hervé62 n'était pas valide.
Bonjour
Déjà !! ne peux tu pas faire une VRAIE capture d'écran au lieu d'une photo ?? pratiquement illisible !
prend par exemple : https://gadwin-printscreen.fr.softonic.com/
??
C'est donc à lui que tu devrais adresser ton message, non, 😉
Re Jean Marie

[s]@Staple1600[/s] : Windows+PrtSc ça suffit non? 😉
 
Bonsoir
Bon !! le sujet de la Miss !! n'est pas la dessus ce n'est pas le genre de réponse qu'elle attend
Et si j'ai mis ce lien c'est parce que celui de l'éditeur donne trop complexe à suivre
J'ai cette version , et sans PRECAUTION ???? , et cela va bien PAs besoin de me plaindre chez MALEKAL !!
JM : prtsc ? et comment tu prends juste un petit morceau ??
Good night
 

Bonjour,
j'ai fait while dans while donc normal je devrais avoir un truc de ce genre.
Mais seule la premère branche est appliqué. svp pouvez me dire où j'ai fait erreur.

Dim NbLignes As Integer
NbLignes = Sheets("BD").UsedRange.Rows.Count

With Application.CommandBars("Cell").Controls.Add(msoControlPopup)

.Caption = "Configuration API" 'le nom de la commande
.BeginGroup = True 'ligne facultative si elle est précisée alors
' With .Controls.Add(msoControlPopup)
' .Caption = Sheets("BD").Range("B3").Value 'le nom de la commande
While i <= NbLignes + 1
With .Controls.Add(msoControlPopup)
.Caption = Sheets("BD").Range("B" & i).Value
.BeginGroup = True
'.OnAction = "dupliquerlignes" 'appel de la macro
' Le numéro est augmenté de 1 à chaque boucle

While j <= NbLignes + 1
With .Controls.Add(msoControlPopup)
.Caption = Sheets("BD").Range("C" & j).Value
'.BeginGroup = True
While k <= NbLignes + 1
With .Controls.Add(msoControlPopup)
.Caption = Sheets("BD").Range("D" & k).Value
While l <= NbLignes + 1
With .Controls.Add(msoControlButton)
.Caption = Sheets("BD").Range("E" & l).Value
l = l + 1
End With
Wend
k = k + 1
End With
Wend
j = j + 1
End With

Wend
i = i + 1
End With

Wend

End With
 
Bonsoir le fil, le forum

Un petit code de test en guise d'inspiration
(adapté d'un code de Ron de Bruin)
VB:
Sub AddToCellMenu()
Dim ContextMenu As CommandBar
Dim MySubMenu As CommandBarControl
Call DeleteFromCellMenu
Set ContextMenu = Application.CommandBars("Cell")
Set MySubMenu = ContextMenu.Controls.Add(Type:=msoControlPopup, before:=3)
    With MySubMenu
        .Caption = "Test Menu-contextuel"
        .Tag = "My_Cell_Control_Tag"

        With .Controls.Add(Type:=msoControlButton)
            .OnAction = "'" & ThisWorkbook.Name & "'!" & "Test1"
            .FaceId = 160
            .Caption = "Sous-menu 1"
        End With
        With .Controls.Add(Type:=msoControlButton)
            .OnAction = "'" & ThisWorkbook.Name & "'!" & "Test2"
            .FaceId = 127
            .Caption = "Sous-menu 2"
        End With
        With .Controls.Add(Type:=msoControlButton)
            .OnAction = "'" & ThisWorkbook.Name & "'!" & "Test3"
            .FaceId = 213
            .Caption = "Sous-menu 3"
        End With

    End With
ContextMenu.Controls(4).BeginGroup = True
End Sub
Sub DeleteFromCellMenu()
    Dim ContextMenu As CommandBar, ctrl As CommandBarControl
    Set ContextMenu = Application.CommandBars("Cell")
    For Each ctrl In ContextMenu.Controls
        If ctrl.Tag = "My_Cell_Control_Tag" Then
            ctrl.Delete
        End If
    Next ctrl
    On Error Resume Next
    ContextMenu.FindControl(ID:=3).Delete
    On Error GoTo 0
End Sub
Sub Test1()
MsgBox Time, vbCritical, "Test1"
End Sub
Sub Test2()
MsgBox Date, vbExclamation, "Test2"
End Sub
Sub Test3()
MsgBox Application.UserName, vbMsgBoxRtlReading, "Test3"
End Sub
 
bonjourperso j'ai une question qui me tarode dans ton menu que je pige pas en tout cas

cette question est a quoi sert il d'avoir x items si tous t'emmenent au même endroit?????????
tu te serait pas trompé quelque part???
 

Pièces jointes

  • demo.gif
    174.7 KB · Affichages: 83
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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