Déclancher une macro 1 seule fois pour toute

isa44

XLDnaute Occasionnel
Bonjour ,
comment lancer l'exécution d'une macro12 une seule fois après le changement
de la cellule C26 de la feuille1 ? Si après cette exécution l'on change la cellule C26 ne pas lancer la macro12.
 

Pierrot93

XLDnaute Barbatruc
Re : Déclancher une macro 1 seule fois pour toute

Bonjour,

peut être en utilisant une variable "static", si j'ai bien compris.... exemple ci-dessous :

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Static b As Boolean
If b = True Or Target.Address <> "$C$26" Then Exit Sub
b = True
Target.Interior.ColorIndex = 3
End Sub

bonne journée
@+
 

tototiti2008

XLDnaute Barbatruc
Re : Déclancher une macro 1 seule fois pour toute

Bonjour à tous,

Pierrot, je ne maîtrise pas bien les variables Static mais je suppose qu'elles se réinitialisent à chaque fermeture d'Excel ?

Donc à priori, je ne vois qu'une solution : Dans une cellule (pour l'exemple, AA1) écrire FAUX
à la première modification de C26, lancer macro12 puis mettre VRAI dans la cellule

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("AA1").value = True Or Target.Address <> "$C$26" Then Exit Sub
Range("AA1").value = True
Call macro12
End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : Déclancher une macro 1 seule fois pour toute

Bonjour à tous
Insérer le nom Etat_C26 avec la valeur =0. (Menu Insertion/Nom/définir...)
Écrire le code suivant :
Code:
[COLOR="DarkSlateGray"][B][COLOR="SeaGreen"]'Dans le module de la feuille concernée :[/COLOR]
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address = "$C$26" Then
      If ActiveWorkbook.Names("Etat_C26").Value = "=0" Then
         bascule_état_C26
         macro12
      End If
   End If
End Sub

Sub bascule_état_C26()
   With ActiveWorkbook.Names("Etat_C26")
      If .Value = "=1" Then .Value = "=0" Else .Value = "=1"
   End With
End Sub

[COLOR="SeaGreen"]'Dans le module de la feuille concernée ou dans un module standard :[/COLOR]
Sub macro12()
   MsgBox "macro12 exécutée"
End Sub[/B][/COLOR]
À la première modification de la valeur de la cellule C26, la valeur de Etat_C26 passe à la valeur =1 et la procédure macro12 est exécutée.
Tant que la procédure bascule_état_C26 n'est pas exécutée, les modifications de valeur de la cellule C26 ne déclenchent pas l'exécution de la procédure macro12.
Pour autoriser l'exécution de la procédure macro12, il faut exécuter une fois la procédure bascule_état_C26.​
ROGER2327
#3496


30 Floréal An CCXVIII
2010-W20-3T08:51:23Z
 
Dernière édition:

Lii

XLDnaute Impliqué
Re : Déclancher une macro 1 seule fois pour toute

Bon jour,

dans la série "je peux, je n'en peux plus" : avec un Contrôle invisible.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$C$6" Then
    If OptionButton1 = True Then Exit Sub
    OptionButton1 = True
    macro12
  End If
End Sub
 

Pièces jointes

  • Macro 1 Changement.xls
    28.5 KB · Affichages: 72
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 393
Messages
2 088 006
Membres
103 695
dernier inscrit
acimi