Nomer une feuille automatiquement

Résolu
hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   -  
hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour
J'ai un classeur nomé : fact 2017.xls, J’ai un onglets (feuille) créé; Janv 2017
Je voudrai créer par copie de Janv 2017 Fev 2017 puis de Fev 2017 créer Mars 2017 ainsi de suite jusqu'à... Dec 2017.Enfin créer un nouveau Classeur nomé Fact 2018.xls dont la 1ére feuille est une copie de Dec 2017
sous vba en créant un bouton
merci pour votre aide.

17 réponses

Résumé de la discussion

Automatiser la création mensuelle des feuilles dans un classeur Excel consiste à copier Janv 2017 vers Fev 2017, puis Fev 2017 vers Mars 2017, jusqu’à Décembre 2017, puis générer Fact 2018.xls. La solution proposée préconise d’insérer un bouton ActiveX nommé CommandButton1 sur Janv 2017 et de coller un code qui crée automatiquement la feuille suivante ou ouvre un nouveau classeur selon l’année. Si la feuille du mois suivant existe, le code l’active et passe à l’étape suivante, sinon il la copie et propose l’enregistrement sous le nom Fact 2018.xls. En cas de retours variés selon les versions d’Excel, plusieurs utilisateurs rapportent que le mécanisme ne se répète pas sans ajustements et que le contrôle d’erreurs doit être renforcé.

Bobot (l'IA à votre service)
  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Places un bouton ActiveX sur la feuille (bouton nommé CommandButton1) et copies le code ci-dessous dans le module de la feuille nommée Janv 2017 (qui doit être la seule du classeur) :

    Option Explicit
    Private Sub CommandButton1_Click()
    Dim dlg As FileDialog
    Dim c As Workbook
    Dim f As Worksheet
    Dim d As Date
    Dim n As String
    Dim a As Integer
    Dim i As Integer
    
      'Désélectionner le bouton
      ActiveCell.Activate
      'Date actuelle
      d = CDate("1 " & Me.Name)
      'Année actuelle
      a = Year(d)
      'Date mois suivant
      d = DateSerial(a, Month(d) + 1, 1)
      'Nom de la feuille
      n = Application.Proper(Format(d, "mmm yyyy"))
      If a = Year(d) Then
        ' si la feuille suivante est dans la même année ....
        On Error Resume Next
        Set f = Worksheets(n)
        On Error GoTo 0
        If f Is Nothing Then
          ' - si la feuile n'existe pas, l'ajouter.
          Me.Copy after:=Me
          Set f = ActiveSheet
          f.Name = n
        Else
          ' - si la feuille existe, la sélectionner
          f.Activate
        End If
      Else
        ' si on change d'année, copier la feuille dans un nouveau classeur
        Me.Copy
        Set f = ActiveSheet
        f.Name = n
        Set c = f.Parent
        ' proposer l'enregistrement du nouveau classeur
        Set dlg = Application.FileDialog(msoFileDialogSaveAs)
        With dlg
          ' nom du fichier
          .InitialFileName = ThisWorkbook.Path & "\" & "Fact " & Year(d)
          ' filtrer sur l'extension *.xls
          For i = 1 To .Filters.Count
            If .Filters(i).Extensions = "*.xls" Then
              .FilterIndex = i
              Exit For
            End If
          Next i
          If .Show <> 0 Then
            'Enregistrer le classeur
            On Error Resume Next
            Application.DisplayAlerts = False
            .Execute
            Application.DisplayAlerts = True
            On Error GoTo 0
          End If
        End With
      End If
    
    End Sub

    Exemple :
    https://www.cjoint.com/c/GEbpJTODdFd


    1
  2. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    merci pour votre attention
    je trouve une erreur au niveau compilation de la ligne 14
    d = CDate("1 " & Me.Name)(Me sélectionner).
    et je pause une autre question dans le ^m sujet:
    comment copier une feuille (derniére feuille) et la nomé selon l'idex de la feuille précedente(copié), je m'explique
    ActiveSheet.Paste
    if sheets(1)then ActiveSheet.Name = "Fev 2017"
    if sheets(2)then ActiveSheet.Name = "Mars 2017"
    .
    .
    .
    .
    .j'usqu'a :if sheets(12)then ActiveSheet.Name = "Dec 2017"
    comment est ce que je peu écrire cette procédure dans VBA
    et enfin créer un nouveau classeur nomer Fact 2018.xls enregistrée sur le bureau dont la 1ere feuille est une copie de Dec 2017
    j'ai télécharger l'exemple que vous m'avez envoyer et je trouve pas la macro
    merci beaucoup pour votre attention
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Bonjour,

      S'il y a une erreur sur la ligne 14 c'est que la consigne n'est pas respectée :
      Une seule feuille nommée Janv 2017

      L'erreur vient du fait que la feuille n'est pas nommée correctement :
      il ne faut pas Fev 2017 mais Févr 2017

      Dans le fichier exemple (que je viens de télécharger pour vérifier) la macro se situe comme dit plus haut, dans le module de feuille.

      Il est impératif qu'elle se situe là et pas dans un module standard, Cela permet de la dupliquer à chaque copie de feuille et de la retrouver dans le fichier de 2018.
      0
  3. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    bon soir monsieur
    j'attire votre attention que je suis débutant en vba surtout
    il ya des points que je n'est pas bien copris
    est ce que je peu vous envoyer mon fichier excell et comment
    bonne réception et merci d'avance
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    bonsoir
    je vous remercie profondément
    mais il ya un message de securité que j'ai pu l’éviter il dit pour des raisons de sécurité les macros ont eté arrêté comment faire?
    0
  6. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    Bonjour
    pourquoi lorsque je clique sur le bouton (mois suivant) rien ne se passe
    j'ai fait beaucoup d'essaie
    merci de me répondre
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Re,

      Parce que les macros ne sont pas activées :
      Excel 2007 et après : Options Excel / Centre de gestion de la confidentialité / Paramètres du centre de gestion de la confidentialité / Options des macros = Activer toutes les macros + Accès approuvé au modèle d'objet du projet VBA
      Excel 2003 et avant : Outils / Options / Onglet sécurité / Sécurité des macros / Onglet Niveau de sécurité = Sécurité faible + / Onglet Editeurs approuvés = faire confiance au projet Visual Basic
      0
  7. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    re
    j'ai fait comme vous m'avez expliquer mais toujours pas de réponse
    le bouton ne s'exécute pas
    autre sujet
    comment écrire sous VBA pour nommer une nouvelle feuille (une copie de la dernière selon le nom de la feuille copiée)
    cad :
    si le nom de la feuille copié="Janv 2017", alors nouveau non de la feuille a inserrer sera "Fev 2017" (then ActiveSheet.Name = "Fev 2017")
    si le nom de la feuille copié="Fev 2017", alors nouveau non de la feuille a inserrer sera "Mars 2017" (then ActiveSheet.Name = "Mars 2017")
    ainsi de suite j'usqua "Dec 2017"

    je veu introduire ce que vous aller m'ecrire dans le bouton nouveau
    Sub Groupe59_QuandClic()
    critere = InputBox("Critere?")
    If critere = "" Then Exit Sub
    ActiveSheet.Copy after:=Sheets(Sheets.Count)
    ActiveSheet.Name = critere
    [c7].Value = [c7].Value + 1
    [A843].Value = [C843].Value
    End Sub
    ici je veu éliminer l'imput box et remplacer par if then
    j'espére que vous m'avez copmris
    merci
    0
  8. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    merci pour votre aide et de la patience dont vous avez fait pour mon projet.
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Est-ce que maintenant les macros fonctionnent ?
      0
  9. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    Non
    Lorsque je clic rien ne ce passe
    Je ne saï pas pourqpui
    Merci pour votre attention
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      le mode création est-il désactivé (sur l'onglet développeur) ?
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Quel OS et Quelle version d'Excel ?
      0
      1. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10 > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        bonsoir
        Excell 97-2003
        https://www.cjoint.com/c/GEcwjqyIaI8
        0
  10. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    a peu prés j'ai trouver une solution qui n'est pas complète veuillez examiner ce que j'ai fait (corriger et compléter svp)
    merci d'avance
    https://www.cjoint.com/c/GEcwxi3Vy18
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Bonjour,

      Excel 97-2003 ce n'est pas une version, dans cette période il y a eu 4 versions :
      - Excel 97 - (8.0) - 15/01/1997
      - Excel 2000 - (9.0) - juin 1999
      - Excel 2002 - (10.0) - juin 2001
      - Excel 2003 - (11.0) - Automne 2003
      Pour connaitre la version menu ? (ou aide) / a propos d'Excel
      Le comportement des macros peut être différent selon la version.

      Est-ce que les macros fonctionnent ?
      Est-ce que le fichier du premier message (post 1) fonctionne ?
      Tant que j'ai pas ces réponses on avancera pas !

      Cependant, comme je l'ai demandé dès mon premier message, il faut impérativement mettre la macro que j'ai proposée dans le module de feuille, pas dans un module standard !

      Est-ce que
      0
      1. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10 > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        - Excel 2003 - (11.0) - Automne 2003
        -les macros fonctionnent mais le bouton (mois suivant) ne fonctionne pas je peu ni selectionner, ni copier et rien ne ce passe.
        -le fichier du premier message (post 1) ne fonctionne pas
        0
      2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784 > hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention  
         
        Avec cette version, le fichier du post 1 devrait fonctionner, est-ce le cas ?
        0
  11. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Re,

    C'est bizarre que le fichier ne fonctionne pas !

    Je te remets un fichier similaire à celui du post 1 :
    https://www.cjoint.com/c/GEdmcuillCd

    Télécharger le et enregistres-le sur ton disque dur.
    Ne fait aucune modification.
    Teste-le c'est-à-dire :
    - Appuis sur le bouton mois suivant, il doit créer une feuille Févr 2017,
    - Appuis sur le bouton de Févr 2017, il crée Mars 2017,
    - ... jusqu'en Déc 2017.
    - Appuis sur le bouton de Déc 2017 : il crée un nouveau fichier avec uniquement Janv 2018 et une fenêtre propose l'enregistrement du fichier sous le nom Fact 2018.

    Est-ce ce fichier fonctionne ?
    0
  12. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    Non
    J'appui sur le bouton et rien ne ce passe
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      C'est pas normal,
      C'est peut-être un problème avec les boutons ActiveX (a cause de la mise à jour KB 2920794), essaies ce fichier (le second bouton est de type formulaire) :
      https://www.cjoint.com/c/GEdmHAMRbjd
      0
  13. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    oui ça marche(une seule fois), cad il a créer seulement Fev 2017 et par la suite aucun effet cad il n'a pas crée Mars 2017 en cliquant de nouveau.
    merci pour votre attention
    0
  14. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    pour avoir Mars 2017 il faut cliquer de nouveau sur le bouton (mois suivant) avec le bouton droit de la souris pour changer du Feuille1 au Feuille2 l'affectation du macro et ainsi de suite pour la création d'une nouvelle Feuille et ça s’arrête jusqu’à Feuille 9 (Oct2017) .
    et enfin une boite de dialogue qui s'ouvre dont le contenu est :
    vous avez modifié un projet signé. vous ne possédez pas la clé approprié pour le signer. cette signature sera ignorée.
    est ce que c'est comme ça je doit faire?
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Ok, je vois :
      Sur ton ordinateur, les boutons ActiveX ne fonctionnent pas.
      C'est un bug qui provient très probablement d'une des mises à jour Office, ça arrive fréquemment sur certaines machines :
      https://www.google.fr/#q=excel+activex+ne+fonctionne+plus&btnK=Recherche%20Google
      La solution préconisée par Microsoft ne fonctionne pas toujours :
      https://support.microsoft.com/fr-fr/help/817112/

      Ce fichier, avec un bouton de formulaire à la place du bouton ActiveX devrait fonctionner correctement :
      https://www.cjoint.com/c/GEdn0qNy2fd

      Cordialement
      Patrice
      0
      1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784 > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        PS : Supprimes le Module 1
        0
  15. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    Voila
    Finalement ça fonctionne bien mais il ya une petite retouche c'est en créant nouvelle classeur 2018 je veux que la 1ere feuille commence par copie de Dec 2017 et je commence de nouveau le travail cad en cliquant je 'obtiend Janv 2018 .........
    merci beaucoup pour votre aide.
    Riadh.
    0
  16. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10
     
    Monsieur
    peu être vous avez tromper de choisir la pièce jointe
    c'est le fichier que je vous est envoyer la 1ere fois de ma part
    merci pour votre compréhension
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Oui, mais avec la commande nouvelle feuille qui fonctionne comme demandé !
      0
      1. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10 > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        c'est exactement ce que je cherche merci de me simplifier la vie (toujours en apprend)
        encore je vous remercie de tout mon cœur
        j'ai un autre sujet(améliorer simplifier un fichier de pointage) que j’espère que vous intervenir..https://forums.commentcamarche.net/forum/affich-34564340-corriger-ameliorer-et-simplifier-un-fichier-de-pointage#p34564753
        merci beaucoup
        Riadh..
        0
      2. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10 > hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention  
         
        Bonjour
        encore une question
        a chaque création d'une nouvelle feuille j'ajoute 1 au cellule c7 et copier la cellule A843 dans C 843 :( [c7].Value = [c7].Value + 1
        [A843].Value = [C843].Value) oû est ce que je peu introduire cette écriture dans votre procédure?
        le changement du non de la feuille dans le lien hypertexte des bouton Haut et Bas est ce que je peu le faire automatiquement?
        comme ça c'est fini et j'automatise tout les taches
        Bonne journée
        Riadh.
        0
      3. hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention   10 > hakimr Messages postés 261 Date d'inscription   Statut Membre Dernière intervention  
         
        j'ai réussi a jouter les deux ligne pour modifier C7 et A843 a chaque ajout de feuille et ça fonctionne et ça marche bien, sauf il reste le changement de l'adresse des lien hypertexte des boutons Haut et Bas est ce que je peu automatiser cette tache ? sinon ce n'est pas un problème je fait manuellement
        merci et bonne journée
        0