Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1621 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Déplacer données Table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Déplacer données Table

n°1751954
stanymi
Posté le 26-06-2008 à 18:04:13  profilanswer
 

Bonjour
 
J'ai une table BUDGET de 15 colonnes qui est de cette forme
 

Code :
  1. flux - Mois1 - Mois2 - Mois3 - ... - Mois12 - NOLIG - NOCOL
  2. O  - 
  3. Ra  -
  4. Re  -
  5. S  -


 
 
Et en fait, j'ai besoin de transformer cette table en 7 colonnes, avec une macro je présume, pour que les champs deviennent
 

Code :
  1. MOIS - O - Ra - Re - S - NOLIG - NOCOL
  2. Mois1 - 
  3. Mois2 -
  4. Mois3 -
  5. ...
  6. Mois12 -


 
Oui ça peut paraitre très stupide vu comme ça, mais j'ai pas trop le choix...
Alors je sais faire via Excel, mais pour adapter la macro tirée d'Excel vers Access, vu mon niveau en VB, ça se complique franchement...
 
Si vous avez des idées.. Merci !
 
Je me demande si la macro Excel peut aider mais à tout hasard, je la mets :
 

Code :
  1. Sub TcD()
  2.     Cells.Select
  3.     ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
  4.         "Feuil1!C1:C15" ).CreatePivotTable TableDestination:="", TableName:= _
  5.         "Tableau croisé dynamique1"
  6.     ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
  7.     ActiveSheet.Cells(3, 1).Select
  8.     ActiveSheet.PivotTables("Tableau croisé dynamique1" ).SmallGrid = False
  9.     ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields("NOLIG" ). _
  10.         Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
  11.         False, False)
  12.     ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields("NOCOL" ). _
  13.         Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
  14.         False, False)
  15.     ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields("Code flux" ). _
  16.         Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
  17.         False, False)
  18.     ActiveSheet.PivotTables("Tableau croisé dynamique1" ).AddFields RowFields:= _
  19.         Array("NOLIG", "NOCOL", "Données" ), ColumnFields:="Code flux"
  20.     With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
  21.         "BUDGET01" )
  22.         .Orientation = xlDataField
  23.         .Caption = "01"
  24.         .Position = 1
  25.         .Function = xlSum
  26.     End With
  27.     With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
  28.         "BUDGET02" )
  29.         .Orientation = xlDataField
  30.         .Caption = "02"
  31.         .Position = 2
  32.         .Function = xlSum
  33.     End With
  34.     With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
  35.         "BUDGET03" )
  36.         .Orientation = xlDataField
  37.         .Caption = "03"
  38.         .Position = 3
  39.         .Function = xlSum
  40.     End With
  41.     ...
  42.     With ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields( _
  43.         "BUDGET12" )
  44.         .Orientation = xlDataField
  45.         .Caption = "12"
  46.         .Function = xlSum
  47.     End With
  48.     With ActiveSheet.PivotTables("Tableau croisé dynamique1" )
  49.         .ColumnGrand = False
  50.         .RowGrand = False
  51.     End With
  52. End Sub

mood
Publicité
Posté le 26-06-2008 à 18:04:13  profilanswer
 

n°1752083
seniorpapo​u
Posté le 27-06-2008 à 07:15:25  profilanswer
 

Bonjour,
cela ressemble beaucoup à : sélectionner la zone, puis "copier" puis collage spécial et sélectionner "transposer"
 
Ce qui donne en utilisant l'enregistreur de macro:
 
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 27/06/2008 par PAPOU
'
 
'
    Range("A1:D5" ).Select
    Selection.Copy
    Range("A16" ).Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
End Sub
 
("A1:D5" ) étant la zone à transposer, et A16 l'endroit où on veut la mettre.


Message édité par seniorpapou le 27-06-2008 à 07:24:58
n°1753902
stanymi
Posté le 01-07-2008 à 11:33:24  profilanswer
 

Merci de ta réponse mais cela, tu le fais dans Excel non ?
Je voudrais pouvoir le faire directement dans Access, sans passer par Excel.

n°1754404
tegu
Posté le 02-07-2008 à 09:47:28  profilanswer
 

Ça n'est pas possible de récupérer la macro Excel pour l'adapter à Access.
 
Sous Access il te faut créer dynamiquement la structure de ta nouvelle table en nommant tes champs d'après les valeurs récupérées dans un recordset.
 
Je ne connais pas ton niveau en VBA/Access, mais sans être compliqué, cela demande quelques connaissances des objets Access :
Recordset ,TableDef, Fields, Index, et autres propriétés attachées à ces objets (liste non exhaustive).

n°1787682
stanymi
Posté le 16-09-2008 à 15:33:24  profilanswer
 

Je n'ai pas pour habitude de laisser des trucs en plan et laisser des gens qui prennent de leur temps pour moi, sans réponse.  
Désolé j'ai été pris sur un autre truc pendant tout ce temps et n'ai pu me replonger sur le sujet que la semaine dernière.
 
Merci pour tes conseils. Effectivement, j'ai fait autrement en passant par des tables temporaires, des requêtes et tout le toutim.
 
A bientôt


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Déplacer données Table

 

Sujets relatifs
[VBA] Ouvrir fichier Excel - même répertoire[VBA / Excel] Aide sur une macro a programmer
[VBA] [Résolu] Comment récupérer la formule d'une cellule ??Parcourir des dossiers et sous-dossiers en VBA
VBA Excel Supprimer des ligneslincrémenter un champs dans une table via un bouton
VBA : remplacer tous les 0 d'une feuille excelsupprimer un élément de ma table de string
[MYSQL] Limite d'une tableVBA Excel - evenements Copier Coller
Plus de sujets relatifs à : [VBA] Déplacer données Table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR