Créer tableau à la première cellule vide

Bonjour à tous,

Voila je bloque sur un sujet.

Je souhaiterai dans le cadre d'une automatisation de création de tableau que ceux ci s'incrémentent les un sous les autres.

Cependant selon les mois les données ne sont pas les même donc le nombre de lignes des tableaux varient.

J'aimerai savoir quelle possibilité si elle existe (je n'en doute pas ) de dire a excel de copier le tableau sous le suivant mais 2 lignes en dessous.

J'espère avoir être clair si besoin de complément n'hésitez pas

Bonjour,

Merci de joindre un fichier (avec des données) que l'on voit la structure de tes données.

Cdlt.

Je n'ai pas de fichier type encore.

C'est en réfléchissant à la conception que j'ai constaté que d'un fichier à un autre le nombre de lignes n'allaient pas être le même et que donc cela aurait pour incidence de faire bug l'automatisation car il n' y aurait pas de ligne où l'insérer.

un exemple écrit : le tableau fini en ligne A79(la cellule ici est à titrre d'exemple) je souhaiterai que le suivant s'incrémente 2 ligne en dessous

Merci d'avance

Cordialement

Re,

Un exemple à placer dans ton fichier qui n'existe pas encore.

Cdlt.

Public Sub Ozeoo()
Dim ws As Worksheet, n As Long, rCell As Range
    With ActiveSheet
        'Dernière ligne non vide de la colonne 1
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        'Initialisation cellule de destination (n+2)
        Set rCell = .Cells(n, 1).Offset(2)
    End With
    MsgBox rCell.Row
End Sub

Merci Jean Eric.

Je vais quand même de faire un fichier et d’incorporer ta macro

Re,

Ce n'est pas pour ennuyer que l'on demande un classeur mais pour éviter une perte de temps.

Perte de temps pour le demandeur et pour nous qui essayons de répondre à sa question.

Cdlt.

J'ai tenté d'automatisé la création des TCD toujours avec le souci que d'un mois à l'autres le nombre de ligne sera différent pour chaque tableau

Pas de souci pour créer le premier mais pour le seconde la macro bug.

Vous trouverez ci joint le fichier merci d'avance pour vos réponses

Bonjour,

Ton fichier en retour avec avant tout la mise en forme des données en tableau (dynamique).

A te relire.

Cdlt.

Option Explicit

Public Sub CreatePivotTables()
Dim wb As Workbook
Dim wsData As Worksheet, wsPT As Worksheet
Dim rngPT As Range
Dim PTCache As PivotCache
Dim pt As PivotTable

    Application.ScreenUpdating = False
    '---------------------------------------------------------------------------------
    Set wb = ActiveWorkbook
    Set wsData = wb.Worksheets("Données")
    Set rngPT = wsData.ListObjects(1).Range
    Set wsPT = wb.Worksheets("Analyse")
    '---------------------------------------------------------------------------------
    On Error Resume Next
    For Each pt In wsPT.PivotTables
        pt.TableRange2.Clear
    Next pt
    On Error GoTo 0
    '---------------------------------------------------------------------------------
    Set PTCache = wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rngPT)
    '---------------------------------------------------------------------------------
    Set pt = PTCache.CreatePivotTable(wsPT.Cells(3, 1), TableName:="PT_1")
    With pt
        .ManualUpdate = True
        .AddFields RowFields:="Nom"
        With .PivotFields("Poste")
            .Orientation = xlDataField
            .Function = xlCount
            .NumberFormat = "#,##0"
            .Caption = "NB poste"
        End With
        .RowAxisLayout xlTabularRow
        .ManualUpdate = False
    End With
    '---------------------------------------------------------------------------------
    Set pt = PTCache.CreatePivotTable(wsPT.Cells(3, 4), TableName:="PT_2")
    With pt
        .ManualUpdate = True
        .AddFields RowFields:="Ville"
        With .PivotFields("Poste")
            .Orientation = xlDataField
            .Function = xlCount
            .NumberFormat = "#,##0"
            .Caption = "NB poste"
        End With
        .RowAxisLayout xlTabularRow
        .ManualUpdate = False
    End With
    '---------------------------------------------------------------------------------
    Set pt = Nothing
    Set PTCache = Nothing
    Set rngPT = Nothing
    Set wsPT = Nothing: Set wsData = Nothing
    Set wb = Nothing

End Sub

Bonjour,

Une mise à jour avec la procédure commentée.

A te relire si pas suffisant.

Cordialement.

Merci pour ses précisions que me sont fortes utiles

J'ai essayé de reproduire ton code avec un autre tableau mais j'ai un bug sur Set rngPT = wsData.ListObjects(1).Range

J'ai bien crée l'index des données a sélectionner et mis la bonne donnée entre parenthèse mais cela me créée une erreur

edit: j'ai trouvé mon erreur. c'était du à un problème de l'édition de l'index du tableau

Rechercher des sujets similaires à "creer tableau premiere vide"