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 :

Mais quelle est donc cette feuille ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 205
    Par défaut Mais quelle est donc cette feuille ?
    Bonjour,

    Je désire travailler sur une feuille dont j'ignore le nom dans différents classeurs...
    Dans tous les classeurs cette feuille à pour CodeName : "Ws1"

    On en est donc au stade suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open (Chemin & "/" & "WbCible.xlsm")
    Je sais récupérer l'index de l'item qui m'intéresse dans VBComponents, mais...
    Je voudrai récupérer dans une variable le nom de la Feuille Excel qui correspond à "Ws1"

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Voici une fonction générique qui réalise cela, à stocker dans ta boite à outils. Elle renvoie la feuille souhaitée, ou Nothing si la feuille n'a pas été trouvée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function getSheetByCodeName(Codename As String, Optional wb As Workbook) As Object
      Dim Counter As Long
     
      If wb Is Nothing Then Set wb = ActiveWorkbook
      Counter = 1
      Do While Counter <= wb.Sheets.Count And getSheetByCodeName Is Nothing
        If StrComp(wb.Sheets(Counter).Codename, Codename, vbTextCompare) = 0 Then _
          Set getSheetByCodeName = wb.Sheets(Counter)
        Counter = Counter + 1
      Loop
    End Function
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,
    Tout simplement :
    Dim NomFeuil As String
    NomFeuil = Ws1.Name

    EDIT : ne fonctionne que si le classeur contenant cette feuille est le ThisWorkbook...
    Utilise la solution de Pierre

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Franck

    Citation Envoyé par pijaku Voir le message
    Bonjour,
    Tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim NomFeuil As String
    NomFeuil =Ws1.Name

    Si c'est une feuille de ThisWorkbook, c'est ok. Si tu cherches la feuille dans un autre classeur, ça ne fonctionne pas.

    [EDIT]
    PS: De plus, si jamais on modifie le codename (ça arrive, si si!), le code va boguer en compilation. En mettant les codename de feuilles en constantes dans un module de déclaration et en utilisant la fonction proposée, si par malheur on doit modifier le codename, on change simplement la valeur de la constante à un seul endroit du code sans devoir passer tout en revue
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 205
    Par défaut
    Bonjour,
    Oui mon erreur était de chercher à lire la collection des VBComponents plutôt que de comparer la liste des feuilles avec leur CodeName.
    Merci à tous.
    A+

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

Discussions similaires

  1. Quelle est donc cette barre ?
    Par mourad1081 dans le forum Débuter
    Réponses: 0
    Dernier message: 11/06/2014, 19h44
  2. Mais quelle est cette table ?
    Par kirareuel dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 22/01/2014, 19h04
  3. Mais quelle est cette balise ? '<#'
    Par Ska_Dg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 10/04/2012, 11h24
  4. Quelle est donc cette syntaxe ? [[ ]]
    Par Sergejack dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 16/01/2008, 20h50
  5. Valide si... oui mais quelle est l'expression?
    Par SpyesX dans le forum Access
    Réponses: 1
    Dernier message: 28/10/2005, 16h38

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