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 :

Faire fonctionner une macro liée à un onglet masqué


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Pilotage des performances
    Inscrit en
    Novembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Pilotage des performances
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 41
    Par défaut Faire fonctionner une macro liée à un onglet masqué
    Bonjour à tous ,

    Une fois encore j'ai besoin de votre expertise pour résoudre une problème .

    J'utilise deux macro pour pouvoir modifier un graphique (un coup pourcentage et l'autre coup valeur). Jusque là tout va bien.

    Pour ce faire je m'appuie sur un second onglet "base calcul", hors comme tous projet une fois terminé on masque la base.
    Et là, la ma macro ne fonctionne plus.

    J'ai donc essayé de la reprendre en effectuant l'affichage de l'onglet, l'opération nécessaire, puis de masquer à nouveau l'onglet (puis arrêt de l'enregistrement).

    Mais cela ne fonctionne pas, j'ai une erreur d’exécution 1004 qui s'affiche.

    Que dois-je faire ? :/

    Merci d'avance

  2. #2
    Membre expérimenté

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Billets dans le blog
    1
    Par défaut
    Salut,

    Peux-tu nous mettre en commentaire le code de ta macro ?

    Sans oublier la balise

  3. #3
    Membre averti
    Homme Profil pro
    Pilotage des performances
    Inscrit en
    Novembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Pilotage des performances
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 41
    Par défaut
    Bonjour

    Alors en fait j'ai peut-être trouvé une alternative.

    Plutôt que de changer d'onglet je peux modifier les valeurs directement sur mon graphique (car lié à un TCD).
    Cependant la macro m'affiche également une erreur 1004.

    Voila le code de la macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Bouton8_Cliquer()
    '
    ' Bouton8_Cliquer Macro
    '
     
    '
        ActiveSheet.ChartObjects("Graphique 22").Activate
        With ActiveSheet.PivotTables("Tableau croisé dynamique15").PivotFields( _
            "Nombre de sortis")
            .Calculation = xlNormal
            .NumberFormat = "Standard"
        End With
    End Sub
    La partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With ActiveSheet.PivotTables("Tableau croisé dynamique15").PivotFields( _
            "Nombre de sortis")
    est soulignée en jaune :/

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour, Que vaut activeSheet au moment où ça plante? Est-elle protégée?

    Pouvez-vous rajouter par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Debug.Print ActiveSheet.Name, ActiveSheet.Visible, ActiveSheet.ProtectContents

  5. #5
    Membre expérimenté

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Billets dans le blog
    1
    Par défaut
    Mmmh... A ta place je ferai simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    btn_Click()
       Worksheets("TCD").EntireRow.Hidden= False 
       'Ton code
       '...
       '...
       '...
       '...
       Worksheets("TCD").EntireRow.Hidden= True
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Pilotage des performances
    Inscrit en
    Novembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Pilotage des performances
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 41
    Par défaut
    Bonjour désolé de ma réponse tardive,

    Alors je tiens a précisé que je suis très nul en VBA j'ai aucune base

    Donc j'ai essayé avec le code de xelas 57 de cette façon :
    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
    Sub Bouton7_Cliquer()
    '
    ' Bouton7_Cliquer Macro
    '
     
    '
        Worksheets("TCD").EntireRow.Hidden = False
        Range("D75").Select
        ActiveSheet.ChartObjects("Graphique 22").Activate
        With ActiveSheet.PivotTables("Tableau croisé dynamique15").PivotFields( _
            "Nombre de sortis")
            .Calculation = xlPercentOfRow
            .NumberFormat = "0%"
        End With
     Worksheets("TCD").EntireRow.Hidden = True
    End Sub
    Lorsque je lance la macro j'ai erreur d’exécution n°9 l'indice n'appartient pas à la sélection. :/

    vinc_bilb je ne sais pas te répondre :/

    Si ça peut vous aidez ma macro consiste en à modifié les valeur de mon graphique en %, et je ferais ensuite l'inverse pour les afficher en valeur.
    Ainsi l'utilisateur pourra afficher à son bon vouloir valeur/%.
    Le problème vient t-il du fait que le TCD est sur un autre onglet? (masqué)

    Merci pour votre aide.

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Dans quelle sheet est le 'Graphique 22'?
    Vous gérez celà sur la sheet active ..... mais êtes vous bien sur que c'est la bonne?


    Proposition

    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
    Sub Bouton7_Cliquer()
    '
    ' Bouton7_Cliquer Macro
    '
    Dim WshTCD As Worksheet, WshGRAPH As Worksheet
    Set WshTCD = ThisWorkbook.Worksheets("TCD")
    Set WshGRAPH = ThisWorkbook.Worksheets("xxx") 'à modifier
    '
        WshTCD .EntireRow.Hidden = False
        'Range("D75").Select
        WshGRAPH .ChartObjects("Graphique 22").Activate
        With WshGRAPH .PivotTables("Tableau croisé dynamique15").PivotFields( _
            "Nombre de sortis")
            .Calculation = xlPercentOfRow
            .NumberFormat = "0%"
        End With
     WshTCD. EntireRow.Hidden = True
    End Sub

  8. #8
    Membre averti
    Homme Profil pro
    Pilotage des performances
    Inscrit en
    Novembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Pilotage des performances
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 41
    Par défaut
    Bonjour,

    Le graphique 22 est n'est pas sur le même onglet que le TCT auquel il est lié.
    Le problème vient de là.

    J'ai trouvé une solution en entrant ce code

    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
    Sub Bouton7_Cliquer()
    '
    ' Bouton7_Cliquer Macro
    '
     
    '
        Sheets("agence").Select
        ActiveSheet.ChartObjects("Graphique 22").Activate
         Sheets("Base calculs").Visible = True
        Sheets("Base calculs").Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique15").PivotFields( _
            "Nombre de sortis")
            .Calculation = xlPercentOfRow
            .NumberFormat = "0%"
        End With
           Sheets("Base calculs").Visible = False
            Sheets("agence").Select
            Range("B75").Select
    End Sub
    Cela fonctionne donc, cependant lorsque l'on clique pour activé la macro on aperçoit durant une fraction de seconde la base de calcul (l'onglet ou se trouve le TCD).
    Est-il possible de supprimé cela ?

    Merci

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Rebonjour,

    Quelques conseils:
    - évitez les select, ça ralentit énormément le code
    - utilisez Application.ScreenUpdating = False pour désactiver le rafraichissement de l'écran (et bien le remettre à TRUE après!)
    - déclarez vos variables!

    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
    Sub Bouton7_Cliquer()
    '
    ' Bouton7_Cliquer Macro
    '
    Dim WshG As Worksheet, WshT As Worksheet
     
    Set  WshG  = ThisWorkbook.Worksheets("agence")
    Set WshT  = ThisWorkbook.Worksheets("Base calculs")
     
    Application.ScreenUpdating = False
    WshT.Visible = True
     
    With WshT .PivotTables("Tableau croisé dynamique15").PivotFields("Nombre de sortis")
     
           .Calculation = xlPercentOfRow
            .NumberFormat = "0%"
     
    End WIth
     
    WshT.Visible = False
    Application.ScreenUpdating = True
    WshG.Activate
    Range("B75").Select
     
    End Sub

  10. #10
    Membre averti
    Homme Profil pro
    Pilotage des performances
    Inscrit en
    Novembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Pilotage des performances
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 41
    Par défaut
    Merci énormément cela fonctionne

    Merci d'avoir pris le temps pour mon problème, super communauté !!

    Bonne journée

  11. #11
    Membre averti
    Homme Profil pro
    Pilotage des performances
    Inscrit en
    Novembre 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Pilotage des performances
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 41
    Par défaut
    Dernière petite question j'ai un petit soucis,

    Lorsque je fais la même manipulation pour transformer les données en valeur il me faut sélectionné une plage de données pour enlever les cellules qui sont sous format Pourcentage.
    J'ai essayé ce code :
    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
    Sub Bouton8_Cliquer()
    '
    ' Bouton8_Cliquer Macro
    '
     
    '
    Dim WshG As Worksheet, WshT As Worksheet
    Set WshG = ThisWorkbook.Worksheets("agence")
    Set WshT = ThisWorkbook.Worksheets("Base calculs")
     Application.ScreenUpdating = False
    WshT.Visible = True
    With WshT.PivotTables("Tableau croisé dynamique15").PivotFields("Nombre de sortis")
            .Calculation = xlNormal
            .NumberFormat = "General"
        Range("c137:e140").Select
        Selection.NumberFormat = "General"
        End With
        WshT.Visible = False
            Application.ScreenUpdating = True
    WshG.Activate
        Range("C74").Select
    End Sub
    A l'aide du range ("c137:e140").Select mais je ne dois pas le placer au bon endroit, j'en ai essayé différents mais cela ne change rien.
    Mais mes données apparaissent comme: 512100% au lieu de 5121 par exemple.

    Merci encore !

Discussions similaires

  1. [XL-2010] faire excécuter une macro dans plusieurs onglets
    Par fibule38 dans le forum Excel
    Réponses: 2
    Dernier message: 19/11/2015, 14h11
  2. Améliorer et faire fonctionner une macro !
    Par laurent481826 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2015, 17h08
  3. Comment faire fonctionner une macro à une heure precise
    Par dreloman dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/06/2008, 01h46
  4. Faire fonctionner une application monoposte en réseau
    Par obon dans le forum Bases de données
    Réponses: 3
    Dernier message: 30/04/2006, 11h26
  5. Comment faire fonctionner une scroll bar ???
    Par toto4650 dans le forum MFC
    Réponses: 10
    Dernier message: 18/07/2005, 17h47

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