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 :

Sheets activate : utilisation


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Par défaut Sheets activate : utilisation
    Bonjour à tous.
    Je dois asurer la maintenance d'un script VBA sous excel contenant plus de 20 feuilles.
    Sur la premiere page, il y a des boutons pour acceder rapidement aux autres feuilles.
    Le code d'un des bouton est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Feuille_2()
        Call build
        Workbooks(page).Activate
        Sheets(2).Activate
        Range("A1").Select
    End Sub
    Et pour la fonction build :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub build()
        page= ActiveWorkbook.Name
    End Sub
    Voila ma question:
    Dans la fonction build(), la page courante (donc la page d'accueil) est activée, puis dans le code du bouton feuille_2, la feuille n°2 est activée.
    Je me demande si cela peux être utile? Et dans quels cas?
    Cela a un sens d'activer 2 feuilles, ou est-ce que seule la dernière feuille activée sera active?
    "Active" veut-il dire "visible" ou cela permet-il d'autres fonctions? Comme autoriser des calculs entre ces feuilles, par exemple?

    Pour infos, la variable 'page' est utilisée dans du code appelée par d'autres boutons toujours sur la page d'accueil, de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Workbooks(page).Activate
        Sheets(14).Activate
    C'est la raison de ma question, qu'est ce que cela signifie, est-ce que je peux enlever cette ligne ( Workbooks(page).Activate ) ?

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    si tu veux une fonction qui retourne une valeur - une vraie fonction, quoi - il faut que tu déclares Function et non Sub... et que tu déclares une valeur de retour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function NomPage() As String
        NomPage = ActiveWorkbook.Name
    End Function
    Mais ça ne fait aucun sens (de l'anglicisme it doesn't make any sence) puisque ton code demande d'activer le 'ActiveWorkbook' ! Je me demande si tu réalises que ActiveWorkbook fait référence au classeur actif.

    De plus, si tu veux activer un onglet (feuille de calcul) en particulier, tu dois utiliser la collection Worksheets (ou la collection Sheet)s.

    Tu aurais intérêt à consulter les tutoriels VBA

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Par défaut
    Merci du conseil,
    En fait, ce code a été codé par d'autres, des scientifiques, et il est suivit de 9 mo (!!) de code VBA.
    Donc avant de le modifier, je verifie si ces choses n'ont pas un sens caché que je n'ai pas vus.

    Workheet(1).Select
    Ca fait quoi? La même chose que : Sheets(1).Activate ?

    Pour ce qui est de l'utilisation des fonctions, je connais, mais j'ai copié le code tel que je l'ai trouvé. J'optimiserais (façon de parler) plus tard, je cherche juste à comprendre pour le moment.

    Donc à ma question : cela peux-il être utile? Et dans quels cas? Pour toi la réponse est non?
    De plus, si tu veux activer un onglet (feuille de calcul) en particulier, tu dois utiliser la collection Worksheets (ou la collection Sheet)s.
    Ce n'est pas ce qui est fait dans :
    Sheets(2).Activate ?
    Par "collection", tu veux parler des méthodes employées par Sheet ?
    Donc 'Activate' n'en ai pas une, mais 'select' oui?
    Escuses moi de reposer les mêmes questions, mais il me semble que tu n'y as pas vraiment répondu, ou je n'ai pas vraiment compris, ce qui est très possible.
    Merci beaucoup de ton aide.

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Par défaut
    Petit up, car même si les remarques de zazaraignée m'ont confirmées ce que je pensais, je n'ai pas vraiment eu de réponse à mes questions,

    zazaraignée si tu passes par là... Ou quelqu'un d'autre, svp.

Discussions similaires

  1. [XL-2003] Utiliser variable pour Sheet(XX).activate ?
    Par jedineofr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/07/2011, 14h46
  2. Utiliser Active Directory pour se connecter
    Par Cerberes dans le forum Connexions aux bases de données
    Réponses: 5
    Dernier message: 30/11/2007, 11h40
  3. [Langage] Quel langage utilisé pour ce cas : l'active directory ?
    Par pogy dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 10/05/2006, 11h11
  4. Réponses: 4
    Dernier message: 10/05/2006, 11h02
  5. Utiliser SQL Server et Ent Manager sur un Active Directory
    Par Immobilis dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 21/12/2005, 14h20

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