Se connecter avec
S'enregistrer | Connectez-vous

[vba] créer une feuille nommée

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

En fait, c'est tout simple.

C'est la propriété name de la sheet qu'il faut modifiée. En ce qui concerne la collection sheets que tu utilises sache que tu peux utiliser soit la position de la feuille soit son nom, donc dans ton exemple cela fonctionnerai.
  1. Sub InsereFeuille()
  2. Sheets.Add.Move After:=Sheets(Sheets.Count)
  3. Sheets(Sheets.Count).name = "toto"
  4. End Sub


Mais ca reste une méthode pas vraiment conseillé surtout si tu l'ajoute après une autre feuille désignée ou autre, en fait il faut être certains de sa position donc toujours risquer, et connaître le nom les autant surtout entre vf et va.
Donc je te conseille de passer par l'instanciation d'un objet worksheet, en procédant de cette manière. D'ailleur le move n'est pas nécessaire si tu regardes la fonction add de workbook.

  1. Sub InsereFeuille()
  2. Dim shtoto as worksheet
  3. Set shtoto = Sheets.Add(After:=Sheets(Sheets.Count))
  4. shtoto.name = "toto"
  5. End Sub


Gros avantage de cette méthode c'est que tu peux utiliser ta variable pour d'autre traitement que tu veux faire par la suite en utilisant shtoto plutot que sheets("toto")... par contre en fin de programme il faut vider l'instance, enfin c'est plus propre et sa libère la mémoire, comme ceci :

  1. set shtoto = nothing

novice_33 a dit :
En fait, c'est tout simple.

C'est la propriété name de la sheet qu'il faut modifiée. En ce qui concerne la collection sheets que tu utilises sache que tu peux utiliser soit la position de la feuille soit son nom, donc dans ton exemple cela fonctionnerai.
  1. Sub InsereFeuille()
  2. Sheets.Add.Move After:=Sheets(Sheets.Count)
  3. Sheets(Sheets.Count).name = "toto"
  4. End Sub


Mais ca reste une méthode pas vraiment conseillé surtout si tu l'ajoute après une autre feuille désignée ou autre, en fait il faut être certains de sa position donc toujours risquer, et connaître le nom les autant surtout entre vf et va.
Donc je te conseille de passer par l'instanciation d'un objet worksheet, en procédant de cette manière. D'ailleur le move n'est pas nécessaire si tu regardes la fonction add de workbook.

  1. Sub InsereFeuille()
  2. Dim shtoto as worksheet
  3. Set shtoto = Sheets.Add(After:=Sheets(Sheets.Count))
  4. shtoto.name = "toto"
  5. End Sub


Gros avantage de cette méthode c'est que tu peux utiliser ta variable pour d'autre traitement que tu veux faire par la suite en utilisant shtoto plutot que sheets("toto")... par contre en fin de programme il faut vider l'instance, enfin c'est plus propre et sa libère la mémoire, comme ceci :

  1. set shtoto = nothing

ok merci de ton aide j'étais totalement perdu
bonne fin de journée

Bonjour, voilà, j'aimerais poser une question qui va un rien plus loin.

J'aimerais créer une page nommée, mais le nom serait le contenu de la cellule active de la feuille active.
Je n'ai aucune idée de comment récupérer le dit contenu (il s'agirait de texte) pour le mettre dans la variable nom...

Voilà, merci pour votre aide.
Expert Programmation

Cellule active : ActiveCell
Feuille active : ActiveSheet

Pourquoi ai-je l'impression que colli83 se fout de nous et qu'il n'a pas cherché par lui-même ne serait-ce que 2 secondes ?

Hum, merci, ça, je le savais, mon problème revient à récupérer le contenu de la cellule active (activecell d'accord), et à l'utiliser pour nommer une nouvelle feuille ( sheet(sheet.count) ).

Pour préciser, comment puis-je récupérer la donnée dans la cellule en format texte (string) et l'utiliser pour créer et nommer une nouvelle feuille.
Mais essais n'aboutissent que sur des erreurs 1004 et je me demande si ça ne provient pas du format de ma donnée. Je patauge vraiment en fait...
Expert Programmation

Citation :
Hum, merci, ça, je le savais
Ben débrouille-toi !

Citation :
( sheet(sheet.count) )
Relis le message de Freeman23 et utilise
Set shtoto = Sheets.Add


Ligne 4 du code de Freeman, on peut lire
shtoto.name = "toto"
Hum, merci mais ça tu devrais savoir le faire :
shtoto.name = ActiveSheet.ActiveCell


zeb a dit :
Si je ne l'ai pas dis cent fois, je ne l'ai jamais dis :
ARRETER D'UTILISER ActiveTruc OU ActiveMachin.
source : http://www.google.com/search?q=activetruc+site%3Apresen...
Evidemment, ne pas se baser sur les ActiveTrucs.

Donc voici un ptit algo :
  • Stocker le contenu de la cellule active de la feuille active du classeur actif (beurk) dans une variable texte.
  • Vérifier que le contenu de la variable n'est pas vide !!!!! (Sinon, gare au erreur 1004). Mettre un message et interrompre, sinon.
  • Ajouter une feuille en utilisant un
    Set variable =

  • Renommer la nouvelle feuille avec le contenu de la variable texte.

    Stou. Je ne te mets pas le code, de peur de lire "Hum, merci, ça, je le savais". :heink: 

    héhé, merci, je pense que là, cette aide sera un peu plus utile que la précédente. Donc, je te remercie.

    J'essaye dès que j'ai le temps et je viendrai mettre mes conclusions (ou réclamer encore de l'aide si je suis trop nul).

    Merci et à bientôt.
    Lassé par la pub ? Créez un compte