Mise en forme spécifique en tableau

anber

XLDnaute Occasionnel
Bonsoir le Forum,

Comment mettre en forme via vba des données en tableau, avec création d'un tableau à chaque changement de valeur d'une colonne dédiée.
Ci-joint un fichier exemple avec résultat à obtenir.

Merci
 

Pièces jointes

  • test_insert.xlsx
    12 KB · Affichages: 16

vgendron

XLDnaute Barbatruc
Hello
un essai avec ce code
VB:
Sub Macro1()
'
    With Sheets("base")
        fin = .Range("A" & .Rows.Count).End(xlUp).Row
        Debut = 2
        Numtab = 1
        i = 2
        While i <= fin
           
            If Cells(i, 2) <> Cells(i + 1, 2) Then
                Rows(1).Copy
                Rows(i + 1).Insert shift:=xlDown
                Rows(i + 1).Insert shift:=xlDown
               
                'Range("A" & Debut & ":G" & i).Select
                ActiveSheet.ListObjects.Add(xlSrcRange, Range("A" & Debut - 1 & ":G" & i), , xlYes).Name = "Tableau" & Numtab
                Debut = i + 3
                Numtab = Numtab + 1
                i = i + 3
                fin = fin + 2
            Else
                i = i + 1
            End If
        Wend
        .Rows(fin).Delete
    End With
End Sub
 

anber

XLDnaute Occasionnel
Bonsoir vgendron
Merci pour ta réponse
Pour aller encore plus loin

Comment écrire le résultat dans une autre feuille ?
Ne pas avoir de filtre sur les entêtes ?
De n'avoir les entêtes que sur le 1er tableau
2 lignes de séparations entre chaque tableau

Encore Merci

upload_2017-11-28_19-47-31.png
 

Staple1600

XLDnaute Barbatruc
Re

Et comme cela alors?
VB:
Sub a()
Dim i As Long, rng As Range
Set rng = Sheets("base").UsedRange
For i = rng.Count To 2 Step -1
    If rng.Cells(i, 2).Value <> rng.Cells(i - 1, 2).Value Then
        rng.Cells(i, 1).Resize(2).EntireRow.Insert
    End If
Next
Sheets("base").Rows("2:3").Delete
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 881
Membres
103 981
dernier inscrit
vinsalcatraz