Erreur macro se lance sans raison

Bonjour,

Dans mon classeur une macro se lance automatiquement si on modifie la valeur en G2. Pourtant lorsque je modifie la valeur en A2 j'ai une erreur qui apparaît comme sur cette capture d'écran (j'aurai bien voulu vous fournir un fichier test mais l'erreur a disparu dedans…)

EDIT : quand on appuie sur débogage c'est bien la ligne du "If Not" qui est mis en surbrillance.

image

Est-ce que quelqu'un sais ce que j'ai mal fait ?

Merci d'avance,

Nicolas

Bonjour Nicolas Halter, le forum,

A tout hasard...

If Not Application.Intersect(Target, Range("G2")) Is Nothing Then

https://forum.excel-pratique.com/astuces/vba-utilisation-de-la-methode-intersect-1314

Cordialement,

Bonjour à tous,

Est-ce que cela se produit quand on modifie A2 via une saisie manuelle en A2 ? (pratiquement certain que oui)

Est-ce que cela se produit quand on modifie A2 via la liste déroulante en A2 ? (pratiquement certain que non)

Bonjour Xorsankukai,

Merci pour ton aide, mais l'erreur est toujours présente. Je vais regarder dans le lien que tu as fournis s'il n'y a pas quelque chose en plus.

Nicolas

Bonjour Mafraise,

Pour remettre entièrement dans le contexte, la liste déroulante est une liste dynamique où les choix s'actualisent en fonction de ce que tu tapes. L'erreur apparaît lorsque je tape quelques lettres puis que j'ouvre la liste pour faire un choix. Si la case est vide et que j'ouvre la liste il n'y a effectivement pas d'erreur.

Nicolas

Re,

Donc c'est bien lors d'une saisie manuelle en A2. A priori, c'est un problème connu (saisie manuelle dans une cellule avec liste de validation).

N'ayant pas eu de fichier exemple joint , pour illustration, j'ai fait un palliatif (à partir d'un exemple glané sur la toile Auteur => OssieMac).

Les caractéristiques:

  • Liste fixe (puisque pas de fichier exemple)
  • il faut décocher sur l'onglet "Alerte d'erreur" de la fenêtre de création de la validation en A2, l'option "Quand des données non valides sont tapées"
  • la casse de la saisie est indifférente

Le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim n&
   If Target.Address <> Range("a2").Address Then Exit Sub
   If Target = "" Then Exit Sub
   On Error GoTo BISREPETITA
   Application.EnableEvents = False: n = 0
   n = Application.IfError(Application.Match(Range("a2"), Range(Range("a2").Validation.Formula1), 0), 0)
   If n = 0 Then
      MsgBox "Entrée Incorrecte" & vbLf & _
             "Veuillez choisir un article via la liste déroulante.", vbExclamation
      Target.ClearContents
      Target.Select
   Else
      Target = Range(Range("a2").Validation.Formula1).Cells(n).Value
      Call MySub
   End If
BISREPETITA:
   Application.EnableEvents = True
End Sub

Ca y est j'ai enfin un fichier d'exemple ! Merci pour ta macro Mafraise, je vais voir si j'arrive à l'adapter chez moi.

4exemple.xlsm (20.12 Ko)
Rechercher des sujets similaires à "erreur macro lance raison"