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 :

[VBA Excel] problème d'utilisation fct xlSheetVeryHidden


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut [VBA Excel] problème d'utilisation fct xlSheetVeryHidden
    Bonjour,

    J'ai un problème avec les fonctions xlSheetVeryHidden et xlSheetVisible.
    Je réalise un programme excel pour une association, qui devra afficher des feuilles différentes en fonctions des nombreux utilisateurs.

    Explications :
    Dès l'ouverture du fichier, dans une form d'identification, l'utilisateur saisie son login et son mot de passe.
    Ensuite, "la macro" va lire dans une feuille du fichier dans des cases pour vérifier que l'identification est correcte.
    Puis ensuite, il ne va s'afficher dans le classeur que la feuille correspondante à l'utilisateur loggé.
    Pour ce faire, j'utilise les fonctions xlSheetVeryHidden et xlSheetVisible (c'est indispensable, comparé au .Visible = True ou False perméable)
    ...enfin j'essaie des les faire marcher de façon fiable à coup sur!

    Car ca marche une fois sur deux.
    Mon code est pas du tout optimal, j'en suis conscient et ca doit venir de ça.
    Néanmoins, c'est super important, donc si pous pouviez m'éclairer sur mes lacunes...

    Voila la partie de code incriminée :
    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
    ' Début du code
    ' On autorise l'affichage de cette feuille pour le traitement des mots de passe
    Sheets("Mdp").Visible = xlSheetVisible
    Sheets("Mdp").Select
    
    ...
    ' Si identification ok
        
    ThisWorkbook.Windows(1).Visible = True '(...False avant)
     
    nombre = ActiveWorkbook.Sheets.Count
    i = 0
    
    For var_boucle = 1 To nombre Step 1
    
      nom_feuille = Range("K31").Offset(i, 0).Value
      If nom_feuille <> "" Then
        Sheets(nom_feuille).Visible = xlSheetVeryHidden
      End If
      i = i + 1
    Next var_boucle
        
    ' Et en plus
    Sheets("TOTAL").Visible = xlSheetVeryHidden
    Sheets("TOTAL MENSUEL").Visible = xlSheetVeryHidden
        
    ' On charge la feuille correspondant à l'utilisateur sélectionné
    ' LA SEULE QUI DOIT S'AFFICHER
    Sheets(TxtNom.Text).Visible = xlSheetVisible
    
    ...
    
    ActiveWindow.WindowState = xlMaximized
    Unload Usf1
    ' Fin du code
    Et ca marche pas terrible. J'ai essayé d'autres manières, mais c'est pas mieux...Suivant l'ordre de mes feuilles dans la colonne lue et l'ordre des mes onglets, ça ne m'affiche pas toujours les mêmes feuilles.
    Il reste quasiment tout le temps des feuilles qui ne devraient absolument pas s'afficher.
    Et des fois la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("TOTAL").Visible = xlSheetVeryHidden
    ne fonctionne pas...

    Donc c'est pas top du tout ...Si vous aviez une solution!
    Merci d'avance.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Essaie de mettre DoEvents après chaque modif de la propriété "visible"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If nom_feuille <> "" Then
         Sheets(nom_feuille).Visible = xlSheetVeryHidden
         DoEvents
    '......
    Tu dis

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    sur combien de classeur travaille tu ..? et sur quels classeur sont tes différentes feuilles ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut
    Pour tes questions :
    Je travaille sur un seul classeur.
    Toutes mes feuilles sont donc dans le même classeur.

    Cela marche mieux avec le DoEvents, c'est sans conteste. Mais il reste toujours une feuille qui s'affiche et qui ne devrait pas s'afficher (la dernière de mon tableau contenant le nom des feuilles)
    Je teste en modifiant légérement ma boucle mais c'est pas mieux pour l'instant. Je cherche.


    Ah oui...Dsl pour les balises de codes...

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben par exemple cela c'est pas terrible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom_feuille = Range("K31").Offset(i, 0).Value
    range sans rien devant.. pointe sur la feuille active du classeur actif au moment de l'exécution...

    prefixe le avec classeur et feuille..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    nom_feuille = ThisWorbook.sheets("Mafeuille").Range("K31").Offset(i, 0).Value


    la aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nombre = ActiveWorkbook.Sheets.Count
    ben suivant comment tu lance ta macro ... le classeur actif n'est pas forcément celui contenant la macro... utilise plutôt ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     nombre = ThisWorkbook.Sheets.Count

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11
    Par défaut
    Tu as bien raison, c'est vrai que c'est beaucoup plus clair à chaque fois

    Ce que j'avais mis en tout début de l'événement, pour pallier au problème que tu décrit, c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sheets("Professeurs").Visible = xlSheetVisible
    Sheets("Professeurs").Select
    Mais c'est vrai que c'est pas du tout optimal...

    Et voila aussi, parfois il me sort lors de l'exécution :
    Erreur d'exécution '1004'
    Impossible de définir la propriété Visible de la classe Worksheet.

    au moment de l'exécution de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets(nom_feuille).Visible = xlSheetVeryHidden

Discussions similaires

  1. [VBA]Excel: problème d'écriture
    Par imeys dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/01/2006, 13h48
  2. VBA Excel - Problème de password VBA
    Par sat478 dans le forum VBA Word
    Réponses: 5
    Dernier message: 11/01/2006, 17h38
  3. [VBA EXCEL] Problème d'éxécution avec graphiques
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/11/2005, 09h55
  4. [VBA Excel] problème de range avec find
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2005, 13h56
  5. VBA ... CurrentRecord ... Problème d'utilisation
    Par snoopy69 dans le forum Access
    Réponses: 7
    Dernier message: 17/10/2005, 10h53

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