La méthode 'Range' de l'objet '_Worksheet' a échoué

Bonjour à tous,

Je m'excuse d'avance pour le doublon mais étant novice sur VBA (seulement 2, 3 utilisations pour le moment), je n'arrive pas à comprendre les autres sujets traitant du problème.

Voici mon problème :

J'ai un fichier Excel avec des macro sur l'ensemble des onglets (le même code mais avec des "portées" différentes). Sur les onglets 2 et 3, aucun problème, ma macro marche à merveille. Seulement, sur mon onglet 1, qui est plus long, le message suivant s'affiche "Erreur d’exécution '1004' : La méthode 'Range' de l'objet '_Worksheet' a échoué.

Et voici mon code :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

If Not Intersect(Target, Range("E8:E108, F8:F108, G8:G108, H8:H108, I8:I108, J8:J108, K8:K108, L8:L108, M8:M108, N8:N108, O8:O108, P8:P108, Q8:Q108, R8:R108, S8:S108, T8:T108, U8:U108, V8:V108, W8:W108, X8:X108, Y8:Y108, Z8:Z108, AA8:AA108, AB8:AB108, AC8:AC108, AD8:AD108, AE8:AE108, AF8:AF108")) Is Nothing And Target.Cells.Count = 1 Then

If Target.Value = "" Then Target.Value = "x" Else Target.Value = ""

Cancel = True

End If

End Sub

Je ne comprends pas totalement le code utilisé, je l'ai récupérer sur ce site.

Le code semble correct, j'ai essayé d'activer ma feuille (sans trop savoir pourquoi d'ailleurs) en rajoutant

Range("Evaluation a chaud").Activate

Si quelqu'un pourrait m'expliquer simplement d'où vient le problème, pourquoi et comment le résoudre, ça serait super !

Je vous remercie par avance,

Mirliton

Bonjour,

Remplace le code (1er Onglet) par :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("E8:AF108")) Is Nothing And Target.Cells.Count = 1 Then
        If Target.Value = "" Then Target.Value = "x" Else Target.Value = ""
        Cancel = True
    End If
End Sub

Remplace la ligne du code pour la lisibilité (2ème et 3ème) par :

If Not Intersect(Target, Range("E8:V108")) Is Nothing And Target.Cells.Count = 1 Then

Wouah merci !

Donc pas besoin d'écrire colonne par colonne, ça me permettra de gagner du temps. Cependant, tu peux m'expliquer d'où venez le problème ?

Re,

Le problème venait d'une 2ème ligne (du code du premier onglet) qui définissait une plage qui n'était pas syntaxiquement correcte, de plus elle ne sert pas à grand chose dans le cadre de ce macro.

En ce qui concerne de la définition des plages, ici c'est un seul bloc qu'on définit comme plage de référence. Donc, cette façon de définir est correcte. Si on a des plages discontinus, il va falloir procéder comme il était dans le code auparavant.

Donc la manière dont j'ai procédé décrit plusieurs plages de référence ?

Re,

C'est bien ça. Il y a des limites à ne pas dépasser qui te bloquent aussi. C'est le cas dans ton code du premier onglet dans la définition des plages.

Rechercher des sujets similaires à "methode range objet worksheet echoue"