Macro sous excel

Fermé
allanmarla Messages postés 10 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 28 juillet 2011 - 26 mai 2011 à 15:28
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 - 27 mai 2011 à 12:01
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




A voir également:

8 réponses

ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
Modifié par ccm81 le 26/05/2011 à 17:14
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
allanmarla Messages postés 10 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 28 juillet 2011
27 mai 2011 à 10:01
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.
0
sirefalas Messages postés 219 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 12 février 2014 8
27 mai 2011 à 10:09
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)
0
allanmarla Messages postés 10 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 28 juillet 2011
27 mai 2011 à 10:39
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sirefalas Messages postés 219 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 12 février 2014 8
27 mai 2011 à 10:43
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
0
allanmarla Messages postés 10 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 28 juillet 2011
27 mai 2011 à 11:28
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
0
sirefalas Messages postés 219 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 12 février 2014 8
27 mai 2011 à 11:36
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) 
0
sirefalas Messages postés 219 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 12 février 2014 8
27 mai 2011 à 11:40
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
0
allanmarla Messages postés 10 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 28 juillet 2011
27 mai 2011 à 11:47
Ok merci pour cela. Je vais continuer à bosser sur cela ce week end.
0
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
27 mai 2011 à 12:01
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
0