Manip sur Onglets

Bonjour à tous,

Je sèche sur un petit problème de création d'onglets. J'explique ici la problématique : je veux créer un nombre d'onglets relatifs au nombre de mois séparant 2 dates dans la même année. Toutefois si je change ces dates je veux pouvoir ajouter les nouveaux onglets à la suite ou supprimer les onglets crées qui ne seraient plus dans la plage. J'ai bien essayé de m'inspirer de quelques exemples notamment en créant un contrôle via une fonction "feuilleexiste" et en la couplant avec un array mais je n'arrive pas au résultat que j'attends. Avec mon fichier j'obtiens une erreur de type "ce nom existe déjà" etc... et le programme s'arrête. De plus je ne sais pas comment adapter mon programme quand les dates sont à cheval entre deux années différentes.

Je joins mon petit fichier test .... si quelqu'un avait une petite idée (sachant que je n'ai que les bases de programmation en VBA)

Aide bienvenue,

Merci

7test-onglets.xlsm (29.98 Ko)

Bonjour,

en voulant te simplifier les choses avec le n° de mois tu te les compliques.

Travaille avec les dates en H8:H9.

Comme une fonction de test d'existence de feuille est basée sur une gestion d'erreur, je l'ai mise directement dans la proc.

Pour gérer sur 2 ans il faut mettre l'année également dans le nom de la feuille.

Supprime la macro de la feuille modèle qui met le mois en D10, inclus aussi :

Sub Crepage()
    Dim datDeb As Date, DatFin As Date, test As Long
    With Worksheets("com")
        datDeb = .[H8]
        DatFin = .[H9]
        Do
            test = 0
            On Error Resume Next
            test = Sheets(Format(datDeb, "mmmm yyyy")).Index
            On Error GoTo 0
            If test = 0 Then
                Worksheets("Conta_Model").Copy after:=Worksheets(Worksheets.Count)
                With ActiveSheet
                    .Name = Format(datDeb, "mmmm yyyy")
                    .[D10] = Format(datDeb, "mmmm")
                End With
            End If
            datDeb = DateAdd("m", 1, datDeb)
        Loop Until Year(datDeb) * 100 + Month(datDeb) > Year(DatFin) * 100 + Month(DatFin)
        .Activate
    End With
End Sub

eric

Salut Eric !

Comme tu as déjà fait tout ce que j'avais commencé, j'arrête donc !

J'ai bien fait de rafraîchir avant de poursuivre !

Merciiiiiiii Eric, je ne m'attendais pas à une réponse aussi rapide ! Ton code répond exactement à mes attentes.

Super efficace et très sympa à toi.

De rien

Désolé MFerrand

BOnjour Eric ! Pas de raison...

Rechercher des sujets similaires à "manip onglets"