Macro copie d'onglet

Bonjour a tous, j'aurai besoin d'un peu d'aide car je bloque des le début de mon code.

alors, je souhaite faire ceci:

dans le fichier fournoi, j'ai une feuille 14juin prog et 14 juinres.

J'aimerai créer un bouton et donc une macro qui ferait la chose suivante:

  • sélection de feuil2 et feuil3 (je fais expres de ne pas prendre le nom de l'onglet car je voudrai les renommer par la suite.
  • apparation d'une boite de dialogue qui demanderait la date de début du tournoi et la date de fin
  • calcul de la durée du tournoi
  • création des onglets pour chaque jour du tournoi et les renommant [datedujour]prog et [datedujour]res
  • renommer les feuil2 et feuil3 en mettant la date de début du tournoi

j'ai commencé à regarder les cours VBA sur le site mais rien que la sélection des onglets ne fonctionne pas

si quelqu'un peut m'aiguiller.

Merci d'avance.

Bonsoir,

A tester :

Sub ajout_onglet()
    Dim ddT As Date, dfT As Date, dT, choixU$, shp As Shape
    Dim numonglet As Integer
    Do
        choixU = InputBox("Indiquer la date de début du tournoi.", "Dates Tournoi")
        If choixU = "" Then Exit Sub
        If IsDate(choixU) Then
            ddT = DateValue(choixU): Exit Do
        Else
            MsgBox "Saisir date sous la forme 'jj/mm/aaaa'", vbInformation, "Erreur date"
        End If
    Loop
    Do
        choixU = InputBox("Indiquer la date de fin du tournoi.", "Dates Tournoi")
        If choixU = "" Then Exit Sub
        If IsDate(choixU) Then
            dfT = DateValue(choixU)
            If dfT > ddT Then
                Exit Do
            Else
                MsgBox "Date incorrecte (antérieure à la date de début).", vbInformation, "Erreur date"
            End If
        Else
            MsgBox "Saisir date sous la forme 'jj/mm/aaaa'", vbInformation, "Erreur date"
        End If
    Loop
    Application.ScreenUpdating = False
    For dT = ddT To dfT
        Feuil2.Copy after:=Worksheets(Worksheets.Count)
        With ActiveSheet
            .Name = Format(dT, "dmmm") & "prog"
            .Range("A1") = dT
            For Each shp In .Shapes
                shp.Delete
            Next shp
        End With
        Feuil3.Copy after:=Worksheets(Worksheets.Count)
        With ActiveSheet
            .Name = Format(dT, "dmmm") & "res"
            .Range("B2") = dT
            For Each shp In .Shapes
                shp.Delete
            Next shp
        End With
    Next dT
End Sub

Cordialement.

wahou!!

impressionnant, je vais analyser le code pour le comprendre.

2 petites choses, les 2 onglets de base (14juin) restent là, je vais regarder pour les supprimer.

et un truc que je ne pige pas, le bouton que j'ai mis pour choisir le jour ne se copie pas. est ce normal?

en tout cas, un grand MERCI à toi.

Tes onglets 14juin servent de modèles, c'est eux que l'on copie.

Je supprime les boutons sur les nouvelles feuilles, il ne serait pas rationnel de lancer la macro à partir d'elles.

Les feuilles 14juin sont donc à conserver... Le mieux serait sans doute qu'elles soient masquées et utilisées exclusivement comme modèle, et que le bouton soit ailleurs.

C'est à voir selon ce que tu veux faire exactement... l'adaptation pourra alors être faite.

Cordialement.

Ok pour les onglet 14juin, ne peut on pas les sélectionner avec feuil2 feuil3 (c'est ainsi qu'ils sont nommée dans le visualiseur d'objet du VBE).

est ce la ligne de commande

shp.delet

?

Pour le bouton, ce n'est en effet pas le bouton de création des pages que je souhaite dupliquer mais le bouton du choix de la date (en haut à gauche de la page 14 juin prog, et je le voudrai aussi sur les pages résultats.

Ceci pour pouvoir réaliser une programmation à long terme sans devoir chercher dans les onglets via la partie basse d'excel.

Bonjour,

Les onglets 14juin (que l'on peut baptiser autrement) peuvent être masqués pour n'être utilisés que comme modèle pour générer les onglets tournoi.

[NB- 14juinprog est le nom de la feuille figurant sur l'onglet, Feuil2 son nom de code. Les deux peuvent être utilisés pour accéder à la feuille, mais la syntaxe diffère : Worksheets("14juinprog").Range("A1") d'un côté ; Feuil2.Range("A1") de l'autre...]

Si tu bâtis une procédure pour créer à l'avance un onglet par jour de tournoi, il paraît contradictoire de vouloir changer les dates ensuite, puisque tu as préalablement généré tous les onglets pour toutes les dates nécessaires !

shp.Delete est en effet la commande supprimant les boutons...

Cordialement.

Bonjour,

l'objectif n'est pas de changer les dates mais de naviguer entre les onglets créés.

Le bouton s'appelle "A quel jour veux tu programmer?" et permet de choisir via un menu déroulant le'onglet à activer.

Merci.

génial!

un grand merci.

Bonsoir, alors, en fait, je viens de me rendre compte d'un problème.

la feuille resultat et liée à la feuille prog.

Actuellement, comme la macro les copie l'une apres l'autre, il oublie de garder la laison entre les 2 selon la date.

Il faudrait que les 2 feuilles se copient en même temps (comme si on avait sélectionner les 2 ongles (à l'aide de CTRL et effectuer une copie.)

Bonjour,

Cela ne changera rien. Il te faut modifier les formules, en introduisant dans ta feuille une cellule renvoyant le nom de feuille.

Par exemple tu mets en B3 :

="'"&TEXTE(B2;"jjmmm")&"prog'!"

tu auras en B3 le nom de feuille utilisable dans une formule avec INDIRECT...

Cordialement.

Ok, il ne me reste donc plus qu'a remodifier toutes mes formules

Du coup, vu que je dois tout modifier, serait il possbile de faire en sorte que la macro de copie fonctionne sur 2 classeurs distincts, à savoirs, 1 classeur prog et 1 classeur resultats dans lesquels, il y aurait les mêmes ongles (juste 1 onglet par date) et que du coup les modifications dans le classeur prog seraient répercutées dans le classeur résultats.

Ceci afin de pouvoir utilise le multiécran sur le pc, à savoir un écran résultats et 1 écran programme.

Merci.

Tu as les éléments pour procéder avec deux classeurs au lieu d'un... Faire la partie concernant chacun sur chacun d'eux...

Cordialement.

Rechercher des sujets similaires à "macro copie onglet"