Insertion code clignotement dans code insertion ligne

Résolu
Bonsoir.

Sur mon Bouton d'insertion de ligne existant:

'Insérer Ligne
Private Sub CommandButton3_Click()
For i = 1 To 2
Sheets(i).Cells(3, 1).EntireRow.Insert
Sheets(i).Rows(Cells(3, 1).Row + 1).Copy Sheets(i).Rows(Cells(3, 1).Row)
On Error Resume Next
Sheets(i).Rows(Cells(3, 1).Row).SpecialCells(xlCellTypeConstants, 23).ClearContents
Dim plage As Range
Set plage = Sheets(i).Range("A3:G3000")
plage.Borders(xlEdgeBottom).LineStyle = xlContinuous
plage.Borders(xlInsideHorizontal).LineStyle = xlContinuous
Next
End Sub
je voudrais intégrer ce code pour faire clignoter une cellule (H1)

If t = 0 Then
Range("H1").Interior.ColorIndex = 6
t = 1
Else
Range("H1").Interior.ColorIndex = 2
t = 0
End If
temps = Now + TimeValue("00:00:01")
Application.OnTime EarliestTime:=temps, Procedure:="clignote"
Pendant 30 secondes:
Sub temporisation()
Range("H1").Interior.ColorIndex = 6
Application.Wait Now() + TimeValue("0:0:30")
Range("H1").Interior.ColorIndex = 2
End Sub

Comment intégrer ces codes à mon code d'insertion de ligne ?

Merci



--
Windows 8.1 Office 2013

9 réponses

  1. Bonjour,

    dans un module colle ce code

    Option Explicit

    Dim Timer As Date

    Public Sub Clignote()
    Dim t As Range
    Call temporisation
    For Each t In Range("H1").Cells 'Zone du clignotement
    If t.Interior.ColorIndex = xlNone Then
    If t.Value = "" Then
    t.Interior.ColorIndex = 6
    Else
    t.Interior.ColorIndex = 0
    End If
    Else
    t.Interior.ColorIndex = 0
    End If
    Next t
    Timer = Now() + TimeValue("00:00:01") 'le temps du clignotement
    Application.OnTime Timer, "Clignote"
    End Sub
    Sub ArretClignotement()
    On Error Resume Next
    Application.OnTime Timer, "Clignote", , False
    Range("H1").Interior.ColorIndex = xlNone
    End Sub

    Sub temporisation()
    Application.OnTime Now + TimeValue("00:00:30"), "ArretClignotement"
    End Sub


    ensuite tout dépend à quel niveau de ta procédure dans le bouton tu souhaites le clignotement, si c'est après l'insertion des lignes entre Next i et End Sub saisi Call Clignote

    ce qui doit donner
    Next i
    Call Clignote
    End Sub

    si c'est en début de procédure place Call Clignote avant For i = 1 To 2
    0
    1. Merci Mike. Toujours sur la brèche...

      Pas de clignotement.
      PS: Cette cellule H1 est une cellule fusionnée. Est ce important ?

      Merci
      0
  2. Re,

    les cellules fusionnées font mauvais ménage avec les codes, mais dans ce cas si la première cellule de la fusion est H1 ce n'est pas très important, il suffit d'en tenir compte dans les codes, j'ai directement placé le code de temporisation en début de procédure

    Option Explicit

    Dim Timer As Date

    Sub Clignote()
    Dim t As Range
    Application.OnTime Now + TimeValue("00:00:30"), "ArretClignotement"
    For Each t In Range("H1:J1").Cells 'Zone du clignotement
    If t.Interior.ColorIndex = xlNone Then
    If t.Value = "" Then
    t.Interior.ColorIndex = 6
    Else
    t.Interior.ColorIndex = 0
    End If
    Else
    t.Interior.ColorIndex = 0
    End If
    Next t
    Timer = Now() + TimeValue("00:00:01") 'le temps du clignotement
    Application.OnTime Timer, "Clignote"
    End Sub

    Sub ArretClignotement()
    On Error Resume Next
    Application.OnTime Timer, "Clignote", , False
    Range("H1:J1").Interior.ColorIndex = xlNone
    End Sub

    par contre ce qui risque perturber le clignotement c'est la procédure de temporisation si tu la relances avant la fin de la temporisation
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. Toujours pareil.
      Je mets ici un exemple pour que tu voies ce qui cloche.

      Nous récapitulons:
      1) Quand je clic sur "Ajout de ligneé, la cellule H1 se met à clignoter.
      2) Au bout de 30 secondes, le clignotement cesse tout seul.
      Merci

      https://www.cjoint.com/c/EIgrVEId7Im
      0
  3. Merci Mike.
    Mais pour l'instant, je ne peux lire ton fichier.
    Il me renvoie un code illisible...



    Problème déjà rencontré avec des fichiers anciens.
    Provient certainement de cjoint.com.

    Nous verrons si cela passe demain.

    Merci à toi et bonne soirée.

    0
    1. Re,

      tu passes certainement par Mozilla Firebox !

      si c'est le cas soit tu peux passer par Chrome ou je te refais le lien
      0
      1. Tout à fait.
        J'utilise Firefox.
        Et pourtant, sur ce site, à part de vieux fichiers, jamais je n'ai de soucis.
        Je ne veux plus de chrome, pour pas mal de raisons.
        Merci en core à toi.
        0
    2. Re,

      voila avec l'extension XLS ça doit passer, ouvre le et Enregistre Sous dans type choisi l'extension XLSM
      https://www.cjoint.com/c/EIgsPz3ZP2j
      0
      1. Merci Mike.

        Ca fonctionne bien. Mais si je mets du texte dans la cellule qui doit clignoter, ça bogue.
        Cette cellule clignotante est une mise en garde. Un texte est donc prévu.
        (Fond cellule jaune, police rouge)
        0
    3. Re,

      Donc la cellule doit clignoter en fonction de son contenu

      quel doit être le contenu en H1:I2 qui générer le clignotement
      0
      1. Non.
        Je clic sur mon bouton "Insérer une ligne"
        La cellule clignotante se met en branle, Jaune et police Rouge, avec ce texte:

        IMPORTANT:
        Faire un Tri Chronologique
        après chaque Modification
        pour Mise à Jour les Données
        du Graphique

        Au bout de 30 secondes, le cligotement cesse.

        C'est simplement pour me rappeler de faire ce tri chronologique (j'ai un bouton pour) car derrière, j'ai un graphique.
        0
    4. Re,

      Donc cellule H1 texte ou pas texte doit clignoter, c'est bien cela
      0
    5. Re,

      Dans le module VBA remplace le code par celui ci

      Option Explicit

      Dim Timer As Date

      Sub Clignote()
      Dim t As Range
      On Error Resume Next
      Application.OnTime Now + TimeValue("00:00:30"), "ArretClignote"
      For Each t In Range("H1:I2").Cells 'Zone du clignotement
      If t.Interior.ColorIndex = xlNone Then
      If t.Value = "" Or t.Value <> "" Then
      t.Interior.ColorIndex = 6
      t.Font.ColorIndex = 3
      Else
      t.Interior.ColorIndex = 0
      t.Font.ColorIndex = xlAutomatic
      End If
      Else
      t.Interior.ColorIndex = 0
      t.Font.ColorIndex = xlAutomatic
      End If
      Next t
      Timer = Now() + TimeValue("00:00:01") 'le temps du clignotement
      Application.OnTime Timer, "Clignote"
      End Sub

      Sub ArretClignote()
      On Error Resume Next
      On Error Resume Next
      Application.OnTime Timer, "Clignote", , False
      Range("H1:I2").Interior.ColorIndex = xlNone
      End Sub

      0
      1. Superbe Mike.
        Tout fonctionne.
        Merci encore.
        0