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 :

Nommer feuille selon variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Par défaut Nommer feuille selon variable
    Bonjour à toutes et tous,

    On ma chargé d'effectué différents tableaux pour ma boite, et je me vois mal effectuer les mêmes manoeuvres chaque année plus de 50 fois. J'essaie donc d'automatiser tout ce qui peut l'être afin d'alléger la tâche, mais...

    J'ai un problème qui a déjà été exposé par plusieurs utilisateurs sur différents sites, mais les réponses que j'y ai trouvées ne fonctionne pas chez moi... J'en conclus que je suis une belle clenche, et j'ai donc besoin de vos connaissances.

    J'ai une cellule "A5" sur ma feuille "Recap" qui contient une liste déroulante.
    J'ai nommé cette cellule "A5" en "Année"
    J'ai importé un tableau dans ce même fichier qui effectue une mise en forme via une macro que j'ai créée, et j'aimerais que cette macro change le nom de la feuille par la valeur choisie dans "Année"

    Actuellement, j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Name = Sheets("Recap").Range("A5").Value
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Name = Sheets("Recap").Range("annee").Value
    Mais bien évidemment, ça bug... Et j'ignore pourquoi (enfin si, probablement une grosse erreur de syntaxe,...)

    J'ignore si j'ai été relativement clair dans l'énoncé... Si ce n'était pas le cas, faites-le moi savoir, et je joindrai éventuellement un exemple concret par fichier excel...

    Merci d'avance pour votre aide...

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    voir ici

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Par défaut
    Merci pour ta réponse Benjîle.

    J'avais vu tes réponses au lien que tu as mentionné, en faisant mes recherches, et je ne pensais pas que cela s'appliquerait à mon cas étant donné que je souhaite utiliser des noms définis pour trouver le nom que la feuille devra prendre ("Annee" au lieu de "A5"), et quand bien même j'utiliserais la référence "A5", ... Je n'y arrive pas!

    J'ai cependant essayé d'utiliser la fonction INDIRECT, mais sans y arriver. Au moment d'exécuter la macro, j'ai un message d'erreur "Compile Error : Sub or Function not defined"
    Ce que je n'avais pas hier quand j'ai testé un peu n'importe comment cette fonction "INDIRECT" ... N'ayons pas peur des mots, je ne sais pas du tout comment utiliser cette fonction dans vba, ...

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    comme ta question était en partie excel j'ai bêtement répond par une fonction de calcul excel

    ta macro doit travailler à partir d'une variable objet worksheet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim sh as Worksheet
    set sh=worksheets(range("Annee").value)
    'maintenant sh est la worksheet sur laquelle tu veux travailler
    sh.copy 'ici je copie la feuille dans un nouveau classeur par exemple
    ...

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Par défaut
    Je n'ai pas vu ta réponse, nous l'avons posté à peu près en même temps!
    Merci pour le temps passé pour moi.

    Ta solution est effectivement plus professionnelle, ... Penses-tu que la mienne risque de me limiter, un moment où l'autre? Dans quels cas (en gros hein..)

    Citation Envoyé par Benjîle Voir le message
    comme ta question était en partie excel j'ai bêtement répond par une fonction de calcul excel

    ta macro doit travailler à partir d'une variable objet worksheet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim sh as Worksheet
    set sh=worksheets(range("Annee").value)
    'maintenant sh est la worksheet sur laquelle tu veux travailler
    sh.copy 'ici je copie la feuille dans un nouveau classeur par exemple
    ...

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    non continue avec ton code,
    pas besoin de t'embêter plus que ça si ça marche.

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Par défaut
    Et bien, ... Je suis un boulet!

    En fait, la première ligne de code que j'ai mentionnée est tout à fait fonctionnelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Name = Sheets("Recap").Range("annee").Value
    Si si ...

    C'est juste que si une autre feuille existe déjà avec ce même nom, alors la macro Bug (plutôt que d'informer que la feuille existe déjà, ou de la renommer automatiquement en "(2)" par exemple...)

    Donc, pas de INDIRECT nécessaire dans mon cas. Peut-être que ça pourrait optimiser le code, ceci dit?

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    ok!!!!!!
    laisse tomber mes conseils, j'ai répondu à côté 2 fois de suite

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

Discussions similaires

  1. changer de feuille selon la volonter de l'utilisateur
    Par swissmade dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/07/2007, 16h46
  2. requete selon variable
    Par alenglet dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/01/2007, 16h01
  3. [SQL] Filtrer ma BDD selon variable
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/09/2006, 21h44
  4. couleur Bouton selon variable d'url
    Par hisy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/04/2006, 10h23
  5. Réponses: 6
    Dernier message: 08/11/2005, 19h33

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