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 :

Feuille invsible si appelé simplement du module, visible si appelé dupuis Workbook_Open() ? [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut Feuille invsible si appelé simplement du module, visible si appelé dupuis Workbook_Open() ?
    Bonjour à tous et merci de votre temps et de votre aide.

    J'ai un truc très étrange avec l'un de mes classeurs.

    Ce classeur prend des données dans 2 autres classeurs et les recopie dans plusieurs de ses pages.
    Une fois cela fait, il se sauvegarde dans un répertoire précis.
    Ce classeur a 4 feuille visibles et environ une dizaine invisibles.

    Le code qui fait la mise à jour est la sauvegarde se trouve dans le module mdlImportation.
    Si je l'exécute directement dans ce module, tout va bien, mon classeur se met à jour et se sauvegarde avec seulement ses 4 feuilles déjà visibles visibles. La dizaine d'autres restent cachées.
    Si je l'exécute depuis Workbook_Open(), lors de la sauvegarde une 5 feuilles devient visible (en fait la dernière que j'ai mise à jour).

    Ici le code de Workbook_Open :

    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
    Private Sub Workbook_Open()
     
        If mdlVariableEnvironnement.EstAutodemarrant Then
            Call mdlImportation.ImporterDonnees 'ici appelle le code à exécuter à l'ouverture
            Application.DisplayAlerts = False
            Me.Close
            Application.DisplayAlerts = True
     
            If Application.Workbooks.Count = 1 Then
                Application.Quit
            End If
     
        End If
     
    End Sub
    Ici l'instruction de sauvegarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Call WB_A.SaveAs(InfoFichier_Statistique.Repertoire_Nom_Extention, xlOpenXMLTemplateMacroEnabled)
    WS_A est le classeur en cours.

    Si je demande si la 5ième feuille est visible au moment de la sauvegarde (wsFormule_0.Visible), Excel répond 0 soit cachée mais dans le fichier créé, elle est visible.
    Et à aucun moment dans le code je ne rend cette feuille visible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If mdlVariableEnvironnement.EstAutodemarrant Then
    n'a pas d'importance, j'ai neutralisé le test et obtenue la 5iéme feuille.

    Quelqu'un a-t'il déjà eu un problème semblable ? A-t'il une solution ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Tu ne mets pas la partie de code qui masque les feuilles ?
    Avec un Stop au début de Private Sub Workbook_Open(), elle est visible à quel moment cette 5e feuille ?
    eric

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    Tu ne mets pas la partie de code qui masque les feuilles ?
    Avec un Stop au début de Private Sub Workbook_Open(), elle est visible à quel moment cette 5e feuille ?
    eric
    Bonjour Eric.

    Je n'ai pas mis le code qui masque les feuilles car il n'y en a pas. Les feuilles sont mises à jour sans jamais être affichées par des zone.pastespecial.

    @Theze, suggères-tu que une fois les mises à jour terminées je sélectionnes une de mes feuilles visibles plutôt que de rester "focussé" sur ma dernière feuille même invisible ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    @Theze, suggères-tu que une fois les mises à jour terminées je sélectionnes une de mes feuilles visibles plutôt que de rester "focussé" sur ma dernière feuille même invisible ?
    C'est une idée à tester, la feuille 5 n'ayant plus le focus elle resterait invisible, attention, je n'ai fait aucun test, c'est juste une idée !

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    OK, merci de la suggestion.

    Je vais faire un test dés que possible et je vous reviens.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Merci Theze ça marche !

    Activer la 1ère feuille visible a résolu le problème.

    Ici le code que j'ai utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            ' S'assure que la 1ère feuille visible est celle active
            Dim WS As Worksheet: For Each WS In WB_A.Worksheets
     
                If WS.Visible = xlSheetVisible Then
                    Call AfficherZone(WS.Cells(1, 1), True)
                    Exit For
                End If
     
            Next WS
    où WS_A1 est le classeur en cours.

    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
    Public Sub AfficherZone(prmZone As Range, Optional prmEstToujoursAffiche As Boolean = False)
        'Affiche la zone passée en paramètre
     
        If Not prmZone Is Nothing Then
     
            If prmZone.Parent.Visible Then
     
                If prmEstToujoursAffiche Or EST_MODE_DEBUG Then
                    prmZone.Parent.Parent.Activate 'Classeur
                    prmZone.Parent.Activate 'Feuille
                    prmZone.Select
                    DoEvents
                End If
     
            End If
     
        End If
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const EST_MODE_DEBUG As Boolean = False
    Désolé du délais. J'étais sur d'autres dossiers.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    As-tu fais le test sur "Workbook_Activate()" ? En utilisant éventuellement une variable pour que le code s'exécute qu'une fois ou une valeur stockée dans un nom invisible !
    En sélectionnant une des 4 feuilles visibles, cela peut faire en sorte que la 5ème feuille reste invisible ?

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

Discussions similaires

  1. appel module dans vba
    Par scully2501 dans le forum Access
    Réponses: 3
    Dernier message: 14/09/2005, 16h37
  2. Problème d'appel de module.
    Par TomPad dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 10h24
  3. [VB.NET] Manipuler une feuille via un module
    Par dinbougre dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/01/2005, 17h15
  4. [VB.NET] Appeler une sub public dans un module de form
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2004, 13h08
  5. Réponses: 4
    Dernier message: 07/12/2002, 07h34

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