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

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
 
A

Abel

Guest
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.
 
A

Abel

Guest
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
 
C

Chris

Guest
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
 
C

Chris

Guest
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
 
A

Abel

Guest
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
 
C

Chris

Guest
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

  • suivi-macv4.zip
    25.8 KB · Affichages: 30
A

Abel

Guest
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
 

Discussions similaires

Statistiques des forums

Discussions
312 571
Messages
2 089 808
Membres
104 277
dernier inscrit
akdeche