Code VBA pour supprimer la surbrillance d'une colonne

Bonjour à tous,

Je suis en train de créer un calendrier de maintenance sur une machine.

J'ai placé toutes les dates de l'année sur une ligne et j'ai créé un code VBA afin d'ouvrir mon fichier à la date du jour et que la colonne de la cellule active soit en surbrillance.

Mon problème est que si j'ouvre mon fichier le lendemain, la colonne du jour se met en surbrillance mais l'ancienne ne disparait pas...

Et sur ce point je suis un peu coincé.

Voici le code VBA:

Sub Auto_Open()

Dim cellule As Range

For Each cellule In Sheets("Calendar").Range("B4:ADN4")

If cellule = Date Then

Cells(5, cellule.Column).Select

End If

Next cellule

With ActiveCell

Range(Cells(.Row, .CurrentRegion.Column), Cells(.Row, .CurrentRegion.Columns.Count + .CurrentRegion.Column - 1)).Interior.ColorIndex = 17

Range(Cells(.CurrentRegion.Row, .Column), Cells(.CurrentRegion.Rows.Count + .CurrentRegion.Row - 1, .Column)).Interior.ColorIndex = 17

End With

Application.ScreenUpdating = True

End Sub

Deux solutions sont possibles:

soit arriver à trouver le code pour supprimer l'ancienne action,

soit au lieu d'être en surbrillance, simplement sélectionner entièrement la colonne de la cellule active (mais je ne sais pas le faire... Avec la fonction EntireColumn.Select toutes mes colonnes se sélectionnent pas que celle active.)

Merci de me venir en aide.

Bonjour,

Auto_Open date un peu...

Utilise plutôt, dans ThisWorkbook : Private Sub Workbook_Open()

Et dans la même veine tu as Private Sub Workbook_BeforeClose(Cancel As Boolean)

qui te permettra d'enlever ton truc à la fermeture.

Difficile d'en faire plus sans fichier

eric

Bonjour,

Merci pour la réponse, par contre je n'ai pas compris le "Auto_Open date un peu..."

J'ai ouvert mon fichier ce matin et à priori ça marche sans avoir rien changé...

Je vais quand même essayer ta réponse dans une copie de mon fichier. Je reviens vers toi avec la pièce jointe si ça ne marche pas.

Merci.

Adrien

Bonjour,

Auto_Open c'était dans les 1ères versions d'excel, avec vba ça a évolué.

Heureusement que ça marche encore, c'est ce qu'on appelle la compatibilité descendante.

eric

Du coup pour que ma macro se lance automatiquement à l'ouverture, je n'ai pas besoin de ça?

Adrien

Tes tests on donné quoi ?

Bonjour,

Un exemple.

Dans ThisWorkbook :

Private Sub Workbook_Open()
    FormatCells
End Sub

Dans un module standard :

Public Sub FormatCells()
Dim ws As Worksheet
Dim rCell As Range, rng As Range
Dim Lrow As Long

    Set ws = ActiveWorkbook.Worksheets("Feuil1")
    With ws
        Lrow = .Cells.SpecialCells(xlCellTypeLastCell).Row
        On Error Resume Next
        Set rCell = .Rows("4:4").Find(what:=Date, LookIn:=xlValues)
        On Error GoTo 0
        If Not rCell Is Nothing Then
            Set rng = .Range(rCell, Cells(Lrow, rCell.Column))
            rng.Offset(0, -1).Interior.ColorIndex = xlColorIndexNone
            rng.Interior.ColorIndex = 17
           rCell.Select
        End If
           End With

    Set rng = Nothing: Set rCell = Nothing: Set ws = Nothing

End Sub
36didy73.xlsm (17.03 Ko)

bonjour jean-Eric, ton code m'affiche un beug sur cette ligne "Set ws = ActiveWorkbook.Worksheets("Feuil1")" que je n'arrive pas à enlever.

Pour l'autre test c'est un peu pareil je vois pas l'avantage de mettre le code dans ThisWorkbook...

Je vous joint mon fichier, mais je crois sans en être sur qu'il marche...

Bonjour,

je vois pas l'avantage de mettre le code dans ThisWorkbook...

Aucun avantage. Maintenant on se sert des événements classeurs qui ont été créés pour ça, mais tu n'es pas obligé puisque l'ancienne méthode fonctionne.

Pourquoi tu ne fais pas une simple MFC (mise en forme conditionnelle) ?

Pas besoin de vba pour faire ça.

eric

Je croyais que ce n'était pas possible de sélectionner toute ma colonne du jour dès l'ouverture du fichier avec une MFC..

Il aurait fallu créer une cellule =today() et chercher la colonne dont une cellule est égale à cette valeur?

J'aimerais ensuite créer une interface avec boutons et listes déroulantes pour sécuriser un peu mon fichier en cas de mauvaise manipulation d'un tiers. Avez-vous des conseils là dessus?

Tu sélectionnes ta plage F4:NI68 et en formule de MFC :

=F$4=AUJOURDHUI()

Pour le reste démarre un nouveau topic avec un titre en relation.

eric

Rechercher des sujets similaires à "code vba supprimer surbrillance colonne"