Conflit Procédure VBA

Dalona -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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

    0
  2. Dalona
     
    Merci beaucoup, en effet je comprends mieux les choses maintenant :)
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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à.
      0