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 :

création d'un TCD en cliquant sur un bouton associé à une macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Par défaut création d'un TCD en cliquant sur un bouton associé à une macro
    Bonjour ,

    Je me retourne vers vous après avoir lu plusieurs tutos et bouquins sur les macro...

    J'arrive pas à les réussir ... même les plus simples !!!! pourtant c'est simple !!!

    Et même quand je fais un enregistrement de macro ...Ca ne marche pas ...

    Je veux commencer juste par une macro qui fait créer des TCD du même format et que je pourrai utiliser pour plusieurs tableaux et qui sera associé à un bouton !!!!!

    Je n'y arrive pas ... rien ne marche !!! je suis nulle ça je le sais mais je croyais en cherchant l'information que j'apprendrai mais la c'est pas le cas !!!

    Quelqu'un pourrai trouver une solution à mon cas et m'aider à avancer ????

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2009
    Messages : 15
    Par défaut
    Bonjour,
    Le " Ca ne marche pas" reste toujours une notion un peu vague

    Pourrais-tu nous dire sur quoi tu bloques exactement ?

    Tu indiques que tu as essayé de passer par l'enregistreur de macro... As tu obtenu du code ? Le comprends-tu ou désires-tu des explications ?

    Si tu as commencé à écrire du code.. peux tu nous le partager en indiquant sur quelle(s) ligne(s) ton programme bloque ?

    Cordialement,
    jordane.

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,


    La question n'est pas d'être nul ou pas, comme toute chose il faut apprendre :

    Pour débuter un bon lien ici

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Par défaut
    merci pour vos réponses.

    effectivement , avant de poster j'ai lu plusieurs tuto et bouquins...

    mais la question reste , comment je pourrais utiliser une macro que j'ai fais pour un classeur spécifque , dans un autre classeur ...

    par exemple , une macro qui fais créer un TCD à une format donnée à partir d'une base qui change chaque mois ...

    comment je pourrais utiliser la macro que j'ai deja créer le mois dernier ?

    Si vous avez un exemple ca serai excellent !

    je vous remercie encore une fois

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu!...
    bonjour

    quand je lis ton post depuis le debu j'ai du mal a cerner ce que tu veux

    il serai peut etre interessant pour toi de nous envoyer un peu ton code que tu a essayer meme si il ne fonctionne pas
    a partir de ce momment on pourra peu etre t'aider


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    Effectivement, la moindre des choses est de copier ton code dans la discussion pour qu'on puisse t'aider. C'est aussi simple que ça.

    Ensuite, d'expérience, quand on commence avec les macros et que rien ne fonctionne, surtout quand on veut générer des graphiques ou des TCD par exemple, le problème est souvent le nom du graphique ou du TCD que génére automatiquement Excel dans le Code VBA de ta Macro (par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ChartObjects("Graphique 7").Activate
    ). Il faut absolument (ou presque) que tu changes ou que tu supprimes ces types de commandes. Sinon, chaque fois que tu feras fonctionner ta macro, elle va toujours tenter de chercher ce graphique.... qui dans le fond n'existera plus puisque tu l'aurais supprimé ou qu'Excel et ta macro auraient généré un autre graphique automatiquement (par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ChartObjects("Graphique 7").Activate
    ).

    Entre temps, je te souhaite bonne chance.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Par défaut
    vous avez raison , j etais bete sur ce coup la , voila le code de la macro que j'ai enregistré
    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
    Sub TCD_EVS()
    '
    ' TCD_EVS Macro
    ' TABLEAU CROISE DYNAMIQUE POUR LES EXTRACTIONS DES EVS
    '
     
    '
        Cells.Select
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "'EVS CMGA PDL 09 2010'!C1:C31").CreatePivotTable TableDestination:="", _
            TableName:="Tableau croisé dynamique13", DefaultVersion:= _
            xlPivotTableVersion10
        ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
        ActiveSheet.Cells(3, 1).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields( _
            "mois_comptable")
            .Orientation = xlColumnField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields( _
            "libelle_uc")
            .Orientation = xlRowField
            .Position = 1
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique13").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique13").PivotFields("debit"), _
            "Nombre de debit", xlCount
        ActiveSheet.PivotTables("Tableau croisé dynamique13").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique13").PivotFields("credit"), _
            "Nombre de credit", xlCount
        ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotSelect _
            "'Nombre de credit'", xlDataAndLabel, True
        ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields( _
            "Nombre de credit").Function = xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotSelect _
            "'Nombre de debit'", xlDataAndLabel, True
        ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields( _
            "Nombre de debit").Function = xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotSelect _
            "'Somme de credit'", xlDataAndLabel, True
        ActiveSheet.PivotTables("Tableau croisé dynamique13").CalculatedFields.Add _
            "solde", "=debit -credit", True
        ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields("solde"). _
            Orientation = xlDataField
        ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields( _
            "Somme de debit").Orientation = xlHidden
        ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields( _
            "Somme de credit").Orientation = xlHidden
        With ActiveSheet.PivotTables("Tableau croisé dynamique13").PivotFields( _
            "libelle_uc")
            .PivotItems("(vide)").Visible = False
        End With
        ActiveWorkbook.ShowPivotTableFieldList = False
    End Sub
    donc ce code génére un TCB13 pour la base "'EVS CMGA PDL 09 2010"

    la question c'est comment rendre cette marco utilsable pour n'importe qu'elle base qui ressemble à la base mentionné si dessus ( le classeur n aura pas le meme nom biensur ) et que me génére d autre TCD

  8. #8
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    "Tableau croisé dynamique13"
    C'est ceci qui pose problème...
    Tu écris en "dur" le nom de ton fichier dans le code. Il faut utiliser une variable qui va chercher le nom de la table.

    Je ne suis plus trop dans le VBA en ce moment donc je ne vais pas mettre des mauvaises info de code mais suit cette piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim maTable as string
    maTable=Nom_de_la_pivot_table
    Ensuite tu remplaces tous les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Tableau croisé dynamique13"
    par

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Par défaut
    voila j'ai essay" et ca amrceh pas
    pourtant c'est simple ... mais c'est pas le cas pour les nul comme moi

    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
    Sub TCD_EVS()
    '
    ' TCD_EVS Macro
    ' Tableau croisé dynamique EVS
    '
     
    'Déclaration de variable
    Dim maTable As String
    maTable = PivotTables.Name
     
        Cells.Select
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "'EVS CMGA LIM 09 2010'!C1:C31").CreatePivotTable TableDestination:="", _
            TableName:="maTable", DefaultVersion:= _
            xlPivotTableVersion10
        ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
        ActiveSheet.Cells(3, 1).Select
        With ActiveSheet.PivotTables("maTable").PivotFields( _
            "mois_comptable")
            .Orientation = xlColumnField
            .Position = 1
        End With
        ActiveSheet.PivotTables("maTable").AddDataField ActiveSheet. _
            PivotTables("maTable").PivotFields("debit"), _
            "Nombre de debit", xlCount
        ActiveSheet.PivotTables("maTable").AddDataField ActiveSheet. _
            PivotTables("maTable").PivotFields("credit"), _
            "Nombre de credit", xlCount
        With ActiveSheet.PivotTables("maTable").PivotFields( _
            "libelle_uc")
            .Orientation = xlRowField
            .Position = 1
        End With
        ActiveWorkbook.ShowPivotTableFieldList = False
        With ActiveSheet.PivotTables("maTable").PivotFields( _
            "libelle_uc")
            .PivotItems("(vide)").Visible = False
        End With
        ActiveSheet.PivotTables("maTable").PivotSelect _
            "'Nombre de debit'", xlDataAndLabel, True
        Range("B5").Select
        ActiveSheet.PivotTables("maTable").PivotFields( _
            "Nombre de debit").Function = xlSum
        Range("B6").Select
        ActiveSheet.PivotTables("maTable").PivotFields( _
            "Nombre de credit").Function = xlSum
        Range("C6").Select
    End Sub

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    on t a bien renseigner mais la variable "matable" ne dois pas etre entre guillemet


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Il faut enlever les guillements avant et après maTable

    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
    Sub TCD_EVS()
    '
    ' TCD_EVS Macro
    ' Tableau croisé dynamique EVS
    '
     
    'Déclaration de variable
    Dim maTable As String
    maTable = PivotTables.Name
     
        Cells.Select
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "'EVS CMGA LIM 09 2010'!C1:C31").CreatePivotTable TableDestination:="", _
            TableName:=maTable, DefaultVersion:= _
            xlPivotTableVersion10
        ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
        ActiveSheet.Cells(3, 1).Select
        With ActiveSheet.PivotTables(maTable).PivotFields( _
            "mois_comptable")
            .Orientation = xlColumnField
            .Position = 1
        End With
        ActiveSheet.PivotTables(maTable).AddDataField ActiveSheet. _
            PivotTables(maTable).PivotFields("debit"), _
            "Nombre de debit", xlCount
        ActiveSheet.PivotTables(maTable).AddDataField ActiveSheet. _
            PivotTables(maTable).PivotFields("credit"), _
            "Nombre de credit", xlCount
        With ActiveSheet.PivotTables(maTable).PivotFields( _
            "libelle_uc")
            .Orientation = xlRowField
            .Position = 1
        End With
        ActiveWorkbook.ShowPivotTableFieldList = False
        With ActiveSheet.PivotTables(maTable).PivotFields( _
            "libelle_uc")
            .PivotItems("(vide)").Visible = False
        End With
        ActiveSheet.PivotTables(maTable).PivotSelect _
            "'Nombre de debit'", xlDataAndLabel, True
        Range("B5").Select
        ActiveSheet.PivotTables(maTable).PivotFields( _
            "Nombre de debit").Function = xlSum
        Range("B6").Select
        ActiveSheet.PivotTables(maTable).PivotFields( _
            "Nombre de credit").Function = xlSum
        Range("C6").Select
    End Sub
    maTable est une variable de type String (chaine de caractère)
    "maTable" est une chaine de caractère

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Par défaut
    Je vous remercie pour vos réponses ... décidemment ca veut aps marcher !! j'ai enlever les guillemets mais en vain!!

    voila vous avez le code je vous envoi le fichier type ...normalement c'est un jeux d'enfant mais pour moi non je bloque !!

    je veux associer cette macro a un bouton pour automatiser la creation des tcd pour 38 fichier !!!

    ca me met comme erreur objet requis!

  13. #13
    Membre éprouvé Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Par défaut
    Bonjour,

    Pour ma part j'ai essayé le fichier, en rencontrant deux problèmes majeurs:

    - La déclaration de maTable

    - Le nom de la feuille n'est pas la même que dans le fichier joint (Remplacement de LIM par ALP):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "'EVS CMGA ALP 09 2010'!C1:C31").CreatePivotTable TableDestination:="", _
     TableName:=maTable, DefaultVersion:= xlPivotTableVersion10
    - Pour le bouton utilisez directement les User Forms d'Excel.

    Si possible communiquez le message d'erreur et la ligne posant problème.

    Cordialement

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Par défaut
    merci pour votre réponse ,
    l objectif est d appliquer cette macro a n importe quel fichier et pas seuleument au fichier "alp" donc la question comment la généraliser afin de pouvoir l appliquer sans prendre considération du nom du fichier?

Discussions similaires

  1. [XL-2003] Modifier le texte sur un bouton affecté à une macro
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/10/2014, 18h46
  2. Réponses: 6
    Dernier message: 08/03/2014, 23h38
  3. Création Jchekbox en cliquant sur un bouton
    Par yous_han dans le forum NetBeans
    Réponses: 0
    Dernier message: 20/12/2010, 01h05
  4. Réponses: 1
    Dernier message: 18/11/2008, 10h24

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