BVA : Problème avec DisplayAlerts = False

Bonjour,

Dans le fichier ci-joint, j'ai une liste déroulante dans la cellule B1 qui me permets de faire apparaître des données dans les cellules rouges, selon la valeur choisie.

Par le bouton "Vider les champs", je voudrais que la macro qui vide entre autres cette cellule B1 se déroule sans qu'apparaissent de message d'alerte. J'ai effectué des essais avec Application.DisplayAlerts = False et Application.DisplayAlerts = True, mais je n'y arrive pas.

Ce message d'erreur apparaît au travers du code Worksheet_Change de la feuille "Angabe", lui-même déclenché lorsque l'on clique sur le bouton "Vider les champs", ce qui lance le code Vider_champs_y_compris_B1 dans le module 1.

Pouvez-vous m'aider à résoudre ce problème ?

41demo.zip (81.09 Ko)

Bonjour

Au lieu d'utiliser DisplayAlerts utilises EnabledEvents

Sub Vider_champs_y_compris_B1()
Application.EnableEvents = False
Range("B1").ClearContents
Call Vider_champs_sauf_B1
Application.EnableEvents = True
End Sub

Bonsoir à tous,

utilise Public Drapeau As Boolean

Option Explicit
Public Drapeau As Boolean, Flag As Boolean
Sub Vider_champs_y_compris_B1()
    Drapeau = True
    Range("B1").ClearContents
    Call Vider_champs_sauf_B1
End Sub
Sub Vider_champs_sauf_B1()
Drapeau = True
    Range("B6,B7,B9,B10,B16:D19").ClearContents
    Range("B1").Select

    ActiveSheet.Shapes("Option button 22").ControlFormat.Value = xlYes 'Boutons Altergutschriften
    ActiveSheet.Shapes("Option button 23").ControlFormat.Value = xlOff 'Boutons Altergutschriften
    ActiveSheet.Shapes("Option button 24").ControlFormat.Value = xlOff 'Boutons Altergutschriften

    ActiveSheet.Shapes("Option button 27").ControlFormat.Value = xlYes 'Boutons Sprache
    ActiveSheet.Shapes("Option button 28").ControlFormat.Value = xlOff 'Boutons Sprache
    ActiveSheet.Shapes("Option button 29").ControlFormat.Value = xlOff 'Boutons Sprache

    ActiveSheet.Shapes("Option button 31").ControlFormat.Value = xlYes 'Boutons Duoprimat
    ActiveSheet.Shapes("Option button 32").ControlFormat.Value = xlOff 'Boutons Duoprimat
Drapeau = False
End Sub

Sub Variation_Cellule_B14() devrait être dans un module

amicalement

Claude

Bonjour Banzai, bonjour Claude,

Merci à tous deux pour votre précieuse aide.

Apparemment vos deux solutions - bien qu'assez différentes - semblent fonctionner indifféremment parfaitement Je ne vois pas de gros avantages ni à l'une, ni à l'autre.

Juste peut-être une remarque à Claude : J'avais placé Public Drapeau As Boolean dans le module 1 parce qu'autrement - lorsque je lançais l'autre macro de ce module Fonctions_réécrites - un message "Erreur de compilation-Variable non définie" apparaissait. Maintenant, si je déplace Public Drapeau As Boolean dans le code de la feuille "Angabe", le même message d'erreur apparait au lancement de la macro Vider_champs_y_compris_B1 modifiée selon tes indications. Il me semble que je suis obligé (bizarrement puisque "Public") de laisser cette instruction dans le module 1.

Et encore une question, toujours à Claude : tu indiques que Sub Variation_Cellule_B14() devrait être dans un module, mais si cette macro n'est utilisée que pour cette feuille, il n'y a pas de raison de la déplacer absolument dans un module ou est-ce qu'il y a une raison bien précise que j'ignore ?

Cordialement.

22demo-claude.zip (81.43 Ko)
15demo-banzai.zip (83.37 Ko)

Bonjour,

En règle générale:

les "Sub" doivent être placés dans un module(s),

tu regroupe les "Public" dans un même module (Module1 pour faciliter la lecture),

ils sont reconnus dans toutes les feuilles et modules.

les Private Sub sont réservés aux macros évènementielles concernant la feuille.

Enfin, c'est comme çà que j'ai appris !

à+.... Claude

Merci beaucoup pour ces précisions Claude.

Excellente fin de journée.

Rechercher des sujets similaires à "bva probleme displayalerts false"