Macros pour appliquer bordures puis masquer des lignes

Bonjour à tous,

Grâce à tous vos posts, je progresse un peu, mais là...je rame.

Dans le fichier joint, qui à terme fera 2000 lignes sur 290 colonnes, en colonne A, j'ai une formule qui renvoie soit une date, soit la valeur "-" soit la valeur " ", et je voudrais

1. Appliquer une bordure de ligne haute sur tout mon tableau (290colonnes) si la cellule A contient une date

2. Masquer toutes les lignes sont la colonne A contient la valeur " "

Pouvez vous m'aider sur ce coup là ? Un grand merci d'avance à tous.

Vincent

Bonjour,

Je pense que le code ci-dessous fera ce que tu attends.

Sub test()
    Dim i As Integer
    For i = 5 To 2000
        If Cells(i, 1) = "" Then
            Rows(i).Hidden = True
        Else
            Range(Cells(i, 1), Cells(i, 290)).Borders(xlEdgeTop).LineStyle = xlContinuous
        End If
    Next
End Sub

Merci beaucoup, c'est top.

Il y a encore un point qui me bloque : j'aimerais dupliquer les lignes 3 et 4 (lignes où apparaissent les graduations horaires) au dessus de chaque ligne dont la colonne A est une date.

Peux tu encore m'aider sur ce point ? Merci encore +++.

Vincent

Sub test()
    Dim i As Integer
    Dim j As Long
    j = 2000
    For i = 5 To j
        If Cells(i, 1) = "" Then
            Rows(i).Hidden = True
        Else
            Range(Cells(i, 1), Cells(i, 290)).Borders(xlEdgeTop).LineStyle = xlContinuous
            If Cells(i, 1) <> "-" And i <> 5 Then
                Range(Cells(i, 1), Cells(i + 1, 1)).EntireRow.Insert
                i = i + 2
                Range(Cells(3, 1), Cells(4, 290)).Copy Range(Cells(i - 2, 1), Cells(i - 1, 290))
                j = j + 2
            End If
        End If
    Next
End Sub

Avec ce code ça marche, ton tableau fera donc plus de 2000 lignes comme on insère des lignes supplémentaire de graduation.

Si les 2000 lignes contiennent des dates ça risque de prendre du temps, tu peux rajouter ça pour que la macro soit plus rapide (mettre le code du dessus entre) :

    Application.ScreenUpdating = False
    Application.DisplayStatusBar = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False

    'code

    Application.ScreenUpdating = True
    Application.DisplayStatusBar = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True

Au plaisir de t'aider !!

GEANTISSIME !!!!

Je n'ai pas encore testé, mais je suis d'ores et déjà épaté. Merci beaucoup.

Bonne journée

Bonjour Flo Bru,

J'ai pu tester ton script, et l'adapter, c'est extra à 99%.

J'avoue que je ne comprends pas forcément ce que fait la partie

If Cells(i, 1) <> "-" And i <> 5 Then
Range(Cells(i, 1), Cells(i + 1, 1)).EntireRow.Insert
i = i + 2
Range(Cells(3, 1), Cells(4, 290)).Copy Range(Cells(i - 2, 1), Cells(i - 1, 290))
j = j + 2

j'imagine que c'est le copier / insertion cellules copiées, mais je ne comprends pas la chronologie.

Or là, j'aimerais rajouter une reproduction de mise en forme de ma ligne 3 vers toutes les lignes issues de la 3, mais du coup, je ne vois pas où placer le

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Parce que sans ça, les entêtes copiées ne sont pas en format vertical et sont illisibles.
Te serait-il possible de m'aider encore stp ? en m'expliquant si tu as le temps l'extrait de script que je t'ai copié ci-dessus, histoire que j'essaye de devenir à peine moins assisté !!!!

Merci d'avance et encore pour ton extra aide.

Bien à toi.

Vincent

Rechercher des sujets similaires à "macros appliquer bordures puis masquer lignes"