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
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