VBA excel - bouclage infini worksheet_change

ayato -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 731
 
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
Antoine
 
Merci !
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 731
 
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 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
hé oui!!!
vu la chaleur, un petit coup de sieste s'avère indispensable

bonne sieste à toi aussi
0