Macro qui tourne en boucle

Bonsoir au forum,

J'appelle aux "Cadors.VBA"

Comment empêcher cette macro de tourner en boucle ?

Sub syntese()
        If Range("c9") = "A facturer" Then
                Range("ligne").Copy
                    Sheets("synthese").Select
                        Range("synthese!top").Offset(1, 0).Select
                                '''Selection.Insert Shift:=xlDown ''insert
                            ActiveCell.Name = "Top"
                                Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                           False, Transpose:=True
                                MsgBox ("relevé synthèse enregistré!")
                                    Sheets("chute").Select
                                        Range("c9") = "Exédié le:"
                            GoTo FIN
                Else
                      Range("ligne_suivi").Copy
                    Sheets("suivi").Select
                        Range("synthese!Top_suivi").Offset(1, 0).Select
                            ActiveCell.Name = "Top_suivi"
                                Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                           False, Transpose:=True
                                        MsgBox ("relevé Suivi enregistré!")
                                            Sheets("chute").Select
                                                Range("c9") = "A facturer"
                            GoTo FIN
                End If
FIN:
End Sub

Sachant que la cellule "c9" est reliée à celle-ci.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' Macro par Dan pour Philippe_63 -  Excel Pratique le 10/01/08
If Not Application.Intersect(Target, Range("c9")) Is Nothing Then
Call syntese
End If
End Sub

malgrès les Goto Fin, çà boucle !

Il y a surement moyen ! mais voila ???

amicalement....Claude.

Bonsoir,

Je ne vois le pb de ta boucle car la macro Synthèse est exécutée en fonction de la cellule C9.

Vérifie :

  • La macro PRIVATE doit être dans la feuille
  • La macro SUB doit être dans un module
  • Supprime les GoTo FIN et le FIN, cela ne sert pas.

A te lire

Dan

re,

Salut Dan,

si, regarde la ligne avant le goto , je modifie "c9"

les goto n'y était pas, j'ai voulu tester !

peut-être un compteur ?...mais je ne sais pas faire .

Claude.

re,

Ah ok je vois

alors change comme ceci :

Après SUB SYNTHESE, mets --> Application.EnableEvents = False

Avant END SUB mets, Application.EnableEvents = True

Si tu fais des tests, veille bien à toujours terminer ta macro SUB sans quoi la macro PRIVATE ne fonctionnerait plus.

Dan

re,

merci Dan, c'est OK

Pour ma gouverne,

Peut-tu m'expliquer un peu, " Application.EnableEvents" joue sur quels types de privatesub

Claude.

re,

Cette instruction permet de suspendre les macros qui réagissent sur un changement dans une feuille.

Toutefois, il y a d'autres méthodes pour éviter d'utiliser cette instruction qui peux te poser des problèmes si ta macro est arrêtée avant de remettre la valeur à TRUE.

Dans ce cas, tes macros événementielles de type PRIVATE ne fonctionneront plus.

Donc prudence.

Dan

bonjour au forum,

Bonjour Dan et merci encore pour tes explications.

amicalement

Claude.

Rechercher des sujets similaires à "macro qui tourne boucle"