Quelqu'un saurait comment faire une macro pour copier les données d'un TCD sans les entêtes pour les coller dans une autre feuille sans les fameux "(vide)"
Je bute sur 2 problèmes, la plage de données des TCD qui peut s'étirer variablement sur pas mal de lignes selon l'évolution de la source des données et le collage qui doit se faire à chaque fois sur la 1ere ligne vide de la nouvelle feuille.
En gros je veux lancer cette macro via un bouton. Je fais un filtre sur mon TCD puis je clique le bouton, il me copie toutes les données à partir de A2 (autre feuille déjà existante avec entêtes pré-remplies), je fais un filtre différent, je clique le bouton puis il colle à la suite etc etc
Trop chaud pour moi mais je sais qu'il y a des crack ici donc si vous pouvez m'aider je vous paye un coup si vous passez par l'Alsace ;)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Le 2019-03-14 à 16:58, NoyeuxJoel a écrit :
Bonjour à tous ! Quelqu'un saurait comment faire une macro pour copier les données d'un TCD sans les entêtes pour les coller dans une autre feuille sans les fameux "(vide)" Je bute sur 2 problèmes, la plage de données des TCD qui peut s'étirer variablement sur pas mal de lignes selon l'évolution de la source des données et le collage qui doit se faire à chaque fois sur la 1ere ligne vide de la nouvelle feuille. En gros je veux lancer cette macro via un bouton. Je fais un filtre sur mon TCD puis je clique le bouton, il me copie toutes les données à partir de A2 (autre feuille déjà existante avec entêtes pré-remplies), je fais un filtre différent, je clique le bouton puis il colle à la suite etc etc Trop chaud pour moi mais je sais qu'il y a des crack ici donc si vous pouvez m'aider je vous paye un coup si vous passez par l'Alsace ;)
Bonjour, Voici un exemple d'une procédure pour copier toutes les données de tous les TDC sans l'étiquette de ligne ou colonnes vers une autre feuille. Pour les cellules vides du tdc, un clic droit sur le TDC, options du tableau croisé dynamique Onglet : Disposition et mise en forme Case : Format, tu indiques ce que tu veux inscrire dans les cellules vides En VBA, c'est cette ligne de code qui fait le travail: .PivotTables(A).NullString = "0" '------------------------------------------ Sub test() Dim DerLig As Long, Nb As Long, A As Long Dim T As PivotTable, Rg As Range 'Feuil1 = endroit où sont les TDC With Feuil1 ' Worksheets("Feuil1") 'Nombre de TDC dans la feuille Nb = .PivotTables.Count 'pour boucler sur tous les TDC de la feuille For A = 1 To Nb 'Mettre des 0 dans les cellules vides du TDC .PivotTables(A).NullString = "0" 'Détermine la plage de cellules occupée seulement 'par les données sans les étiquettes de colonnes 'ou de lignes Set Rg = .PivotTables(A).DataBodyRange 'Endroit où seront copiées les données With Worksheets("Feuil2") 'Si la feuil2 est totalement vide, la ligne suivante 'Provoque une erreur d'où On Error resume next On Error Resume Next 'Trouve la dernière ligne vide dans la feuil2 DerLig = .Cells.Find("*", LookIn:=xlFormulas, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 'Trouve la dernière ligne vide dans la feuil2 If Err <> 0 Then DerLig = 1 Err = 0 Else 'Si tu veux une ligne vide entre les 2 tableaux, DerLig = DerLig + 2 End If 'La copie elle-même Rg.Copy .Range("A" & DerLig) End With Next End With End Sub '------------------------------------------ MichD
Le 2019-03-14 à 16:58, NoyeuxJoel a écrit :
Bonjour à tous !
Quelqu'un saurait comment faire une macro pour copier les données d'un TCD sans
les entêtes pour les coller dans une autre feuille sans les fameux "(vide)"
Je bute sur 2 problèmes, la plage de données des TCD qui peut s'étirer
variablement sur pas mal de lignes selon l'évolution de la source des données et
le collage qui doit se faire à chaque fois sur la 1ere ligne vide de la nouvelle
feuille.
En gros je veux lancer cette macro via un bouton. Je fais un filtre sur mon TCD
puis je clique le bouton, il me copie toutes les données à partir de A2 (autre
feuille déjà existante avec entêtes pré-remplies), je fais un filtre différent,
je clique le bouton puis il colle à la suite etc etc
Trop chaud pour moi mais je sais qu'il y a des crack ici donc si vous pouvez
m'aider je vous paye un coup si vous passez par l'Alsace ;)
Bonjour,
Voici un exemple d'une procédure pour copier toutes les données de tous
les TDC sans l'étiquette de ligne ou colonnes vers une autre feuille.
Pour les cellules vides du tdc, un clic droit sur le TDC,
options du tableau croisé dynamique
Onglet : Disposition et mise en forme
Case : Format, tu indiques ce que tu veux inscrire
dans les cellules vides
En VBA, c'est cette ligne de code qui fait le travail:
.PivotTables(A).NullString = "0"
'------------------------------------------
Sub test()
Dim DerLig As Long, Nb As Long, A As Long
Dim T As PivotTable, Rg As Range
'Feuil1 = endroit où sont les TDC
With Feuil1 ' Worksheets("Feuil1")
'Nombre de TDC dans la feuille
Nb = .PivotTables.Count
'pour boucler sur tous les TDC de la feuille
For A = 1 To Nb
'Mettre des 0 dans les cellules vides du TDC
.PivotTables(A).NullString = "0"
'Détermine la plage de cellules occupée seulement
'par les données sans les étiquettes de colonnes
'ou de lignes
Set Rg = .PivotTables(A).DataBodyRange
'Endroit où seront copiées les données
With Worksheets("Feuil2")
'Si la feuil2 est totalement vide, la ligne suivante
'Provoque une erreur d'où On Error resume next
On Error Resume Next
'Trouve la dernière ligne vide dans la feuil2
DerLig = .Cells.Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'Trouve la dernière ligne vide dans la feuil2
If Err <> 0 Then
DerLig = 1
Err = 0
Else
'Si tu veux une ligne vide entre les 2 tableaux,
DerLig = DerLig + 2
End If
'La copie elle-même
Rg.Copy .Range("A" & DerLig)
End With
Next
End With
End Sub
'------------------------------------------
Bonjour à tous ! Quelqu'un saurait comment faire une macro pour copier les données d'un TCD sans les entêtes pour les coller dans une autre feuille sans les fameux "(vide)" Je bute sur 2 problèmes, la plage de données des TCD qui peut s'étirer variablement sur pas mal de lignes selon l'évolution de la source des données et le collage qui doit se faire à chaque fois sur la 1ere ligne vide de la nouvelle feuille. En gros je veux lancer cette macro via un bouton. Je fais un filtre sur mon TCD puis je clique le bouton, il me copie toutes les données à partir de A2 (autre feuille déjà existante avec entêtes pré-remplies), je fais un filtre différent, je clique le bouton puis il colle à la suite etc etc Trop chaud pour moi mais je sais qu'il y a des crack ici donc si vous pouvez m'aider je vous paye un coup si vous passez par l'Alsace ;)
Bonjour, Voici un exemple d'une procédure pour copier toutes les données de tous les TDC sans l'étiquette de ligne ou colonnes vers une autre feuille. Pour les cellules vides du tdc, un clic droit sur le TDC, options du tableau croisé dynamique Onglet : Disposition et mise en forme Case : Format, tu indiques ce que tu veux inscrire dans les cellules vides En VBA, c'est cette ligne de code qui fait le travail: .PivotTables(A).NullString = "0" '------------------------------------------ Sub test() Dim DerLig As Long, Nb As Long, A As Long Dim T As PivotTable, Rg As Range 'Feuil1 = endroit où sont les TDC With Feuil1 ' Worksheets("Feuil1") 'Nombre de TDC dans la feuille Nb = .PivotTables.Count 'pour boucler sur tous les TDC de la feuille For A = 1 To Nb 'Mettre des 0 dans les cellules vides du TDC .PivotTables(A).NullString = "0" 'Détermine la plage de cellules occupée seulement 'par les données sans les étiquettes de colonnes 'ou de lignes Set Rg = .PivotTables(A).DataBodyRange 'Endroit où seront copiées les données With Worksheets("Feuil2") 'Si la feuil2 est totalement vide, la ligne suivante 'Provoque une erreur d'où On Error resume next On Error Resume Next 'Trouve la dernière ligne vide dans la feuil2 DerLig = .Cells.Find("*", LookIn:=xlFormulas, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 'Trouve la dernière ligne vide dans la feuil2 If Err <> 0 Then DerLig = 1 Err = 0 Else 'Si tu veux une ligne vide entre les 2 tableaux, DerLig = DerLig + 2 End If 'La copie elle-même Rg.Copy .Range("A" & DerLig) End With Next End With End Sub '------------------------------------------ MichD