Copie d'onglet sur XLSM

Résolu
touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   -  
touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   -
Ouf ! Je viens de passer une fois de plus quelques heures sur Excel ...

Mais pour le VBA complexe, je suis obligé une fois de plus de vous demander de l'aide ...

Voilà ce que je cherche à faire :
Sur mon fichier XLSM, comprenant un onglet nommé « Modèle », je souhaite insérer un bouton affecté à une macro ayant la fonction suivante ;
Ajout d'un onglet à droite de l'onglet « Modèle » contenant une copie de cet onglet, et nommé à la date du jour, ou à la date du jour avec un « b » ou « c » si le premier existe déjà.
exemple :
<Modèle> <05-01-2013> <05-01-2013b>

J'ai bien trouvé quelques exemples sur CCC, mais trop différents de ce dont j'ai besoin

D'avance merci de m'apporter votre aide !

4 réponses

  1. Heliotte Messages postés 1561 Statut Membre 92
     
    Je ne sait pas si les lettres majuscules vous conviennent .. A vous de me dire.

    Voilà un code pour Excel 2003 .. espérons qu'il fonctionne chez vous !:

    Option Explicit
    
    Sub CopieOnglet()
        Dim DateJour As String, sDateJour As String
        Dim iVal As Integer, sChaine As String
        Dim MaFeuille As Excel.Worksheet
        Dim Encore As Boolean
        '
        Sheets("Modèle").Select
        DateJour = Format(Now, "dd-mm-yyyy")
        sDateJour = DateJour
        '
        Encore = True: sChaine = ""
        iVal = 0
        Set MaFeuille = ActiveWorkbook.Worksheets(1)
        While (Encore)
            Encore = False
            ' Vérifier si une feuille possède le même nom
            For Each MaFeuille In ActiveWorkbook.Worksheets
                ' comparer : nom de la feuille du classeur avec le nom à donner
                If (MaFeuille.Name = sDateJour) Then
                    Encore = True
                    iVal = iVal + 1
                    If (iVal > 26) Then
                        MsgBox "Déjà 26 feuilles", vbCritical, "Copie impossible !"
                        Exit Sub
                    End Sub
                    sDateJour = DateJour & Chr(64 + iVal)
                End If
            Next MaFeuille
        Wend
        ' copier la feuille modèle
        Sheets("Modèle").Copy After:=Sheets("Modèle")
        ' renommer cette feuille copiée
        ActiveSheet.Name = sDateJour
    End Sub
    0
    1. touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   16
       
      Salut Heliotte
      Tout d'abord 1 grand merci.
      J'ai du vous prendre du temps...
      J'ai accompagne les miens aux courses mais je teste dès mon retour.
      Je vais essayer de tout comprendre cette fois pour progresser.
      A plus !
      0
  2. touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   16
     
    Heliotte

    Enfin de retour, j'ai testé fébrilement votre macro.

    J'obtenais une "Erreur de compilation : Bloc If sans End If"
    J'ai donc remplacé ligne 27 "End Sub" par "End If", et ça roule !

    Maintenant j'essaie de comprendre votre travail, parce que c'est sacrément complexe !

    - Pourquoi avoir limité à 26 feuilles ?
    - Qu'est-ce que "iVal" ?

    Encore merci pour tout !
    0
  3. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonsoir touroul,

    - Pourquoi avoir limité à 26 feuilles ? :
    Limité car vous avez demandé les lettres "A", "B", etc.
    Vous n'avez pas précisé qu'il pouvait y avoir plus de 26 feuilles.
    Donc, quand arrive la 27è copie de la journée (c'est déjà pas mal), on sort de la procédure sans copier aucune autre feuille.

    - Qu'est-ce que "iVal" ? :
    iVal est le compteur de feuilles, justement pour pouvoir "éventuellement" s'offrir plus de 26 copies !
    Comme, pour l'instant, on reste à maximum 26 copies, on aurait pu ne pas l'utiliser .. mais je préfère voir le "après" ...

    Bon dimanche.
    0
  4. touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   16
     
    Bonjour Heliotte

    J'espère que vous verrez ce message ...

    Je me sers pour ainsi dire tous les jours de cette macro que vous avez écrite pour moi.
    Ce travail est vraiment formidable, très sincèrement.
    Pour rappel, il s'agissait de copier une feuille modèle après pression sur un bouton de la page d'accueil, sur un nouvel onglet à la date du jour.

    J'ai fait évoluer mon fichier :
    https://www.cjoint.com/?0EcpHYBUjkP

    Désormais, il n'y a plus 1 seul mais 4 modèles de feuille, et donc 4 boutons sur la page principale.

    Voici donc un peu de travail pour vous si vous voulez bien m'aider à nouveau :

    1- Est-il possible de modifier la macro pour copier le bon modèle sur le nouvel onglet daté ?

    2 - Il y a maintenant une erreur d'exécution '1004' à la copie du modèle

    3- Le Combobox "Labos" en G2 affiche une liste de 4 éléments seulement : en fait, lors de la copie de la page, la Validation des données fait appel à =Listes!$A$2:$A$7 au lieu de =Labos

    4- Le Combobox "Automates" en G3 doit présenter =AutomatesXE (ou XT, XS, XN)

    Je vous remercie d'avance pour votre aide si le temps vous le permets.

    Bonne journée !
    0