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
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      hé oui!!!
      vu la chaleur, un petit coup de sieste s'avère indispensable

      bonne sieste à toi aussi
      0