Création de feuille automatique dans un nouveau classeur.

dudux2

XLDnaute Nouveau
Bonjour,

J'ai un petit projet sur la réalisation de feuille d'heure automatique.

J'aimerais créer depuis un classeur modèle des feuilles d'heures toutes les semaines, chacune nommées respectivement 1,2,3,4,...,52,53.

J'ai un formulaire "Création" de feuille d'heure comportant 3 champs: Nom, prénom et Année.

1) Mon premier besoin serait de calculer le nombre de semaine dans l'année qui lui est définit dans le formulaire de "Création" du classeur de Feuille d'heure.

2) Ensuite, je voudrais créer un classeur nommé: "Feuille d'heure Prénom Nom Année.xls" (en fonction des champs saisies dans le formulaire "Création".

3)J'aimerais ensuite créer les feuilles d'heure nommées respectivement 1,2,3,4,...,52,53 en fonction de la feuille nommé modèle. ( voir "1)" )

4)J'aurais également besoin de recopier les champs noms et les mises en forme conditionnels du modèle.

5) Coloration des onglets de la même couleurs

6) Création de la feuille d'heure de la dernière semaine de décembre de l'année précédente nommé ex: 52-2010.

Je vous présente le début de ma réalisation un peu chaotique, d'ailleurs...



1) Mon premier besoin serait de calculer le nombre de semaine dans l'année qui lui est définit dans le formulaire de "Création" du classeur de Feuille d'heure.

Code:
Sub CreationFeuilleHeureAutomatique_Clic()
'
' CreationFeuilleHeureAutomatique_Clic Macro
'
    'Création de la feuille d'heure de la dernière semaine de décembre de l'année précédente
    'Création de la feuille d'heure "le trop plein"
    'Création de la feuille "Récapitulatif Annuel"
    'Création de la feuille "Identité"
    'Création de la feuille "Calendrier" (caché)
    'Colorer les feuilles par groupe
    'Copie des mises en forme conditionnelle
    'Copie des noms des champs (Gestion des noms)
    
    
    'var
    Dim nbSemaine
    Dim nom
    Dim prenom
    
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''' Création des feuilles d'heures en fonction du nombre de semaine dans l'année ''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    'Recherche du nombre de semaine dans l'année demandée
    'nbSemaine = NO.SEMAINE(2011)
    nbSemaine = NO.SEMAINE("31/12/" & Sheets("Identité").Range(D8).Value)
    'nbSemaine = 10
    
    'Boucle pour créer des feuilles en fonction du nombre de semaine
    For i = 1 To nbSemaine
    Valeur = ""
    For j = 1 To i
    Valeur = CStr(j)
    Next j
    nomFeuille = Valeur
    Next i
    
    
    'Création nouveau classeur et on l'ouvre
    Workbooks.Add
    Sheets("Feuil1").Select
    'On renomme le classeur "Feuille d'heure Prénom-Nom-Année.xls"
    ActiveWorkbook.Name = "Feuille d'heure " & "prenom" & "nom"
    'ActiveWorkbook.Name = StringConcat("-", "Feuille d'heure", "prenom", "nom")
    'On enregistre le classeur après sa création
    ThisWorkbook.Saved = True
    
    'On sélectionne la bonne feuille
    Sheets("Feuil1").Select
    'On renomme la feuille
    Sheets("Feuil1").Name = "nomFeuille"
    'On nomme la nouvelle feuille
End Sub
 

Pièces jointes

  • Matrice feuille d'heure Divatec V1.xlsm
    111.8 KB · Affichages: 101
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Création de feuille automatique dans un nouveau classeur.

Bonjour Dudux2

Voici le code que je te propose
Code:
Option Explicit
Sub Exécuter()
  Call CréationClasseur
  Call CréationFeuillesHeures
End Sub
Sub CréationClasseur()
  Dim VPath As String, VFic As String
  ' Définir le chemin d'enregistrement
  VPath = ThisWorkbook.Path
  ' Sur la feuille Administration, récupérer les bonnes valeurs
  With Sheets("Administration")
    ' Créer le nom du nouveau classeur
    VFic = "Feuille d'heure " & LCase(.Range("D10")) & " " & .Range("D8") & " " & .Range("D12") & ".xls"
  End With
  ' Enregistrer ce nouveau classeur
  ThisWorkbook.SaveAs VPath & "\" & VFic
End Sub
Sub CréationFeuillesHeures()
  Dim Ind As Integer
  ' Arrêter le calcul automatique avant la création
  Application.Calculation = xlCalculationManual
  For Ind = 0 To 53
    Sheets("modèle").Copy after:=Sheets(Sheets.Count)
    With ActiveSheet
      .Name = Format(Ind, "00")
      .Range("C6").Value = Ind
    End With
  Next Ind
  ' Remettre le calcul automatique
  Application.Calculation = xlCalculationAutomatic
End Sub

En revanche j'espère que comme moi tu as un processeur 8 coeurs cadencés à 3,5 Ghz ...
sinon tu auras le temps d'aller dormir lors du recalcul

A+
 

dudux2

XLDnaute Nouveau
Re : Création de feuille automatique dans un nouveau classeur.

1) Dans ma feuille "modèle" dans le gestionnaire des noms, J'ai DATA1 qui a pour étendu "Classeur". Lorsque l'on créer les nouvelles feuilles a partir du modèle, le nom est bien créer mais pas dans l'étendu "Classeur" mais dans l'étandu "modèle. Il y a t'il une option a rajouter?

Code:
Sub CréationFeuillesHeuresHebdomadaire()

  Dim Ind As Integer
  
  ' Arrêter le calcul automatique avant la création
  Application.Calculation = xlCalculationManual
  For Ind = 1 To 10
    Sheets("modèle").Copy after:=Sheets(Sheets.Count)
    With ActiveSheet
      .Name = Format(Ind, "0")
      .Range("C6").Value = Ind
    End With
  Next Ind
  ' Remettre le calcul automatique
  Application.Calculation = xlCalculationAutomatic
End Sub
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Création de feuille automatique dans un nouveau classeur.

Salut Dudux2

Je t'avoue que je n'ai pas compris a quoi faisait référence tes noms "DATAx"
puisque dans le gestionnaire de noms tu n'as que des #REF!

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 323
Membres
102 862
dernier inscrit
Emma35400