VBA encadrer /centrer / mettre en forme

Bonjour,

je génère un fichier en prenant des informations d'une base de donnée et souhaiterais savoir comment mettre cela en forme .

j'extrais donc les données et cela me donne le fichier rapport 1

je voudrais via vba permettre l'affichage en mode rapport 2.

soit

1) rajouter des lignes séparatrices entre Status pour plus de lisibilité sachant que je ne connais pas par avance le nombre de ligne de chacune

on doit pouvoir utiliser l'instruction suivante mais je ne connais pas les lignes apres active etc.

Rows("10:10").Insert Shift:=xlup

2) encadrer l'ensemble des lignes de chaque statut de colonne A à I mais je 'y arrive pas..

Fin = Range("A" & Rows.Count).End(xlUp).Row
Set Projects = Sheets("Feuil1").Range("A4: F" & Fin)

With [Projects].ListObject
    Set d = .ListColumns("Status").Range.Find(what:="Active", LookIn:=xlValues, LookAt:=xlWhole)
    Fin = Application.Count(Application.Match(.ListColumns("Status").Range, Array("Active"), 0))

    If Not d Is Nothing Then
        Set Maplage = .Range.Rows(d.Row).Resize(Fin)

Maplage.Select
End If

End With
Sub encadrement()
  With Selection
    .BorderAround LineStyle:=xlDouble
  End With
End Sub

3) fusionner les satus afin que Active / Abandonned etc n’apparaisse qu'une seule fois

aucune idée de comment procéder

Merci par avance pour votre aide.

Bonne journée

10rapport-1.xlsm (16.46 Ko)
10rapport-2.xlsm (16.85 Ko)

Salut Darkangel,

quelque chose comme ceci ?
Un double-clic en [A1] démarre la macro.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim iRow1%, iRow2%, sData$
'
Application.ScreenUpdating = False
'
If Not Intersect(Target, Range("A1")) Is Nothing Then
    Cancel = True
    iRow2 = Range("A" & Rows.Count).End(xlUp).Row
    Columns("I").NumberFormat = "00000 € "
    sData = Range("A" & iRow2).Value
    Application.DisplayAlerts = False
    For x = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
        If Range("A" & x).Value <> sData Then
            iRow1 = x + 1
            Range("A" & iRow1 & ":I" & iRow2).BorderAround Weight:=xlMedium
            Range("A" & iRow1 & ":A" & iRow2).Merge
            Range("A" & iRow1 & ":A" & iRow2).VerticalAlignment = xlVAlignCenter
            Range("A" & iRow1 & ":A" & iRow2).HorizontalAlignment = xlHAlignCenter
            sData = Range("A" & x).Value
            iRow2 = x
            If Range("A" & x) <> "Status" Then
                Rows(iRow1).Insert shift:=xlDown
            Else
                Range("A" & x & ":I" & x).Borders.Weight = xlMedium
                Range("A" & x & ":I" & x).HorizontalAlignment = xlHAlignCenter
                Range("A" & x & ":I" & x).Font.Bold = True
                Exit For
            End If
        End If
    Next
    Application.DisplayAlerts = False
End If
'
Application.ScreenUpdating = True
'
End Sub 
7darkangel.xlsm (19.33 Ko)

M'y fait pas à cet éditeur...

Je disais donc...


A+

merci à vous curulis57.

cela fonctionne parfaitement.

mais il me reste désormais à en comprendre le fonctionnement qui fonctionne du bas vers le haut.

Salut Darkangel,

pour comprendre pourquoi il faut opérer de bas en haut, visualise la valeur de iRow1 APRÈS avoir inséré la ligne vide...
Fais le calcul de haut en bas et de bas en haut : tu devrais comprendre rapidement!


A+

Rechercher des sujets similaires à "vba encadrer centrer mettre forme"