VBA excel - bouclage infini worksheet_change

Fermé
ayato - 25 févr. 2008 à 14:35
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 16 juil. 2013 à 13:53
Bonjour,

j'ai un petit souci sur une macro excel, j'ai fait une macro mettant en forme (coloration) une ligne de cellule lorsque une case est non vide, tout ça grace à la macro worksheet_change. Donc dès qu'une modification est faite dans la feuiile, le programme vérifie les cases d'une colonne et si elles ne sont pas vides ça colore la ligne correspondante.

Le problème est que j'aimerais par la même occasion qu'il me mette à jour une case où se trouve la date de mise à jour mais cela fait recommencer la macro puisque ca modifie la feuille d'où un bouclage quasi infini du programme...

Avez vous une meilleure idée pour faire ce que je veux ou alors y'a t il une fonction qui permette d'empecher le programme de repartir à zéro? Voir le programme ci dessous.

Merci d'avance

Voici mon programme:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
cellule = ActiveCell.Address
On Error GoTo arret
Cells(5, 7).Select
Do While ActiveCell.Interior.ColorIndex <> 1
If ActiveCell.Value <> "" Then
Range(ActiveCell.Offset(0, -6), ActiveCell).Select
Selection.Interior.ColorIndex = 4
ActiveCell.Offset(0, 6).Select
Else
Range(ActiveCell.Offset(0, -6), ActiveCell).Select
Selection.Interior.ColorIndex = xlNone
ActiveCell.Offset(0, 6).Select
End If
ActiveCell.Offset(1, 0).Select
Loop
'''''Range("A2")="Mise à jour le : " & Date '''''c'est cette ligne qui fait redémarrer
Range(cellule).Select
arret:
Application.ScreenUpdating = True
End Sub
A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 718
25 févr. 2008 à 17:46
bonjour

Comme tu as mis : "Application.ScreenUpdating = False " pour éviter la mise à jour de l'écran, tu mets :

Application.EnableEvents = False
ton code modification
Application.EnableEvents = True

L'événement ne se déclenchera pas avec tes mises à jour mais il faut impérativement le remettre à true même si erreur car sinon il est vraiment désactivé.
2
Merci !
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
16 juil. 2013 à 11:55
Bonjour

Application.EnableEvents = False
     Range("A2") = "Mise à jour le : " & Date '''''c'est cette ligne qui fait redémarrer
Application.EnableEvents = True 
 


mais ta macro est catastrophique.....
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 718
16 juil. 2013 à 12:21
Bonjour Michel,

Un coup de chaud ?

La macro date de 5 ans et plus : elle est abandonnée ou re-écrite sans doute ....

Bonne journée à toi.
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
16 juil. 2013 à 13:53
hé oui!!!
vu la chaleur, un petit coup de sieste s'avère indispensable

bonne sieste à toi aussi
0