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 :

Appeler une feuille avec un nom variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2017
    Messages : 13
    Par défaut Appeler une feuille avec un nom variable
    Bonjour à tous,

    Je cherche à appeler une feuille dont le nom varie en fonction d'une date d'export.
    Je m'explique :

    le nom de ma feuille s'appelle AAAA_MM_JJ_Export.

    Mon fichier d'automatisation fait appel à cette feuille mais je dois modifier ma macro manuellement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("AAAA_MM_JJ_Export").Select
    .

    est-il possible de l'appeler de cette manière ? afin de ne plus avoir à la modifier (sachant que ce n'est pas forcément la date du jour)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("*Export").Select
    .

    Merci d'avance pour votre aide
    Sophie

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Non. Un nom d'élément d"une collection ne saurait utiliser des caractères génériques.
    Il te faut donc :
    - boucler sur tes feuilles (collection Worksheets)
    - utiliser l'opérateur like (qui, lui, utilise les caractères génériques) sur la propriété .Name de chaque élément de ta boucle.

  3. #3
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2017
    Messages : 13
    Par défaut
    Bonjour et merci pour ta réponse.
    Même si je comprend pas tout (je suis débutante dans VBA)

    Aurai tu un exemple pour que je comprenne un peu plus la démarche.
    Désolée de cette requête, je sais que ce doit être un peu lourd pour toi

    Merci bcp
    Sophie

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Désolé mais, vois-tu, je n'aide que ceux qui s'aident.
    Alors voilà comment je vais le faire :
    - On parcourt la collection des feuilles de calcul ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim ws as worksheet
    for each ws in worksheets
      .... tes instructions
    next
    - Chaque objet ws ayant été typé en worksheet, il a une propriété Name (le nom de la feuille ws en cours dans la boucle
    - l'utilisation de l'opérateur Like est à faire sur ce nom pour voir s'il correspond à ce que tu cherche. La lecture de la rubrique Like, opérateur de ton aide VBA interne t'apprendra comment l'utiliser. Elle est on ne peut plus claire et est de surcroît accompagnée d'exemples.
    Je n'irai pas plus loin tant que je ne verrai pas le code au moins tenté sur ces bases simples.

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Désolé mais, vois-tu, je n'aide que ceux qui s'aident.
    Alors voilà comment je vais le faire :
    - On parcourt la collection des feuilles de calcul ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim ws as worksheet
    for each ws in worksheets
      .... tes instructions
    next
    - Chaque objet ws ayant été typé en worksheet, il a une propriété Name (le nom de la feuille ws en cours dans la boucle
    - l'utilisation de l'opérateur Like est à faire sur ce nom pour voir s'il correspond à ce que tu cherche. La lecture de la rubrique Like, opérateur de ton aide VBA interne t'apprendra comment l'utiliser. Elle est on ne peut plus claire et est de surcroît accompagnée d'exemples.
    Je n'irai pas plus loin tant que je ne verrai pas le code au moins tenté sur ces bases simples.

    PS : bonjour Pierre. Je l'aurais volontiers laissé mettre le pied à l'étrier .

  6. #6
    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
    Citation Envoyé par unparia Voir le message
    [...]PS : bonjour Pierre. Je l'aurais volontiers laissé mettre le pied à l'étrier .
    Salut Jacques: par déformation professionnelle, je suis un adepte de l'apprentissage par l'exemple...
    "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...
    ---------------

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    C'est ce que je vois, Pierre.
    Ceci étant dit : pourquoi diantre nommer ainsi une feuille puisque tu la recherches en ignorant totalement la partie de son nom (la date) autre que la sous-chaîne "Export" et qu'elle est censée être unique ?
    Tu nous l'expliques, Sophie ?

  8. #8
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2017
    Messages : 13
    Par défaut
    Désolé pour ce conflit d'apprentissage...

    Mais je dois admettre que je comprend mieux avec un exemple
    De toute façon je ne suis pas du genre à recopier bêtement sans comprendre. Je suis prête à me torturer le cerveau pendant des heures pour comprendre un petit bout de code

    En tous cas un grand merci à vous deux pour votre aide
    Bonne fin de journée à vous 2
    Sophie

  9. #9
    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 qui renvoie un objet pointant vers la première feuille qui correspond à la condition.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function getFirstSheetWithNameLikeThis(Pattern As String) As Object
      Dim sh As Object
      Dim Found As Boolean
      Dim Counter As Long
     
      Counter = 1
      Do While Counter <= Sheets.Count And Not Found
        If Sheets(Counter).Name Like Pattern Then
          Set getFirstSheetWithNameLikeThis = Sheets(Counter)
          Found = True
        End If
        Counter = Counter + 1
      Loop
    End Function
    Tu peux l'utiliser de la manière suivante, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test()
      Dim sh As Object
     
      Set sh = getFirstSheetWithNameLikeThis("*export")
      If Not sh Is Nothing Then
        sh.Activate
      Else
        MsgBox "Feuille non trouvée", vbExclamation
      End If
    End Sub
    "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...
    ---------------

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2011, 10h17
  2. comment créer une table avec un nom variable ( le mois actuel)
    Par sarah_insat dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/02/2011, 18h00
  3. extraction de feuille avec des noms variables
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/11/2008, 16h26
  4. Selection de feuille avec un nom variable
    Par kakov dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/10/2008, 15h50
  5. [XSLT] - Comment selectionner une balise avec un nom variable ?
    Par bchabot dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/04/2006, 09h59

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