IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

modifer un TDC programmé pour excel2007 pour pouvoir marcher sur excel2003 [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 30
    Points
    30
    Par défaut modifer un TDC programmé pour excel2007 pour pouvoir marcher sur excel2003
    Salut, voilà mon problème:

    j'ai réalisé un projet en vba assez conséquent pour moi (j'ai commencé il n'y pas longtemps): le programme s'execute parfaitement bien sur excel 2007.

    Devant le rendre fonctionnel sur excel 2003 (je ne l'avais pas encore), je me suis dis qu'il n'y avait pas grand chose à changer:

    weeknum en NO.SEMAINE par exemple.

    Le problème concerne les TDC, j'en ai 21 (je crois) et bien évidemment il ne marche plus. J'ai essayé de les modifier à partir de l'enregistreur de macro, sans succès:

    IMPORTANT: il est évident que je ne vous demande pas la solution pour tous les TDC, juste pour un ( à l'occasion le premier )

    voila le code du premier TDC, suivi du fichier main.xls et main.exe et d'un fichier test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    ' on attaque ici la mise en place des pilotes de données
    ' je vais expliquer la première mise en place de façon très détaillé
    ' les autres codes sont extremement ressemblant, la seule chose qui change est le nom de la feuille où l'on met le tableau dynamique croisé
    ' et le nom du paramètre pour les trois derniers derniers codes
     
    Sub pilotededonneejour()
    Dim ShResultatJ As Worksheet    'raccourci pour la feuille d'insertion du TDC (tableau croisé dynamique)
    Dim ShTemp1 As Worksheet        ' ------------------------ donnée temporaire 1
    Dim ShTemp2 As Worksheet        ' ------------------------ tempoper
    Dim ShTemp3 As Worksheet        ' ------------------------ tempanes
    Dim nombredeligneTemp1 As Long  'nombre de ligne de la feuille donnée temporaire 1
    Dim nombredeligneTemp2 As Long  '----------------------------- tempoper
    Dim nombredeligneTemp3 As Long  '----------------------------- tempanes
     
    'met en place les raccourcis feuilles
    Set ShResultatJ = Worksheets("Résultat par jour")
    Set ShTemp1 = Worksheets("donnée temporaire 1")
    Set ShTemp2 = Worksheets("tempoper")
    Set ShTemp3 = Worksheets("tempanes")
     
    'desactiver le calcul auto, le screen updating
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
     
    'calcul le nombre de ligne
    ShTemp1.Activate
    nombredeligneTemp1 = ShTemp1.Range("A1").End(xlDown).Row
    ShTemp2.Activate
    nombredeligneTemp2 = ShTemp2.Range("A1").End(xlDown).Row
    ShTemp3.Activate
    nombredeligneTemp3 = ShTemp3.Range("A1").End(xlDown).Row
     
    'mise en place du premier tableau dynamique dans la feuille résultat par jour
     
    ShTemp1.Select      'selectionne la feuille donnee temporaire 1
    Range("A1").Select  'selectionne la cellule A1 de la feuille donnee temporaire (marche parfois pas en une étape)
     
    'explication des lignes suivantes:
    '   - << ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, >>: commun à tous
    '
    '   - << SourceData:="donnée temporaire 1!R1C1:R" & nombredeligneTemp1 & "C26" >>:
    '       => indique la plage utilisé pour la création des TDC, deux cas: ou - feuille donnee temporaire 1
    '                                                                       ou - feuille tempoper
    '                                                                       ou - feuille tempanes
    '       => la feuille donnee temporaire 1 est utilisé pour la création des tableaux 1 à 3
    '       => la feuille tempoper est utilisé pour la création du tableau 4
    '       => la feuille tempanes est utilisé pour la création du tableau 5
    '
    '   - << Version:=xlPivotTableVersion10). >>: commun à tous
    '
    '   - << CreatePivotTable TableDestination:=ShResultatJ.Range("A1") >>:
    '       => indique la destination du tableau dynamique: ici on va inserer le tableau dans la feuille resultat par jour cellule A1
    '
    '       => la cellule d'insertion est très importante, deux tableaux ne peuvent pas se chevaucher,
    '               elle varie à chaque création de tableau du nombre de colonne du TDC plus une colonne
    '
    '       => le nom du tableau d'insertion, ici ShResultatJ, varie dans chacunes des six procedures de création
    '               première: feuille résultat par jour
    '               seconde:  feuille résultat par semaine
    '               troisième: feuille résultat par période
    '               quatrième: feuille résultat par jour & codsal
    '               ...
    '
    '   - << TableName:="resultat1" >> : nom du tableau d'insertion, varie de "resultat1" à "resultat5"
    '           => deux tableaux ne peuvent pas avoir le même nom dans la même feuille
    '
    '   - << DefaultVersion:=xlPivotTableVersion10 >>: commun à tous
     
     
    ActiveWorkbook.PivotCaches.create(SourceType:=xlDatabase, SourceData:= _
        "donnée temporaire 1!R1C1:R" & nombredeligneTemp1 & "C26"). _
        CreatePivotTable TableDestination:=ShResultatJ.Range("A1"), TableName:= _
        "resultat1", DefaultVersion:=xlPivotTableVersion10
     
    ShResultatJ.Select
    Cells(1, 1).Select
     
    ActiveWorkbook.ShowPivotTableFieldList = True
     
    ' definit les paramètres généraux du TDC crée, ici resultat1
    With ShResultatJ.PivotTables("resultat1")
        .ColumnGrand = False ' n'affiche pas les totaux globaux pour les colonnes du rapport dans le TDC
        .DisplayErrorString = True '
        .RowGrand = False ' n'affiche pas les totaux globaux pour les lignes du rapport dans le TDC
    End With
     
    ' définit le premier paramètre de tri
    '   => pivotfiels("uf_prod")
    '       donc, ici uf_prod
    With ShResultatJ.PivotTables("resultat1").PivotFields("uf_prod")
        .Orientation = xlRowField   'declare un tri par colonne
        .Position = 1               'declare l'indice de tri, ici, c'est le premier paramètre, on va trier d'abord par uf_prod, puis par le .position = 2
    End With
    'definit les paramètres du tri uf_prod
    ShResultatJ.PivotTables("resultat1").PivotFields("uf_prod").Subtotals = Array _
        (False, False, False, False, False, False, False, False, False, False, False, False)
     
    'pareil que le paramètre précedente
    With ShResultatJ.PivotTables("resultat1").PivotFields("date_interv")
        .Orientation = xlRowField
        .Position = 2
    End With
    ShResultatJ.PivotTables("resultat1").PivotFields("date_interv").Subtotals = _
        Array(False, False, False, False, False, False, False, False, False, False, False, False)
     
    'cette partie insère les données à trier
    'assez simple à comprendre
    ' => ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb5"):
    '       => ajoute une donnée à trier au TDC
    '           => ici, ajoute dans le TDC resultat1 la colonne :"hfin -heb5"
    ' => caption: renomme la ligne, sert à expliquer le résultat
    ' => function: fonction effectuée sur les données
    ' => numberformat: indique le format d'affichage du résultat
     
    ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb5"), "Count of hfin - heb5", xlCount
    ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb5"). _
        Caption = "nombre d'opération dans la journée pour l'uf_prod"
     
    ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb6"), "Count of hfin - heb6", xlCount
    With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb6")
        .Caption = "nombre de temps chirugical utilisable pour cette journée"
        .Function = xlCountNums
    End With
     
    ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb"), "Count of hfin - heb", xlCount
    With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb")
        .Caption = "moyenne des temps chirugicaux dans la journée par uf_prod"
        .Function = xlAverage
        .NumberFormat = "h:mm;@"
    End With
     
    ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb2"), "Count of hfin - heb2", xlCount
    With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb2")
        .Caption = "minimun des temps chirugicaux dans la journée par uf_prod"
        .Function = xlMin
        .NumberFormat = "h:mm;@"
    End With
     
    ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb3"), "Count of hfin - heb3", xlCount
    With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb3")
        .Caption = "maximun des temps chirugicaux dans la journée par uf_prod"
        .Function = xlMax
        .NumberFormat = "h:mm;@"
    End With
     
    ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb4"), "Count of hfin - heb4", xlCount
    With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb4")
        .Caption = "ecart-type  des temps chirugicaux dans la journée par uf_prod"
        .Function = xlStDev
        .NumberFormat = "h:mm;@"
    End With

    je m'en remet donc à vous pour m'aider:

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    résolu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.PivotCaches.add(SourceType:=xlDatabase, SourceData:= _
        "donnée temporaire 1!R1C1:R" & nombredeligneTemp1 & "C26"). _
        CreatePivotTable TableDestination:=ShResultatJ.Range("A1"), TableName:= _
        "resultat1", DefaultVersion:=xlPivotTableVersion10

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Votre langage de programmation serveur préféré pour le Web ?
    Par Marc Lussac dans le forum Général Conception Web
    Réponses: 82
    Dernier message: 18/02/2009, 17h50
  2. Cherche à faire un programme de gestion pour PC et MAC
    Par morgantip dans le forum Windows
    Réponses: 12
    Dernier message: 23/05/2006, 09h01
  3. Modification de boot.ini sous XP pour dual boot Suse/XP????
    Par Le Mad dans le forum Administration système
    Réponses: 6
    Dernier message: 20/03/2006, 11h33
  4. Réponses: 10
    Dernier message: 31/01/2006, 11h36
  5. Programme audio (microphone) pour carte Embarquée
    Par littlesquall dans le forum C
    Réponses: 9
    Dernier message: 20/10/2005, 09h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo