Copie d'onglet sur XLSM

Résolu/Fermé
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 - 5 janv. 2013 à 17:19
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 - 2 mai 2013 à 15:50
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 !

A voir également:

4 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 janv. 2013 à 19:40
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
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
5 janv. 2013 à 20:52
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
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
5 janv. 2013 à 22:48
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
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
6 janv. 2013 à 19:10
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
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
2 mai 2013 à 15:50
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