VbA Xl : Creation onglet par date

Résolu
7808622H Messages postés 331 Statut Membre -  
7808622H Messages postés 331 Statut Membre -
Bonjour

Je cherche une petite macro pour générer des onglets dans le même classeur excel en fonction des jours de la semaine

https://www.cjoint.com/?AGCsHqsAWCU

J'ai une page Données, dans laquelle j'indiquerai les dates ( les jours restant fixes, j'adapterai en fontion du jour de debut du mois pour caler les dates)

Il faudrait que la macro créée un onglet par date, pour les lundis, mardi, mercredis, jeudis, vendredis.

Seuls ces onglets seraient présents ( les onglets des samedis et dimanches ne doivent pas apparaitre)

Dans chaque onglet créés, la feuille Type serait collée.

Quelqu'un aurait il un petit code qui pourrait me faciliter la vie

Merci d'avance a ceux qui pourront se pencher sur ce petit problème

Attention je sais que le code Vba peut avoir des probleme de compatibilité avec Excel 2002 ( c est le logiciel que nous utilisons)

Bonne journée

<config>Windows xp / Excel 2002>

--
CED

4 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    Voici ta demande :

    https://www.cjoint.com/?0GDkmDZhjqg

    pour que ca fonctionne correctement, dans ta feuille données, mets le premier jour du mois voulu.
    Ta feuille données fonctionne avec des formules.

    Pour créer les onglets, clique sur le bouton.
    0
  2. 7808622H Messages postés 331 Statut Membre 4
     
    Bonjour Mélanie1324

    Génial pour le début

    juste un souci lorsque je tente de mettre le 1er jour du mois 01/08/2011 par exemple je me retrouve avec des " Créer " en colonne C qui ne correspondant pas a ce que je souhaite. en effet au lieu de me créer les jour du Lundi au Vendredi en onglet il me créé du Dimanche au Jeudi

    Petit detail technique supplémentaire si c'est possible, pense tu qu'il est possible de mettre les onglets dans le bon ordre , chronologique du 1 au 30/31 et non pas l'inverse ?

    Je te remercie en tout cas pour ta rapidité, c'est sympa de te pencher sur mon probleme
    0
    1. 7808622H Messages postés 331 Statut Membre 4
       
      PS j'avais oublié , voila le rendu du fichier lorsque je l'utilise brut tel que tu me l'as envoyé

      https://www.cjoint.com/?AGDtsUPSu6X

      par exemple le 5 Aout qui est un vendredi n'existe pas
      0
  3. 7808622H Messages postés 331 Statut Membre 4
     
    Bonjour

    bon j'ai palié au probleme des jours qui ne correspondaient pas en passant par une formule SI

    =SI(A4=2;"Créer";SI(A4=3;"Créer";SI(A4=4;"Créer";SI(A4=5;"Créer";SI(A4=6;"Créer";""))))) en remplacement de la formule de la colonne C

    Il ne me reste plus que le classement des onglet dans le code qu'il me faudrait en ordre chronologique de 1 a 30/31 au lieu de l'inverse

    si au vu du code du fichier qui est ci dessous, quelqu'un peut m'aider pour reclasser ces onglets

    https://www.cjoint.com/?AGEoyGRT1qD

    Merci d'avance

    Rappel le fichier fnctionnera sur Excel 2002 donc certains codes ne seront pas valable ( encienne version de Vba)

    Je testerai deja le code présent lundi au bureau sur ma version " dinosore" poru voir si cela marche
    0
  4. 7808622H Messages postés 331 Statut Membre 4
     
    Et voilou j'ai trouvé en creusant dans le forum

    J'ai repris le code de Mélanie

    en l'appelant creation pour la partie creation
    et ajouter une partie tri, que j'ai trouvé sur le forum

    Et voilou si ca peut resservir a quelqu'un pour la suite

    'Lancement par bouton des deux actions Creation et Tri des onglet par ordre croissant
    Private Sub CommandButton1_Click()

    Call Creation
    Call TrierOnglets

    End Sub

    -------------------------------------------
    ' Creation des onglets en fonction de la date
    Sub Creation()
    i = 4
    Do While Sheets("données").Cells(i, 1) <> ""
    If Sheets("données").Cells(i, 3) <> "" Then
    Sheets("Feuille Type").Copy After:=Sheets(2)
    ActiveSheet.Name = Left(Sheets("données").Cells(i, 2), 2)
    End If
    i = i + 1
    Loop

    End Sub

    ----------------------------------------------------
    'Tri des onglet par ordre croissant au lieu de l ordre decroissant fait pas le codre CREATIION
    Sub TrierOnglets()

    Dim Boucle As Integer, Compteur As Integer

    For Boucle = 1 To Sheets.Count
    If Sheets(Boucle).Visible = True Then
    For Compteur = 1 To (Boucle - 1)
    If Sheets(Compteur).Visible = True Then
    If (UCase(Sheets(Boucle).Name) < UCase(Sheets(Compteur).Name)) Then
    Sheets(Boucle).Move before:=Sheets(Compteur)
    Exit For
    End If
    End If
    Next Compteur
    End If
    Next Boucle
    End Sub

    Merci beaucoup a Mélanie et a ceux qui aurait éventuellement tenté de jeter un oeil,
    bon W E et ou vacances pour ceux qui y sont

    0
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
       
      Salut le forum

      Pour éviter une macro de tri de feuilles

      Remplace
      Sheets("Feuille Type").Copy After:=Sheets(2)
      par
      Sheets("Feuille Type").Copy After:=Sheets(Sheets.Count)

      Mytå
      0
    2. 7808622H Messages postés 331 Statut Membre 4
       
      cool merci
      0