Macro sous excel

Bonjour,

Voilà je me lance dans excel et les macros, j'aimerai grace à une macro (bouton qui se trouve dans feuille 1 par exemple) créer une nouvelle feuille et surtout que cette feuille soit renommée automatique par le mois suivant.

Par exemple: Fin mai 2011, je clique sur le bouton de la macro et le systeme me crée automatiquement une nouvelle feuille avec comme nom Juin2011.

J'ai réussi à créer une feuille normale mais je n'arrive pas à le faire avec le nom désiré.

Merci de votre aide

PS: le début du code VB ci dessous

Sub Rajout()
'
' Rajout Macro
'

'
Range("A1").Select
Sheets("Feuil2").Select
Sheets.Add
Range("A1").Select
ActiveSheet.Paste
End Sub

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. bonjour

    je n'ai pas bien compris ta question, est ce que tu veux créer une nouvelle feuille (vide) ou créer une copie d'une feuille existante

    Pour créer une nouvelle feuille vide

    Dim mois   
    mois = MonthName(Month(Date) + 1)   
    Sheets.Add   
    ActiveSheet.Name = mois

    Pour créer une copie de la feuille active en fin de classeur

    Dim mois  
    ActiveSheet.Copy After:=Sheets(Sheets.Count)  
    mois = MonthName(Month(Date) + 1)  
    ActiveSheet.Name = mois


    bonne suite
    1. Merci beaucoup pour le script, cela fonctionne bien. Il permet de rajouter une nouvelle feuille à la fin du classeur avec le nom du mois suivant.
      PS: Je voulais créer une copie d'une feuille active, pour répondre à votre question.

      J'ai utilisé ce script

      Dim mois
      ActiveSheet.Copy After:=Sheets(Sheets.Count)
      mois = MonthName(Month(Date) + 1)
      ActiveSheet.Name = mois

      Autre questions:

      I) Pour rajouter l'année à coté du mois (par exemple juin2011), j'ai essayé cela

      Dim mois
      ActiveSheet.Copy After:=Sheets(Sheets.Count)
      mois = MonthName(Month(Date) + 1)
      mois = YearName(Year(Date)+1)
      ActiveSheet.Name = mois

      Malheureusement ce a ne fonctionne pas, connaissez vous la solution ?

      2) Avec le script que vous m'avez donné, la feuille est rajoutée à la fin du classeur , est il possible de la rajouter entre 2 feuilles déjà existantes ?

      Merci de votre aide.
      1. Dim mois
        ActiveSheet.Copy After:=Sheets(Sheets.Count)
        mois = MonthName(Month(Date) + 1)
        mois = YearName(Year(Date)+1)
        ActiveSheet.Name = mois


        Il faut que tu comprenne ce que tu écris sinon ça n'a aucun intérêt.
        mois = MonthName(Month(Date) + 1)

        tu mets dans mois la valeur du mois suivant (si tu es en mai, mois aura comme valeur juin, on est bien d'accord?)

        Donc maintenant explique moi ce que fait
        mois = YearName(Year(Date)+1)
        1. Concernant le mois j'ai compris le fonctionnement.

          année(et non pas mois, dsl erreur de ma part) = YearName ( Year(Date)+1).
          Ce script va rajouter automatiquement une année +1 à chaque fois que je clique sur la macro en prenant en compte la date de l'ordi.
          Si je clique le 31 mais 2011, ma nouvelle feuille sera nommée Juin2012.

          Dans le script, si je suis logique il faut rajouter la variable
          année = YearName(Year(Date)) sans le +1
          (en fin d'année je rajouterai +1 pour passer de décembre2011 à Janvier 2012.

          Ensuite, je pense qu'il faut travailler avec l'ActiveSheet.Name = mois, et lui notifié l'année un truc du genre ActiveSheet.Name = mois+année.

          C'est pas simple les débuts, mais comme vous le dites il faut bien comprendre comment cela fonctionne.

          Merci de votre aide
          1. Voila, tu as compris ou était ton erreur :)
            Maintenant pour mettre le nom, perso je préfère passer par une troisième variable dans laquelle j'associerais les 2 autres même si ce que tu proposes est bon

            Bon courage pour la suite
            1. Je viens d'essayer mon nouveau script

              I)
              Dim mois
              ActiveSheet.Copy After:=Sheets(Sheets.Count)
              mois = MonthName(Month(Date) + 1)
              année = Year(Year(Date))
              ActiveSheet.Name = mois + année

              Il me donne un debug sur ActiveSheet.Name = mois + année, je pense que pour afficher mois et année je dois passer par un autre ActiveSheet.Name. Avez vous une idée ?

              II)

              J'ai essayé ce script pour vérifier la bonne date, lorsque je clique sur la macro il me crée bien une nouvelle feuille mais avec le nom 1903 ??,

              Script utilisé.

              Dim mois
              ActiveSheet.Copy After:=Sheets(Sheets.Count)
              année = Year(Year(Date))
              ActiveSheet.Name = année

              Il y a 2 erreurs à corriger

              1) concernant l'active sheet I)
              2) Pour afficher la bonne année II)

              Ensuite j'essayerai d'insérer la nouvelle feuille (Juin2011) entre 2 feuilles existantes.

              Merci de votre aide
              1. 1) erreur relativement simple, tu essayes de mettre un chiffre et une chaine de caractères en même temps, donc incompatibilité de type. Je suis en train de chercher la fonction qui fait passer un integer en string

                2) tu as un "year en trop écrit juste:
                année = Year(Date) 
              2. 1) trouvé, regarde dans l'aide la fonction Cstr() je te laisse te débrouiller avec, elle est relativement simple. Demande si jamais tu n'arrives pas à t'en servir
            2. Ok merci pour cela. Je vais continuer à bosser sur cela ce week end.
              1. re

                - pour nom de feuille = mois+année
                Dim mois, annee
                ActiveSheet.Copy After:=Sheets(Sheets.Count)
                mois = MonthName(Month(Date) + 1)
                annee = Year(Date)
                ActiveSheet.Name = mois & " " & annee

                - pour inserer la nouvelle feuille avant la feuille 3 (par exemple)
                ActiveSheet.Copy before:=Sheets(3)
                - pour inserer la nouvelle feuille avant la feuille "FF" (par exemple)
                ActiveSheet.Copy before:=Sheets("FF")

                bon week end