• Initiateur de la discussion Initiateur de la discussion julie999
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

julie999

XLDnaute Occasionnel
bonjour
je cherche a creé une petite macro a l'ouverture d'un fichier:
la cellule a1 de la feuille 1contient la date systeme sous forme sam 06 aout 2011

est il possible qu'a chaque 01 du mois (exemple pour le 01 aout 2011):faire une copie de la feuille "modele1" et la renomée avec la date contenue dans la cellule a1 de la feuille 1 sous la forme aout 2011

et il possible qu'a chaque 01 janvier 'exemple pour le 1er janvier 2012):faire une copie de la feuille "recap" et la renomée avec la date contenue dans la cellule a1 de la feuille 1 sous la forme recap 2012

le plus difficile
mettre une securite a l'ouverture du fichier si la feuille est deja crée ne rien faire


merci julie
 
Re : macro Workbook_Open

Private Sub Workbook_Open()
Dim NFeuil As String, NFeuilAn As String, Mois As Boolean, Annee As Boolean, NOFeuil As String
NFeuil = Format(Now, "mmmm yyyy") 'exemple 1er aout=août 2012
NOFeuil = Format(Now - 15, "mmmm yyyy") 'exemple 1er aout=juillet 2012
NFeuilAn = "recap " & Split(NFeuil)(1)
Mois = True: Annee = True
For t = 1 To ActiveWorkbook.Sheets.Count
If Sheets(t).Name = NFeuil Then Mois = False
If Sheets(t).Name = NFeuilAn Then Annee = False
Next t
If Mois And Day(Now) = 1 Then Sheets(NOFeuil).Copy After:=ActiveWorkbook.Sheets.Count: ActiveSheet.Name = NFeuil: [K3] = Int(Now)
If Annee And Day(Now) = 1 And Month(Now) = 1 Then Sheets("Recap").Copy After:=ActiveWorkbook.Sheets.Count: ActiveSheet.Name = NFeuilAn: [K3] = Int(Now)
End Sub
toujours ce morceau en jaune ??
 
Re : macro Workbook_Open

oui effectivement si dimanche ou jour ferie sa posera un probleme
en faite la date en k3 est la date systeme je cherché juste a faire si a l'ouverture du classeur la date systeme est par exemple aout 2011 verifier si il y a une feuille nommé aout 2011 sinon la crée
pour la crée copier la feuille du mois precedent en l'occurance juillet 2011 et la renomée avec la date en k3 soit aout 2011
idem pour la feuille recap par rapport a l'année cette fois ci
vois tu ce que je veux dire

ou a tu plus simple et plus claire

en tous cas merci de m'aider
julie
 
Re : macro Workbook_Open

Oui je vois, déjà il faudrait renommer tes feuilles genre "juillet2012" devenant "juillet 2012" (rajouter l'espace) pour être en accord avec les Format(Now, "mmmm yyyy"). Ensuite j'ai une autre souci d'échec de la copy, je cherche... 🙂. Pour le reste il suffira juste de retirer le test sur le 1er du mois, lle test sera systématique. Cordialement

KD
 
Re : macro Workbook_Open

oui je te renvoie le fichier dans le classeur 2 feuilles
le model pour recap annuel
le model pour recap mens
comme ça a l'ouverture du classeur si la date système est 07 août(ou 1er août ou 15 août peux importe je pense) il ajoutera une feuille nommé recap mens juillet 2011 et une autre pour recap annuel 2011
qu'en pense tu tu sera plus clair
comme ça pour crée les feuilles la copie se fait sur un formulaire vierge ça évite d'effacer les données
 

Pièces jointes

Re : macro Workbook_Open

Re,

Il y a peut-être un souci avec tes classeurs. A chaque demande de copy de feuille un nouveau classeur se crée avec la création de la feuille juillet d'après recap mens.
La feuille juillet se créée aussi dans le bon classeur mais contient le code vba de la sub !! J'ai essayé avec un classeur vierge et ça me fait la même.
Soit il y a quelque chose qui m'échappe soit le classeur m'as transmis une option bizarre.
Avec une méthode de copie différente j'arrive à quelque chose. Je te transmet un classeur exemple avec juste une feuille "recap mens" avec des données bidon. A l'ouverture tu devrais donc avoir 2 feuilles, la juillet 2011 se créant et devant être identique à l'autre. Dis moi déjà si cette partie là est ok, on verra après pour la recap annuelle. Cordialement

KD
 
Dernière édition:
Re : macro Workbook_Open

oui jusque la ca va
le feuille juillet 2011 se crée a l'ouverture (bizard date systeme 7 aout pourquoi la feuille se nomme juillet 2011 peut etre a cause de now-15)
par contre sur la nouvelle feuille crée il faut que le nom de l'onglet est egal a la celulle k3

julie
 
Re : macro Workbook_Open

Heu.. Le nom de l'onglet c'est le nom de la feuille. Ca c'est bon ? Tu veux dire la cellule K3 ?

Ce code devrait (si tout va bien) faire ce que tu veux, les feuilles modèles étant 'recap mens' et 'recap annuel'. J'ai corrigé le coup de juillet au lieu d'aout.
 
Dernière édition:
Re : macro Workbook_Open

Re,

La même chose en plus compact et avec un format correct pour les cellules K3:

Code:
Option Explicit

Private Sub Workbook_Open()
Dim b As Boolean, s$(1 To 4), i%, j%
Application.ScreenUpdating = False
s(1) = Format(Now, "mmmm yyyy"): s(2) = "recap " & Format(Now, "yyyy"): s(3) = "recap mens": s(4) = "recap annuel"
For i = 1 To 2
    b = True
    For j = 1 To Worksheets.Count
        If Sheets(j).Name = s(i) Then b = False
    Next j
    If b Then
        Sheets(s(i + 2)).Activate: Cells.Copy: Sheets.Add: ActiveSheet.Paste
        ActiveSheet.Name = s(i): Cells(3, 11) = IIf(i = 1, Date - Day(Now) + 1, "01/01/" & Year(Now))
    End If
Next i
Application.CutCopyMode = False: Application.ScreenUpdating = True
End Sub

Cordialement

KD

Edit : Attention je viens de voir que dans le fichier transmis le nom de la feuille 'recap annuel ' a un espace à la fin, à corriger.
 

Pièces jointes

Dernière édition:
Re : macro Workbook_Open

oui ca fonctionne bien comme je voulais sur le fichier test
quand je met ce code dans mon fichier(plusieur feuilles) ca bloque sur :
Sheets(s(i + 2)).Activate

peut etre faut il mettre le nom des feuilles non

julie
 
Re : macro Workbook_Open

j'utilise cette macro pour sauvegarder le fichier avec la date systeme sous le format indiquée
comment faire pour que la sauvegarde prend le meme nom de fichier mais au lieu de prendre la date systeme ca prend la date qui se trouve en cellule a1 de la feuille "LOAD SLIP PHIL"

voici la macro
Sheets("LOAD SLIP PHIL").Select

Sheets("LOAD SLIP PHIL").Copy
ChDir "C:\Archives photobox"
ActiveSheet.Unprotect "photobox"
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
Range("E1").Select
Range("B1😀1").Select
ActiveSheet.Shapes("Button 1").Select
Selection.Delete
ActiveSheet.Shapes("Button 2").Select
Selection.Delete
ActiveSheet.Shapes("Button 3").Select
Selection.Delete
Range("b1").Select
Selection.Copy
Range("e1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Range("b1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("e1").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveSheet.Protect "photobox"
ActiveWorkbook.SaveAs chemin & "Photobox Cross docking du " & Format(Date, "d\-mm\-yyyy") & ".xls"

ActiveWindow.Close
End Sub
 
Re : macro Workbook_Open

j'utilise cette macro pour sauvegarder le fichier avec la date systeme sous le format indiquée
comment faire pour que la sauvegarde prend le meme nom de fichier mais au lieu de prendre la date systeme ca prend la date qui se trouve en cellule a1 de la feuille "LOAD SLIP PHIL"

Re,

Modifier l'avant dernière ligne :
Code:
ActiveWorkbook.SaveAs chemin & "Photobox Cross docking du " & _
    Format(Worksheets("LOAD SLIP PHIL").Range("A1"), "d\-mm\-yyyy") & ".xls"

Cordialement

KD
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
653
Réponses
3
Affichages
656
Réponses
12
Affichages
1 K
Retour