Nommer le nom de plusieurs feuilles

Résolu
JCD -  
 JCD -
Bonjour,

j'aimerais créer un programme qui me nomme mes feuilles (je vais en avoir beaucoup) avec une date.
Chaque feuille aurait une date qui se suit.
Feuille 1 par exemple serait 01 janvier 2010 par exemple.
Feuille 2 02 janvier 2010 ....
Comme je vais avoir environ 90 feuilles, est-ce qu'il y aurait une solution pour automatiser le nom des feuilles?

En vous remerciant

10 réponses

  1. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    La cellule [A1] doit-être en format date .
    1
  2. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Mettre la date de départ en [A1] et la procédure suivante dans un module puis lancer la procédure.
    Sub renommerSh()
    madate = Range("A1").Value: c = 0
    For Each sh In Worksheets
        sh.Name = madate + c
        c = c + 1
    Next sh
    End Sub
    0
  3. JCD
     
    Merci de ta réponse Le Pingou,

    Lorsque j'exécute ta macro j'ai une erreur d'exécution 1004.
    Le nom de la feuille n'est pas valide.

    Sans exagérer, est-ce qu'il serait possible d'avoir un paramètre en plus.
    Commencer le changement de nom à partir d'une feuille (d'un numéro sheets(15) par exemple).
    Ce qui me permettrait de ne pas modifier les 14 première.

    Encore Merci
    0
  4. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Il faudrait m'expliquer cette erreur !
    Si erreur pas de suite possible.
    Salutations.
    Le Pingou
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    je crois que VB récupère le nom sous la forme jj/mm/aa et comme le '/' n'est pas permis pour un nom de feuille il faut faire quelque chose au niveau du format date
    0
  7. JCD
     
    Le débogueur me surligne cette ligne de commande

    Sh.Name = madate + c

    avec le message d'erreur précedent ou il me demande de vérifier le nom de la feuille.
    0
  8. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour tt le monde,

    excusez l'incruste

    Option Explicit
    Const depart As Byte = 15 ' feuille de début de numérotage
    
    Sub baptiser_onglet()
    Dim date_dep As Date, dateX As Long, nbre As Byte, cptr As Byte
    
    date_dep = InputBox("saisir la date sous forme jj/mm/aa")
    dateX = DateSerial(Year(date_dep), Month(date_dep), Day(date_dep))
    
    nbre = ThisWorkbook.Sheets.Count
    Application.ScreenUpdating = False
    For cptr = depart To nbre
        Sheets(cptr).Name = Format(dateX, "dd mmmm yyyy")
        dateX = dateX + 1
    Next
    
    End Sub


    Attention, la réponse sous forme date de l'inputbox n'est pas traité
    explication: pour additionner une date en VBA il faut utiliser dateserial
    0
  9. JCD
     
    Merci pour votre aide,

    J'ai bien mis ma cellule [A1] sous format date.

    Pour michel_m, j'ai également une erreur d'exécution sur cette ligne

    Sheets(cptr).Name = Format(dateX, "dd mmmm yyyy")

    Erreur d'exécution 9
    L'indice n'appartient pas à la selection
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      désolé, mais j'ai testé avant d'envoyé et c'était OK
      je viens de re-essayer et pas de problème

      donc...
      0
  10. ccm81 Messages postés 11033 Statut Membre 2 434
     
    la macro de michel_m est très intéressante et marche bien
    pour JCD au vu du message derreur
    peut être : la macro suppose que tu as dejà plus de 15 feuilles dans ton classeur (const depart = 15), elle ne crée pas de nouvelles feuilles donc ...
    0
  11. JCD
     
    Re Bonsoir michel_m,

    Effectivement ça fonctionne bien chez moi.
    Je vais retester demain.

    Merci à tous.
    0