MsgBox pour nommé une feuille de calcul

Fermé
arc - 28 août 2013 à 13:03
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 28 août 2013 à 14:37
Bonjour a vous les internautes de CCM.

J'ai une question pour vous qui relève du VBA.
J'ai ma feuille de calcule avec une macro qui permet de faire un suivi journalier de mes ajouts.
Ma macro prend la Feuil1, la copie vers une feuille qui a pour nom la date du jour.
Sheets("Feuil1").Copy After:=Sheets(ThisWorkbook.Sheets.Count)
Sheets(Sheets.Count).Name = Format(Now, "dd-mm hh.mm.ss")


Seulement il y aura forcement des jours ou je ne pourrais pas enregistré mes modifications, donc je voudrais changer le : Sheets(Sheets.Count).Name = Format(Now, "dd-mm hh.mm.ss") par une MsgBox qui me demande le nom de ma feuille, dans lequel j'inscriré la date de mon choix.

Est-ce faisable ?

Je vous remercie beaucoup de votre lecture, et vous souhaite une agréable journée à tous !

Cordialement !
A voir également:

2 réponses

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
28 août 2013 à 13:10
Bonjour,

Sheets("Feuil1").Copy After:=Sheets(ThisWorkbook.Sheets.Count)

do while feuille = ""
feuille = InputBox("Merci d'indiquer le nom de la feuille", "Nom de la feuille")
loop
Sheets(Sheets.Count).Name = feuille
0
Tu m'a devancé, en effet j'utilise le même code que toi mais le format n'est visiblement pas bon je suppose...
0
OOOOOOPS je m'excuse j'ai oublié une partie de mon message i'm so sorry !
En effet, j'ai déjà fait mes recherches biensur !

Voici mon code :
reponse = InputBox("Quelle date correspond à cette feuille ?")
Sheets(Sheets.Count).Name = reponse

Mais je n'arrive pas a rentré de date, il me donne une erreur.

Désolé pour l'oublie
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
28 août 2013 à 13:20
sous quel format tu rentres ta date?
jj/mm/AAAA ou
JJ.mm.AAAA
ou?
0
Disons JJ/MM
0
J'ai reussi a faire ça.

Jour = (InputBox("Selectionner la date de la feuille au format JJ-MM", "DATE DE LA FEUILLE"))
Sheets("Feuil1").Copy After:=Sheets(ThisWorkbook.Sheets.Count)
Sheets(Sheets.Count).Name = Format(Jour, "dd-mm")

Mais pas avec le format DD/MM je n'y arrive pas.

Mais ça ce n'est pas grave, c'est possible de faire un code qui, si la réponse ne correspond pas au format, donne un code d'erreur (de mon choix) et redonne l'input box en boucle tant que la réponse n'est pas satisfaisante ?
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
Modifié par melanie1324 le 28/08/2013 à 13:41
tu ne peux pas faire rentrer le symbole / dans le nom d'une feuille.
Tu peux aussi faire ca :

do while feuille = ""
feuille = InputBox("Merci d'indiquer le nom de la feuille", "Nom de la feuille")
loop

' en gros tu peux écrire ton format date DD/mm, le nom de ta feuille deviendra DD-MM
test = feuille
feuille = ""
do while len(test) >0
if left (test,1) <> "/" then
feuille = feuille & left(test,1)
else
feuille = feuille &"-"

end if
test = right(test,len(test)-1)
loop

Sheets(Sheets.Count).Name = feuille
0
Okay mais moi j'ai fait plus simple, j'ai mis :
If Not IsDate(Jour) Then GoTo 1

Qui transforme 24/08 en 24-08 aussi, mais mon soucis c'est que si je rentre une valeur fausse, il va m'afficher une erreur d'execution VBA. Donc je voudrais qu'a la place de cette erreur, il y ai un retour vers la inputbox en boucle tant que la réponse donné ne correspond pas au bon format.

Il y a aussi une erreur si le nom choisi est déjà pris, je voudrais aussi changer le code d'erreur d'execution par mon propre code d'erreur avec un retour vers l'inputbox !

Code actuel :

Dim Jour As Date
1         Jour = (InputBox("Selectionner la date de la feuille", "DATE DE LA FEUILLE"))
        If Not IsDate(Jour) Then GoTo 1
        Sheets("Feuil1").Copy After:=Sheets(ThisWorkbook.Sheets.Count)
        Sheets(Sheets.Count).Name = Format(Jour, "dd-mm")


Je vais testé ton code que tu m'a concocté merci pour ton aide !

PS les erreurs sont les suivantes :
Erreur d'excution 13 : donné de l'inputbox vide ou incompatible (par exemple 24/24)
Erreur d'excution 2004 : Nom déjà pris

Possible de les contournés ?
0