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 :

Nom de feuille dynamique prenant le nom d'une cellule d'une feuille de calcul [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut Nom de feuille dynamique prenant le nom d'une cellule d'une feuille de calcul
    Bonjour,

    J'ai un classeur avec plusieurs feuilles.

    Actuellement, Feuil2(Clients) est appelée par le biais de Worksheets("Clients") par beaucoup de fonctions VBA, dans plusieurs modules et dans plusieurs feuilles.

    Je voudrai maintenant que l'ensemble de mes fonctions pointant vers Worksheets(Clients) utilisent comme nom de Worksheets le contenu de la cellule E1 dans Worksheets(MENU)
    Ainsi, si E1 contient le mot "test" toutes mes fonctions sauront qu'il faudra chercher dans Worksheeets("test")


    J'ai essayé d'intégrer ceci dans Thisworkbook, mais sans succés :
    database_client_a_utiliser ne prend pas le contenu de la cellule E1 de la page intitulée : "MENU"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Workbook_Open()
     
    Dim database_client_a_utiliser As Range
     
    ' Le nom de la Feuille 2 est définie par le contenu de la cellule E1 dans la Worksheets "MENU" :
    Set database_client_a_utiliser.Name = Sheets(1).Range("E1").Value
     
    MsgBox database_client_a_utiliser
     
    End Sub
    Merci à vous pour votre aide,

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par lcoulon Voir le message
    Bonjour,

    Une solution consiste à rendre paramétriques vos procédures et fonctions.

    Dans cet exemple, j'ai une procédure de tri qui peut s'appliquer aux trois onglets indiqués dans le tableau structuré.

    Pièce jointe 598571

    Cette procédure contient les paramètres permettant d'identifier l'onglet, la ligne de titre du tableau et la colonne à trier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sub TrierUnTableau(ByVal FeuilleATrier As Worksheet, ByVal LigneDeTitre As Long, ByVal ColonneATrier As Long)
    Dans le module de l'onglet MENU, la procédure lancée par le bouton Trier est la suivante :

    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
     
    Option Explicit
     
    Private Sub BoutonTrier_Click()
     
            Range("E1") = "Clients"
            TrierUnTableau Sheets(Range("E1").Value), 10, 3
     
            Range("E1") = "Test"
            TrierUnTableau Sheets(Range("E1").Value), 10, 1
     
            Range("E1") = "Test 2"
            TrierUnTableau Sheets(Range("E1").Value), 10, 2
     
    End Sub
    Ceci n'était qu'un exemple d'utilisation. Il vous suffit donc d'ajouter le nom de votre onglet ou l'objet Worksheet dans vos paramètres de procédure.

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut
    J'ai réussi à obtenir ce que je souhaite en procédant ainsi :

    Dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Variable de la base client à utiliser
    Public database_client_a_utiliser As String
    Création d'un bouton pour acquérir le contenu de la cellule indiquant la feuille souhaitée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Bouton_ValideBaseClients_Click()
    database_client_a_utiliser = Sheets("MENU").Range("D1").Value
    End Sub
    ensuite je peux utiliser cette variable dans le reste de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    If Worksheets(database_client_a_utiliser).Range("A5") = "" Then index_max_compteur_ligne_source = 5
    ...

    Donc si dans la feuille intitulée "MENU" en cellule D1 il est indiqué 'Clients2021'

    Le code ci-dessus sera alors interprété ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets("Clients2021").Range("A5") = "" Then index_max_compteur_ligne_source = 5

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

Discussions similaires

  1. Copier colonnes suivant leur nom dans une autre feuille
    Par paflolo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/10/2006, 14h49
  2. Comment obtenir dynamiquement le nom d'une classe ?
    Par cquilgars dans le forum C++
    Réponses: 5
    Dernier message: 27/06/2006, 23h37
  3. Le nom d'une fenêtre peut-il être modifié dynamiquement ?
    Par jejerome dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/05/2006, 13h37
  4. [VBA-E]Récuperer le nom d'une feuille sans le N°
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 11h33
  5. Réponses: 4
    Dernier message: 09/11/2005, 17h11

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