Ne pas activer une macro qui se déclenche quand on change une cellule
Bonjour
je suis bloqué sur ce cas:
j'ai un onglet excel qui ressemble à ca:
dans la colonne B, je peux choisir quel cas je veux tester.
tous les cas ne peuvent pas etre testés en meme temps, il y a une matrice qui vérifie quels sont les cas qui peuvent être testés en meme temps (c'est dans l'onglet matrice).
A chaque fois que je touche à la colonne B, j'ai donc une macro qui m"indique quelles sont les autres cas que je peux tester : la macro va me noirci les lignes que je
ne peux pas tester.
Quand la ligne est noircie, je veux que le choix dans la colonne B soit verrouillée pour être sûr qu'on ne demande pas à faire un test alors que la matrice dit que c'est incompatible.
une fois que j'ai sélectionné les cas, je clique sur le bouton calculer et une macro lance le calcule( on ne touche plus à l'onglet "liste").
Jusque là ca fontionne.
le probleme, c'est que j'ai un bouton "désactiver"pour tout remettre à zéro : toutes les lignes redeviennent blanches et tout est indiquée "en attente".
quand je clique sur cebouton, il va donc commencer par mettre le 1er cas en attente. Puis comme la colonne B a été modifiée, il va donc me lancer la vérif avec la matrice. Mais je ne veux pas qu'il me lancer la vérif car il me verrouille certaines lignes.
Je veux juste qu'il met toutes les lignes en attente et qu'il enleve le surlignage (meme si y a pas de surlignage, je veux tout remettre comme si on repartait de zéro). Or le verroullage empeche d'enlever le surlignage et ca fait planter la macro.
vous pouvez m'aider?
Bonjour Citrods et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Concernant votre demande, si j'ai bien compris, il faut désactiver les évènements avant la boucle et les réactiver après
Sub passage_en_attente()
With ActiveSheet
.Unprotect 'mot de passe si nécessaire
MsgBox "on met tout en attente"
' Désactiver les évènements
Application.EnableEvents = False
' Lancer la boucle
For ligne_liste = 2 To 6
MsgBox "passage en attente - ligne " & ligne_liste
Worksheets("liste").Range("B" & ligne_liste) = "en attente"
Worksheets("liste").Activate
Worksheets("liste").Range("A" & ligne_liste & ":C" & ligne_liste).Select
MsgBox "il faut enlever le surlignage"
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Worksheets("liste").Range("D" & ligne_liste) = 0
Worksheets("liste").Range("A" & ligne_liste & ":D" & ligne_liste).Locked = False
Next
' Réactiver les évènements
Application.EnableEvents = True
.Protect
End With
End SubMerci de votre participation
Cordialement
ca a l'air de marcher. je vais tester ca sur le vrai fichier.
sinon c'est fait je me suis présenté dans la section.
merci!