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