Remettre la mise en forme initiale

Hello à tous !

Je travaille sur un fichier qui compile beaucoup de lignes. J'ai ajouté une barre de recherche afin de trouver plus rapidement l'élément que l'on cherche et la macro scroll la feuille à la place de l'utilisateur une fois la ligne trouvée.

Par contre, sur mon fichier j'ai une mise en forme particulière : c'est à dire que certaines lignes sont en remplissage bleu clair à la base. Si on effectue une recherche, elle va mettre en vert les résultats trouvés (jusque-là ok) mais malheureusement lorsque j'efface ma recherche, les cases sont toutes redevenues en remplissage blanc. Elles ne reviennent pas à leur couleur d'origine.

J'aimerais donc améliorer mon code ci-dessous en disant : si textbox = clear --> garder les couleurs initiales des cases.

Une idée svp ?

Merci !!

Private Sub TextBox1_Change()
Application.ScreenUpdating = False
Dim Lg As Long

    Range("C10:C1611").Interior.ColorIndex = 2

    If TextBox1 <> "" Then
        For Ligne = 10 To 1611
            If Cells(Ligne, 3) Like "*" & TextBox1 & "*" Then
              If Lg = 0 Then
                Lg = Ligne
                ActiveWindow.ScrollRow = Lg
              End If
                Cells(Ligne, 3).Interior.ColorIndex = 43
            End If
        Next
    Else
      ActiveWindow.ScrollRow = 9
    End If

End Sub

Bonjour,

Tu peux supprimer la remise à zéro de la couleur des cellules juste avec une appostrophe devant la ligne :

'Range("C10:C1611").Interior.ColorIndex = 2

Par contre je ne vois pas trop comment excel pourrait redonner la couleur précédente car il n'y a pas d'historique des cellules

modifiées lors d'une précédente recherche.

Tu peux stocker la valeur de la couleur précédente en ajoutant juste avant le changement de couleur

Dim precoul as long

precoul=Cells(Ligne, 3).Interior.ColorIndex

Cells(Ligne, 3).Interior.ColorIndex = 43

Le problème est que je ne vois pas à quel moment réutiliser "precoul" pour remettre la couleur précédente.

Ou alors faudrait exporter les infos de la plage modifié et la valeur de color index dans un autre onglet pour

pourvoir les "recharger" au prochain lancement de ta macro et ainsi remettre la couleur d'origine

en début de macro avant de poursuivre ?

Si quelqu'un d'autre à une idée à partir de là ?

Hello,

Merci pour ta réponse !

Alors j'ai un peu "arnaqué" la chose en faisant comme ceci :

Private Sub TextBox1_Change()
Application.ScreenUpdating = False
Dim Lg As Long

    Range("C10:C1611").Interior.ColorIndex = 2

    If TextBox1 <> "" Then
        For Ligne = 10 To 1611
            If Cells(Ligne, 3) Like "*" & TextBox1 & "*" Then
              If Lg = 0 Then
                Lg = Ligne
                ActiveWindow.ScrollRow = Lg
              End If
                Cells(Ligne, 3).Interior.ColorIndex = 43
            End If
        Next
    Else
      ActiveWindow.ScrollRow = 9
    End If

 If TextBox1 = "" Then
 ActiveSheet.Range("$B$8:$J$655").AutoFilter Field:=5, Criteria1:="<>"
    Range("C9").Select
    Range(Selection, Selection.End(xlDown)).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent5
        .TintAndShade = 0.799981688894314
        .PatternTintAndShade = 0
    End With
    ActiveSheet.Range("$B$8:$J$655").AutoFilter Field:=5
    Range("A1").Select
    Else
    End If

End Sub

C'est pas parfait mais ça fonctionne pour l'instant !

Si quelqu'un d'autre a une meilleure idée que mon bidouillage, je suis preneur merci beaucoup

Re,

il suffit d'indiquer une plage de recherche au lieu d'une colonne de recherche

 If TextBox1 <> "" Then
        For Ligne = 10 To 1611
            If Cells(Ligne, 2), Cells(Ligne, 3) Like "*" & TextBox1 & "*" Then
Rechercher des sujets similaires à "remettre mise forme initiale"