Bonjour,

J'ai cette fonction qui marche bien sur le double click :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim Index As Long
 
  If Not Intersect(Target, Range("Tableau1")) Is Nothing Then
    Cancel = True
    ShowSuiviForm Target
  End If
End Sub
Elle ouvre un formulaire avec l'enregistrement choisi.

Sauf que je n'ai pas envie que ça m'empeche le double click pour l'édition d'une cellule.

Je me suis donc dit que j'allais ajouter un menu pour ouvrir le formulaire via le menu contextuel.
Mes connaissance en VBA étant assez faible, j'ai chercher le code pour modifier le menu contextuel. J'ai fini par trouvé.
Mais après pour lancer la fonction, malgré mes différentes tentatives d'ajustement, j'ai toujours un message d'erreur : incompatibilité de type, argument byref etc...

Voici mon code, pouvez vous m'aider? :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("Tableau1")) Is Nothing Then
        Cancel = True    'on annule l'affichage du menu cell
        'on ajoute l'item au menu cell
        With CommandBars("List Range Popup").Controls.Add(Type:=msoControlButton, before:=6, temporary:=True)
            .Caption = "MODIFICATION VIA FORMULAIRE"
            .OnAction = "'Feuil1.ouvre_form " & Chr(34) & Target.Address & Chr(34) & "'"      'on appelle la macro qui est dans le module de la feuille elle meme et on lui script l'argument de l'adress de la target
            'donc l'item appelera la sub AVEC!!!!  argument
        End With
        CommandBars("List Range Popup").ShowPopup    'comme on l'a annuler il faut l'affifficher (showpopup)
    End If
    'quand tu aura selectionner ou pas et que le popup se sera fermer la commandbars("cell") revient a l'origine
    ' ainsi  quand tu fermera ton classeur et ouvrira un autre la barre cell sera d'origine
    CommandBars("List Range Popup").Reset
End Sub
 
Sub ouvre_form(ByVal adresse As Range)
Dim Index As Long
If Not Intersect(adresse, Range("Tableau1")) Is Nothing Then
    Cancel = True
    ShowSuiviForm adresse
  End If
 
 
End Sub