Conflit Procédure VBA

Bonjour,

Je vous explique mon problème.

J'ai utiliser le code :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Application.ScreenUpdating = False
If Target.Cells.Count > 1 Then Exit Sub
        If Not Intersect(Target, Range("G3:G1000")) Is Nothing Then
            Target.Font.Name = "Marlett"
                If Target = vbNullString Then
                    Target = "a"
                Else
                    Target = vbNullString
                End If
        End If
Application.ScreenUpdating = True
End Sub


J'obtiens donc la possibilité de double cliqué dans la colonne G pour afficher un symbole.
Je désire appliquer le même code à la colonne H pour afficher un nouveau symbole.

J'ai donc copier coller le code pour changer le nom de la colonne. Lorsque je compile j'obtiens l'erreur suivante :

Nom ambigue détécté : Worksheet_BeforeDouble Click

Merci d'avance

3 réponses

  1. Modérateur
    Salut,
    Tu as fait ceci :
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    Bla Bla Bla
    End Sub
    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    Bli Bli Bli
    End Sub


    Et donc VBA ne tolère pas deux évènements identiques en même temps.

    Tu dois faire comme ceci :
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    Bla bla bla
    Bli Bli Bli
    End Sub


    Soit quelque chose comme :
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    Application.ScreenUpdating = False
    If Target.Cells.Count > 1 Then Exit Sub
            If Not Intersect(Target, Range("G3:G1000")) Is Nothing Then
                Target.Font.Name = "Marlett"
                    If Target = vbNullString Then
                        Target = "a"
                    Else
                        Target = vbNullString
                    End If
            End If
    
            If Not Intersect(Target, Range("H3:H1000")) Is Nothing Then
                Target.Font.Name = "Marlett"
                    If Target = vbNullString Then
                        Target = "a"
                    Else
                        Target = vbNullString
                    End If
            End If
    Application.ScreenUpdating = True
    End Sub

    1. Merci beaucoup, en effet je comprends mieux les choses maintenant :)
      1. Contributeur
        Bonjour,
        Une autre approche ?
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
            Select Case Target.Column
            Case 7: Target.Font.Name = "Marlett": Target = IIf(Target = "", "a", "")
                Target.Offset(1, 0).Select
            Case 8: Target.Font.Name = "Marlett": Target = IIf(Target = "", "r", "")
                Target.Offset(1, 0).Select
            End Select
        End Sub

        A+
        1. Modérateur
          Salut,
          Bien vu!!!
          J'avoue ne pas m'être posé la question du code, mais juste trouver la réponse du problème.
          Merci à toi d'être passé par là.