Macro avec compteur ?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nonno 94

XLDnaute Occasionnel
Bonsoir le Forum,

j'aimerais savoir s'il est possible d"imposer à une macro qui s'exécute indéfiniment de ne s'exécuter qu'une seule fois.
Si oui, comment ?

Précision : cette Macro s"exécute lorsqu'une cellule prend la valeur 1.
Cette cellule repasse à 0 quand la Macro s"est exécutée. Avec le code que j'utilise, elle "n'a pas le temps" de repasser à 0 et la Macro s"exécute donc .....indéfiniment !
Le code est le suivant :

Private Sub Worksheet_Calculate()
Sheets("Récap").Select
If Range("Q4").Value > 0 Then
Sheets("LV").Select
Sheets("LV").Copy Before:=Sheets("Récap")
Sheets("Récap").Select
End If
End Sub

Remerciements pour vos réponses et suggestions.

Nonno 94.
 
Dernière édition:
Re : Macro avec compteur ?

Bonsoir le fil, bonsoir le forum,

Je pense que la solution de Michel va résoudre ton problème. Toutefois, si tu as un bug avant de repasser sur la ligne Application.EnableEvents = True, il n'y aura plus aucune macro événementielle qui fonctionnera. On peut contourner avec un code de ce type :
Code:
Private test As Boolean 'déclare la variable test
 
Private Sub Worksheet_Calculate()
If test = True Then Exit Sub 'si la variable test est vrai, sort de la procédure
test = True 'définit la variable test
Sheets("Récap").Select
If Range("Q4").Value > 0 Then
Sheets("LV").Select
Sheets("LV").Copy Before:=Sheets("Récap")
Sheets("Récap").Select
End If
test = False 'redéfinit la variable test
End Sub
La variable test doit être déclaré en dehors de la procédure tout en haut...
 
Re : Macro avec compteur ?

Bonsoir à tous
Une autre proposition :
VB:
Private Sub Worksheet_Calculate()
  If Sheets("Récap").Range("Q4").Value > 0 Then
    Application.EnableEvents = 0
    On Error Resume Next 'Pour le cas où il n'existerait pas d'onglet nommé "LV".
     Sheets("LV").Copy Before:=Sheets("Récap")
    Sheets("Récap").Select
    On Error GoTo 0
    Application.EnableEvents = 1
  End If
End Sub
ROGER2327
#4983


Lundi 2 Pédale 138 (Saint André Marcueil, ascète cycliste, SQ)
6 Ventôse An CCXIX
2011-W08-4T23:55:42Z
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
715
Réponses
10
Affichages
1 K
Retour