[Excel] Tableau croisé dynamique avec macro
Résolu/Fermé
Arn's
Messages postés
23
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
26 août 2009
-
19 août 2009 à 22:33
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 8 oct. 2009 à 07:43
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 8 oct. 2009 à 07:43
A voir également:
- [Excel] Tableau croisé dynamique avec macro
- Tableau croisé dynamique - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Trier tableau excel - Guide
- Tableau word - Guide
- Tableau ascii - Guide
4 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
19 août 2009 à 22:46
19 août 2009 à 22:46
bonjour
Tu devrais vérifier ceci
Il est toujours préférable en plus de nommer ta plage de données du TCD avec DECALER pour qu'elle suive les modifications d'ajout et suppression.
Tu devrais vérifier ceci
"Feuil1!C1:C7"car il me semble qu'il n'y a pas toutes les données que tu veux utiliser ensuite.
Il est toujours préférable en plus de nommer ta plage de données du TCD avec DECALER pour qu'elle suive les modifications d'ajout et suppression.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
7 oct. 2009 à 23:13
7 oct. 2009 à 23:13
bonjour
"DJ!c1:c2290" n'a pas grand chose de commun avec "DJ!A1:N2000" car tu n'as mis qu'une colonne.
Faudrait aussi supprimer le premier ordre "Feuil1!C1:C7" qui fait tout planter probablement.
"DJ!c1:c2290" n'a pas grand chose de commun avec "DJ!A1:N2000" car tu n'as mis qu'une colonne.
Faudrait aussi supprimer le premier ordre "Feuil1!C1:C7" qui fait tout planter probablement.
Merci gbinforme,
en effet, ca n'avait pas grand chose à voir!
Je cherche à créer un bouton (1 par ligne) qui me permet de copier les informations de 5 cellulles d'une ligne (B3; F3;G3;H3 et J3) dans 5 cellulles d'un autre fichier excel (B7 à B11).
Ca doit etre facile, mais pour moi c est titanesque!
Merci pour vos idées,
Guillaume
en effet, ca n'avait pas grand chose à voir!
Je cherche à créer un bouton (1 par ligne) qui me permet de copier les informations de 5 cellulles d'une ligne (B3; F3;G3;H3 et J3) dans 5 cellulles d'un autre fichier excel (B7 à B11).
Ca doit etre facile, mais pour moi c est titanesque!
Merci pour vos idées,
Guillaume
Arn's
Messages postés
23
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
26 août 2009
7
20 août 2009 à 10:19
20 août 2009 à 10:19
Merci beaucoup gbinforme, c'était donc ça. Je comprends pas pourquoi l'enregistreur s'est planté. J'ai recommencé en sélectionnant les colonnes A à G, comme la première fois, et dans le code j'obtiens toujours C1 à C7. Mais en modifiant cette plage à la main, tout rentre dans l'ordre.
Bonjour,
pourrai tu m'expliquer comment tu as résolu ton probleme, j'ai exactement le meme probleme mais je ne m'y connais pas, j'ai essayé de modifier "DJ!C1:C14" qui correspiond àu nombre de colonnes de mon tableau par "DJ!A1:N2000" (l'ensemble de mon tableau) sans succes
Merci pour la réponse,
Guillaume
PS: Voici mon code
Sub Tableau_croisé()
'
' Tableau_croisé Macro
' Macro enregistrée le 01/10/2009 par VIGUERARD Stéphane
'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!C1:C7").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
'
Cells.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"DJ!c1:c2290").CreatePivotTable TableDestination:="", TableName:=
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields( _
"Degres-jours (base T C int.) COSTIC"), _
"Nombre de Degres-jours (base T C int.) COSTIC", xlCount
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Année")
.Orientation = xlRowField
.Position = 1
End With
Range("A3").Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Nombre de Degres-jours (base T C int.) COSTIC").Function = xlSum
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "TABLEAU DJ"
Sheets("CONSOMMATIONS").Select
Cells.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"CONSOMMATIONS!C1:C16").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Identification compteur")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Mois")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Année")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique2").PivotFields("Consommation"), _
"Nombre de Consommation", xlCount
Range("A3").Select
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Nombre de Consommation").Function = xlSum
ActiveWindow.SmallScroll Down:=-3
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Unite d'enregistrement")
.Orientation = xlRowField
.Position = 1
End With
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "TABLEAU CONSOMMATIONS"
End Sub
pourrai tu m'expliquer comment tu as résolu ton probleme, j'ai exactement le meme probleme mais je ne m'y connais pas, j'ai essayé de modifier "DJ!C1:C14" qui correspiond àu nombre de colonnes de mon tableau par "DJ!A1:N2000" (l'ensemble de mon tableau) sans succes
Merci pour la réponse,
Guillaume
PS: Voici mon code
Sub Tableau_croisé()
'
' Tableau_croisé Macro
' Macro enregistrée le 01/10/2009 par VIGUERARD Stéphane
'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!C1:C7").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
'
Cells.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"DJ!c1:c2290").CreatePivotTable TableDestination:="", TableName:=
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields( _
"Degres-jours (base T C int.) COSTIC"), _
"Nombre de Degres-jours (base T C int.) COSTIC", xlCount
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Année")
.Orientation = xlRowField
.Position = 1
End With
Range("A3").Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Nombre de Degres-jours (base T C int.) COSTIC").Function = xlSum
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "TABLEAU DJ"
Sheets("CONSOMMATIONS").Select
Cells.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"CONSOMMATIONS!C1:C16").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Identification compteur")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Mois")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Année")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique2").PivotFields("Consommation"), _
"Nombre de Consommation", xlCount
Range("A3").Select
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Nombre de Consommation").Function = xlSum
ActiveWindow.SmallScroll Down:=-3
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Unite d'enregistrement")
.Orientation = xlRowField
.Position = 1
End With
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "TABLEAU CONSOMMATIONS"
End Sub
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
8 oct. 2009 à 07:43
8 oct. 2009 à 07:43
bonjour
Ca doit etre facile, mais pour moi c est titanesque
Facile non, titanesque oui car faire un bouton par ligne c'est plus compliqué et plus long que de faire un seul bouton qui traite la ligne sélectionnée.
Avec cette macro, dans ta feuille concernée tu copie la ligne que tu veux, sans bouton, simplement avec un double clis sur une des cellules de la ligne.
Bien sûr tu remplaces les valeurs en gras par les tiennes propres et si tu veux tu peux choisir le classeur de copie avec une fenêtre de sélection.
Ca doit etre facile, mais pour moi c est titanesque
Facile non, titanesque oui car faire un bouton par ligne c'est plus compliqué et plus long que de faire un seul bouton qui traite la ligne sélectionnée.
Avec cette macro, dans ta feuille concernée tu copie la ligne que tu veux, sans bouton, simplement avec un double clis sur une des cellules de la ligne.
Private Sub Worksheet_BeforeDoubleClick(ByVal sel As Range, Cancel As Boolean) Dim dest As Range Set dest = Workbooks("classeur1").Sheets("copie").Range("B7") Cancel = True Cells(sel.Row, "B").Copy Destination:=dest Cells(sel.Row, "F").Copy Destination:=dest.Offset(1, 0) Cells(sel.Row, "G").Copy Destination:=dest.Offset(2, 0) Cells(sel.Row, "H").Copy Destination:=dest.Offset(3, 0) Cells(sel.Row, "J").Copy Destination:=dest.Offset(4, 0) End Sub
Bien sûr tu remplaces les valeurs en gras par les tiennes propres et si tu veux tu peux choisir le classeur de copie avec une fenêtre de sélection.