Nomer une feuille par une date selectionnée dans une imutbox

  • Initiateur de la discussion Initiateur de la discussion Chris
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Chris

Guest
Bonjour le forum.

Je suis bloqué sur plusieurs points dans la creation de macro sur excel.

1) Est-il possible de crée une nouvelle feuille avec un nom de date (mm/aaaa ou mmm/aaaa) à partir d'une date saisie sur une imputbox sous le format mm/aaaa?
Le / n'est pas authorisé pour les nom de feuilles.

2) Comment faire pour inscrire le numero du mois et de l'année chacun dans une variable?
Je l'utilise apres dans un filtre elaboré.

Je met le fichier en exemple, macro tri statistique.


Merci


@+

Chris
 
Bonjour Chris,

Le fichier manque.

Sinon, en vitesse.

Mettons que MaDate=InputBox("Entrez la date")

Alors :

LeMois = Month (MaDate)
Annee = Year (MaDate)

A condition bien sûr que MaDate soit bien au format date.
On peut s'en assurer avec un Dim MaDate as Date.

Sinon, pour le nom de feuille, je crains bien qu'il ne te faille (hé ! hé ! faille <-> gros Bill. Rigolo non ! Bon allez, je disgresse, là) oublier le "/".

S'il ne te faut que le mois et l'année, pourquoi ne pas l'écrire en toute lettre.
NomFeuille = Format(LeMois, "mmmm") & " " & Format(Annee, "yyyy")

Je n'ai pas testé, mais à peut de chose près, ça devrait le faire.


En espérant que cela te dépanne.

Abel.
 
Re,

Je viens d'essayer ça et ça fonctionne :

MaDate = InputBox("Quel mois voullez vous traiter ?", "Création des statistiques", "mm/aaaa")If MaDate = "" Then Exit Sub
MaDate = Format(MaDate, "dd/mm/yy") ' Cette ligne n'est pas obligatoire

mois = Format(MaDate, "mmmm")
Annee = Format(MaDate, "yyyy")
NomFeuille = mois & " " & Annee

Sheets("Histostatvierge").Select
Sheets("Histostatvierge").Copy after:=Worksheets(Worksheets.Count)ActiveSheet.Name = NomFeuille

Abel
 
Merci abel

Tu as raion en plus c bien plus simple de lire le mois ecris en lettre.
J'ai reussi a bidouiller un truc mais je repasse par excel en utilisant des formules dans des cellules.

Le declaration des variables month et year fonctionne tres bien mais par contre la ligne avec le format ne fonctionne pas. J'obtient un truc genre janvier 1905 à chaque fois.



si tu as une solution je n'ai rien trouver comme info sur les dates en vba.

merci d'avance


@+

Chris
 
Oups j'ai oublié de rafraichir, je suis desolé.

Merci abel

J'ai reussit a adapter ta premiere ligne et j'obtient le mois en lettre et l'année en chiffre avec mes variables pour le le filtre auto.
Maintenant je sais comment ca marche.

Cette partie fonctionne a merveille.

Je souhaite faire un test afin de verifier que la feuille qui n'existe pas mias je vais me creuser la tete tous seul Si je bloque je posterai un post sur le forum.



Merci et encore desolé.

Chris
 
Re,

Ne regarde pas tout de suite.















For each ws in Worksheets
If ws=NomFeuille Then
MsgBox ("Te ! Te ! Te ! Mon brave. " & chr(10) & "La feuille " & NomFeuille & " existe déjà !", 48)
Complete les actions au cas où la feuille existe déjà
End If
Next

Abel
 
Salut Abel, le forum

Je n'arrete pas de te soliciter en ce moment mais il me reste 2 bugs sur ma macro pour la terminée.

1) La commande pour coller la selection ne fonctionne pas (je ne comprend pas car sur une autre macro tout fonctionne nickel avec le meme code)
2) Meme avec ton exemple je ne parvient pas à faire fonctionner la condition. J'ai une erreur d'execution.


Ci joint le fichier

Sub tri_statistique()
'

Application.ScreenUpdating = False
madate = InputBox("Quel mois voullez vous traiter ?", "Création des statistiques", "mm/aaaa")
If madate = "" Then Exit Sub
If madate < 36526 Then
MsgBox "Date non valide", vbCritical: Exit Sub
End If
Lemois = Month(madate)
annee = Year(madate)
Sheets("Histogen").Activate
Range("a8").Activate
Selection.AutoFilter Field:=6, Criteria1:=Lemois
Selection.AutoFilter Field:=7, Criteria1:=annee
Range("A9").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.Columns("m:m")).Select
Selection.Copy
nomfeuille = "Stat " & Format(madate, "mmm") & " " & Format(madate, "yyyy")
For Each ws In Worksheets
If ws = nomfeuille Then 'erreur execution
MsgBox "Statistique existante ", vbInformation: Exit Sub
End If
Next
Sheets("Histostatvierge").Copy after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = nomfeuille
Sheets(nomfeuille).Select
Range("A11").End(xlDown)(2).Select
ActiveCell.Select
ActiveSheet.Paste 'erreur collage
Range("a8").Select
Sheets("Histogen").Select
Selection.AutoFilter
Range("a6").Select
Application.CutCopyMode = False
MsgBox "Nouvelle feuille stat crée"
End Sub


Merci d'avance


@+
Chris
 

Pièces jointes

Bonjour Chris, tout le monde,

Excuse moi pour hier, je n'ai pas eu le temps de venir sur le forum.

Bien vu pour le ".Name" que j'avais oublié. C'était pour voir si tu suivais...

Pour la copie, c'est normal qu'il ne se passe rien.
Tu copies une sélection puis avant de la coller, tu fais d'autres opérations.
Excel ne sait plus, alors, de quoi tu veux parler lorsque tu fais un coller.

Essaie de faire la même opération "à la main" sans passer par la macro.

Pour éviter tout problème, il vaut mieux faire le collage dans la foulée du copiage.

Dans ton cas, cela revient à dire que tu dois faire la copie de la feuille avant le copier/coller du tableau.

Abel
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
8
Affichages
538
Réponses
8
Affichages
518
Retour