Erreur Excel worksheet_change

Bonsoir,

J'ai une erreur qui s'affiche sur mon code au niveau de la ligne

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                Formula1:="Yes, No"

à chaque fois alors que tout est juste et que le code marchait. Il faut savoir que j'ai un worksheet_change qui me permet d'automatiser mes macros. Et quand cette erreur s'affiche mon worksheet_change ne marche plus.

Voici le code :

Sub BottleFlexibleLid()
    If Not IsEmpty(Range("D22")) Or Range("D17") = "None" Then
        Application.EnableEvents = False
        Range("C23") = "Is there a flexible lid ?"
    With Range("D23").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                Formula1:="Yes, No"
    End With
        Application.EnableEvents = True
    Else
        Range("C23") = " "
    End If
End Sub

Merci pour votre aide.

capture

Je croyais que avais résolu le problème !

Postes la totalité du code VBA en précisant dans quel module il se situe

Bonjour,

Merci pour ta réponse, non c'est revenu. Je ne peux pas poster la totalité car c'est un projet confidentiel. Je ne sais pas comment faire autrement :/

Sans savoir ce qui se passe au niveau évènementiel, ça va être « au petit bonheur, la chance » !!!!

Ceci me paraît anormal :

 Range("C23") = " "

Un espace ?

Pourquoi ne pas effacer le contenu :

 Range("C23").ClearContents

Et surtout, pourquoi n'interdis-tu pas les évènements ?

Voici ce qui se passe au niveau événement. J'appelle une procédure qui contient toutes les autres procédures dont le code que j'ai mis auparavant.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("D3:D100")) Is Nothing Then

   '********* Appel de typeOfPackaging *****************
        Application.EnableEvents = True
        Call TypeOfPackaging

    End If
End Sub

Ce qui se passe c'est que j'ai un message d'erreur à chaque fois au niveau de la même ligne pour toutes mes procédures avec des listes déroulantes.

Je n'interdis pas les événements car j'ai besoin que mes procédures s'exécutent automatiquement à chaque fois que mes cellules changent.

En effet j'ai essayé de désactiver les événements au début de chaque code et de les activer à la fin et ça a marché.

Merci beaucoup pour ton aide

Re,

Pour éviter la récursivité des évènements et les interférences qu'elle peut provoquer on utilise cette structure :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("xxxxxx")) Is Nothing Then
        Application.EnableEvents = False
        ' Appel des sous-procédures :
        ' Call ...
        ' Call ...
        ' ...
        Application.EnableEvents = True
    Else
        Application.EnableEvents = False
        ' Appel des sous-procédures :
        ' Call ...
        ' Call ...
        ' ...
        Application.EnableEvents = True
    End If
End Sub

Merci beaucoup pour l'astuce j'utiliserai ça à l'avenir

Rechercher des sujets similaires à "erreur worksheet change"