MsgBox pour nommé une feuille de calcul

arc -  
melanie1324 Messages postés 1561 Statut Membre -
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 !

2 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
    1. arc
       
      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
  2. arc
     
    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
    1. melanie1324 Messages postés 1561 Statut Membre 156
       
      sous quel format tu rentres ta date?
      jj/mm/AAAA ou
      JJ.mm.AAAA
      ou?
      0
    2. arc
       
      Disons JJ/MM
      0
    3. arc
       
      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
    4. melanie1324 Messages postés 1561 Statut Membre 156
       
      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
    5. arc
       
      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