Exécution unique d'une macro

Bonjour à tous

Je coince sur un problème...

J'ai une feuille avec une 40taine de champ que l'opérateur doit remplir.

il ya deux champs qui, lorsqu'il sont remplis avec certaines valeurs, met un message d'avertissement qui clignote..

Mon problème est qu'une fois ces champs remplis et le msg d'alerte clignotant affiché, à chaque fois que l'opérateur remplit un nouveau champ, le msg d'alerte clignotant réapparait.

Donc j'aimerais que ce msg clignotant n'apparaisse qu'une seule fois si nécessaire et que l'opérateur ne voit plus apparaitre ce msg quand il remplit le reste du document.

Voici mes lignes de programme pour mon msg d'alerte

Private Sub Worksheet_Change(ByVal Target As Range)
       If [R25] = "TINTIN" Then
       Shapes("monshape").Visible = True
       Shapes("monshape").TextFrame.Characters.Text = "ATTENTION TINTIN" '& _
         'Chr(10) & Format([B7], "")
       Clignote "monshape", 2
       Shapes("monshape").Visible = False
     Else
       Shapes("monshape").Visible = False
     End If
  'End If
End Sub

Sub Clignote(s, nb)
       n = 0
       Do While n < nb
          ActiveSheet.Shapes(s).Visible = False
          fin = Timer + 0.2
          Do While Timer < fin:  DoEvents: Loop
          ActiveSheet.Shapes(s).Visible = True
          fin = Timer + 0.5
          Do While Timer < fin: DoEvents: Loop
          n = n + 1
       Loop
End Sub

Merci d'avance pour votre aide

Il sera nécessaire de stocker quelque part (probablement dans une colonne cachée) l'information sur le status de ton "clignoteur".

Quelque chose comme ceci:

Private Sub Worksheet_Change(ByVal Target As Range)
       If [R25] = "TINTIN" Then
       Shapes("monshape").Visible = True
       Shapes("monshape").TextFrame.Characters.Text = "ATTENTION TINTIN" '& _
         'Chr(10) & Format([B7], "")
       Clignote "monshape", 2
       Shapes("monshape").Visible = False
     Else
       Shapes("monshape").Visible = False
       Range("ADejaClignote").Value = False 
     End If
  'End If
End Sub

Sub Clignote(s, nb)
       n = 0
If Range("ADejaClignote").Value = True Then Exit Sub
       Do While n < nb
          ActiveSheet.Shapes(s).Visible = False
          fin = Timer + 0.2
          Do While Timer < fin:  DoEvents: Loop
          ActiveSheet.Shapes(s).Visible = True
          fin = Timer + 0.5
          Do While Timer < fin: DoEvents: Loop
          n = n + 1
       Loop
Range("ADejaClignote").Value = True 
End Sub

Essaie si cela marche - il faut juste définir ta range "ADejaClignote" & vérifier si j'ai mis les lignes Range("ADejaClignote").Value = True / False au bon endroit dans le code. (je n'ai pas le temps de vérifier maintenant, sorry...)

Bonjour Excel Malin

Merci pour ton aide.

Cela beugais au début, mais quand j'ai supprimé le Range("ADejaClignote").Value = False que tu avais mis dans la Private sub, cela fonctionnait.

Un grand merci à toi

Private Sub Worksheet_Change(ByVal Target As Range)
       If [R25] = "TINTIN" Then
       Shapes("monshape").Visible = True
       Shapes("monshape").TextFrame.Characters.Text = "ATTENTION TINTIN" '& _
         'Chr(10) & Format([B7], "")
       Clignote "monshape", 2
       Shapes("monshape").Visible = False
     Else
       Shapes("monshape").Visible = False
       'Range("ADejaClignote").Value = False
     End If
  'End If
End Sub

Sub Clignote(s, nb)
       n = 0
If Range("ADejaClignote").Value = True Then Exit Sub
       Do While n < nb
          ActiveSheet.Shapes(s).Visible = False
          fin = Timer + 0.2
          Do While Timer < fin:  DoEvents: Loop
          ActiveSheet.Shapes(s).Visible = True
          fin = Timer + 0.5
          Do While Timer < fin: DoEvents: Loop
          n = n + 1
       Loop
Range("ADejaClignote").Value = True 
End Sub
Rechercher des sujets similaires à "execution unique macro"