Créer pause dans macro pour éviter erreur

Bonjour,

Dans mon fichier j'ai deux macro qui se "contredisent" a un certain moment :

  • Il y a une macro qui s'il y a modification dans la colonne A (=case cocher), copie la ligne équivalente a la modification dans une autre feuil.
  • il y a une macro qui copie et colle dans la colonne A des "cases vides" afin de réinitialiser la sélection.

le problème est ici, car la macro "bouton" copie des cases vides en "J" vers "A", mais ceci est detecter comme une modification par la macro sur cette feuille!

Je me demande s'il n'y a pas moyen de faire une "pause" dans la première macro, afin de résoudre le problème. Ou peut etre avez vous une autre solution?

Cordialement,

vincent

37pause-macro.xlsm (25.79 Ko)

Bonsoir

Deux méthodes

La plus "propre" mais la plus dangereuse

C'est la désactivation des évènements ( en cas de plantage : Solution -->Sauvegarder, Quitter puis recharger le programme, ou avoir une macro pour réinitialiser les évènements)

style

Sub Retablit()
  Application.EnableEvents = True
End Sub

Ton code avec cette solution

Sub Bouton1_Clic()
'
'
' Consultation_nouvelle_Consult Macro

'   Dim temp
 Application.EnableEvents = False
    If MsgBox("Voulez vous créer?", 36, "Nouveau") = vbYes Then
.
.
    End If
  Application.EnableEvents = True
End Sub

Autre méthode moins "dangereuse"

définir un verrou pour éviter que la macro Worksheet_Change s'exécute

ton code avec ce verrou

Public Non As Boolean ' Déclaration du verrou

Sub Bouton1_Clic()
'
'
' Consultation_nouvelle_Consult Macro

'   Dim temp
 Non =true
    If MsgBox("Voulez vous créer?", 36, "Nouveau") = vbYes Then
.
.
    End If
  Non = False
End Sub

et au début du code Worksheet_Change

mettre

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet (janvier)
Dim li As Integer 'déclare la variable li
Dim dest As Range 'déclare la variable dest

If Non = True Then Exit Sub

Voilà je pense que c'est ce que tu voulais

Bonne soirée

Bonsoir,

si j'ai bien compris, essaye comme ceci:

1) dans un module, en haut

Public Flag As Boolean

2) au début des événementielles

If Flag Then Exit Sub

et sur le bouton :

Sub Bouton1_Clic()
' Consultation_nouvelle_Consult Macro
'   Dim temp

    If MsgBox("Voulez vous créer?", 36, "Nouveau") = vbYes Then
Flag = True
        'initalisation case a cocher + pause dans
        Sheets("Nouvelle consultation (2)").Select
        Range("J8:J20").Select
        Selection.Copy
        Range("A8").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

        'si ou supression donné et tableau
        Sheets("Consultation").Select
        Range("B9:D20").Select
        ActiveSheet.ListObjects("Tableau2").Resize Range("$B$7:$D$8")
Flag = False

        Else ' sinon sauvegarder

        MsgBox "Sauvegarde consultation existante effectué !", 64, "Sauvegarde consultation"
    End If
End Sub

Amicalement

Claude

26vinc24-flag.xlsm (26.68 Ko)

Je vous remercie, ça fonctionne parfaitement. Je verrais demain quelle solution me semble la plus approprié.

Bonne fin de soirée

re,

Le temps de taper mon message, je n'avais pas vu celui de Banzai,

Heureusement que l'on dit la même chose !

Claude

Rechercher des sujets similaires à "creer pause macro eviter erreur"