Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fixer date du jour lors de l’exécution d’une macro

  • Initiateur de la discussion NikoZozo
  • Date de début
N

NikoZozo

Guest
Bonsoir,

Voila j’ai crée une macro dans un fichier Excel de contrôle quotidien ci-joint.
Cette macro marche parfaitement, enfin PRESQUE !!!
Celle-ci me duplique bien ma dernière feuille avec le jour dans l’onglet, placement en dernière position, effacement de certains champs + la date complète dans une cellule et tout et tout …

Mais mon soucie est que pour l’insertion de la date du jour complète avec ma macro dans la cellule B3. Celle-ci fait appelle à cette fonction =AUJOURDHUI() ce qui est très bien pour la création de la feuille du jour, mais pas pour les autres feuilles précédentes de mon classeur, car celles-ci se mettent automatiquement à jour en récupérant cette date « du jour ». Alors qu’il faudrait que celles-ci restent figés à la date d’exécution de la macro et non quelle reprenne par la suite la date du jour.

Merci d’avance pour votre aide, si quelqu’un pouvait modifier ma macro pour pallier ce problème, je serais comblé !!!

Merci d’avance et merci également aux personnes ayant créé ce forum, pour tous les astuces et code que l’on peut y trouver.

Voici le code de ma macro « AjoutFeuille » :

Sub AjoutFeuille()
'
' AjoutFeuille Macro
' Macro enregistrée
'

'
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
ActiveWindow.SmallScroll ToRight:=1
Range('C7:F39').Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-18
ActiveWindow.SmallScroll ToRight:=-1
Range('A1').Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=33
Range('C44:F52').Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=18
Range('C57:F71').Select
ActiveWindow.SmallScroll ToRight:=2
Selection.ClearContents
ActiveWindow.SmallScroll ToRight:=-2
ActiveWindow.SmallScroll Down:=18
Range('C76:F78').Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=9
Range('C83:F85').Select
Selection.ClearContents
Range('C88:F89').Select
Selection.ClearContents
Range('C92:F92').Select
Selection.ClearContents
Range('C93:F93').Select
Selection.ClearContents
Range('C95:F95').Select
Selection.ClearContents
Range('C96:F96').Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=12
Range('C98:F100').Select
Selection.ClearContents
Range('C103:F105').Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=6
Range('C108:F110').Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=9
Range('C113:F115').Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=9
Range('C120:F120').Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=9
ActiveWindow.SmallScroll Down:=-132
Range('B3').Select
Selection.ClearContents
Range('B3').Select
ActiveCell.FormulaR1C1 = '=TODAY()'
Range('B3').Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Selection.Font.Bold = True
With Selection.Font
.Name = 'Arial'
.Size = 16
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
With Selection.Font
.Name = 'Arial'
.Size = 14
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
Selection.NumberFormat = 'dddd-d-mmm-yyyy'
Range('B3').Select
ActiveCell.FormulaR1C1 = '=TODAY()'
Range('B4').Select
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.Name = Day(Date)
End Sub
[file name=controledumois.zip size=14990]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/controledumois.zip[/file]

Message édité par: Pascal76, à: 29/03/2006 07:53
 

Pièces jointes

  • controledumois.zip
    14.6 KB · Affichages: 20

Climaudo

XLDnaute Occasionnel
Re:Fixer date du jour lors de l’exécution d’une ma

Bonsoir NikoZozo,

Tu peux remplacer ton ActiveCell.FormulaR1C1='=Today()' par ActiveCell.FormulaR1C1 = Date

Bonne soirée

edition : oups, pas rafraichi, bonjour Staple

Message édité par: climaudo, à: 28/03/2006 22:59
 

Staple1600

XLDnaute Barbatruc
Re:Fixer date du jour lors de l’exécution d’une ma

Re

A tester
(j'ai fait un peu le ménage)
Sub AjoutFeuille()

Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)

Range('C7:F39').ClearContents
Range('A1').ClearContents
Range('C44:F52').ClearContents
Range('C57:F71').ClearContents
Range('C76:F78').ClearContents
Range('C83:F85').ClearContents
Range('C88:F89').ClearContents
Range('C92:F92').ClearContents
Range('C93:F93').ClearContents
Range('C95:F95').ClearContents
Range('C96:F96').ClearContents
Range('C98:F100').ClearContents
Range('C103:F105').ClearContents
Range('C108:F110').ClearContents
Range('C113:F115').ClearContents
Range('C120:F120').ClearContents
Range('B3').Value = Date
Range('B3').Select
With Selection.Font
.Name = 'Arial'
.Size = 14
.ColorIndex = 3
End With
Selection.NumberFormat = 'dddd-d-mmm-yyyy'
Range('B3').Select
ActiveCell.Value = Date
Range('B4').Select
ActiveWindow.SmallScroll Down:=-3
ActiveSheet.Name = Day(Date)
End Sub
 
N

NikoZozo

Guest
Re:Fixer date du jour lors de l’exécution d’une ma

Ok, merci beaucoup à tous les deux pour vos réponses ultra rapides !!!

Je viens de faire la modifs
 

Staple1600

XLDnaute Barbatruc
Re:Fixer date du jour lors de l’exécution d’une ma

Re
Un dernier petit ménage
Sub AjoutFeuilleII()
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
Range('C7:F39').ClearContents
Range('A1').ClearContents
Range('C44:F52').ClearContents
Range('C57:F71').ClearContents
Range('C76:F78').ClearContents
Range('C83:F85').ClearContents
Range('C88:F89').ClearContents
Range('C92:F92').ClearContents
Range('C93:F93').ClearContents
Range('C95:F95').ClearContents
Range('C96:F96').ClearContents
Range('C98:F100').ClearContents
Range('C103:F105').ClearContents
Range('C108:F110').ClearContents
Range('C113:F115').ClearContents
Range('C120:F120').ClearContents
Range('B3').Value = Date
Range('B3').Select
With Selection
.Font.Name = 'Arial'
.Font.Size = 14
.Font.ColorIndex = 3
.NumberFormat = 'dddd-d-mmm-yyyy'
End With
ActiveSheet.Name = Day(Date)
End Sub
 
N

NikoZozo

Guest
Re:Fixer date du jour lors de l’exécution d’une ma

Merci Staple1600 pour cette superbe optimisation. Je n’en reviens pas de voir à quel degré mon script peut être simplifié. :woohoo: :lol:
 

myDearFriend!

XLDnaute Barbatruc
Re:Fixer date du jour lors de l’exécution d’une ma

Bonsoir NikoZozo, Staple1600, Climaudo,

Une proposition de plus...
Comme tu recopies à chaque fois la feuille, j'en ai déduit que le reformatage de la cellule B3 (police, format de nombre...) devenait inutile.

Par ailleurs, comme notre ami Staple1600 commençait à le faire, les 'Select' de cellules et plages sont inutiles et même déconseillés avec VBA, que ce soit pour modifier le contenu des objets Range ou même pour modifier leur format.

Dans ton code, je pense qu'il conviendra également de prévoir la gestion de l'erreur générée si l'utilisateur clique 2 fois le même jour sur le bouton 'Ajout Feuille du jour'. Si la feuille 'Day(Date)' existe déjà...

Cordialement,

Message édité par: myDearFriend!, à: 28/03/2006 23:25
 
N

NikoZozo

Guest
Re:Fixer date du jour lors de l’exécution d’une ma

Merci à tous et merci à toi myDearFriend!


Ca c'est de l'optimisation diabolique :woohoo: qui marche nickel chrome !!! thanks aussi pour les explications sur selects en VBA

myDearFriend! quand tu parle de prévoir la gestion de l'erreur générée si l'utilisateur clique 2 fois le même jour sur le bouton \\'Ajout Feuille du jour\\'

Premièrement je trouve que cela est une très très bonne idée
Mais deuxièmement comment faire cela ? quelles sont les différentes possibilitées ? et surtout comment le verais tu de ton côté myDearFriend! (car tu me semble pleins de bonnes idée à une heure si tardive )?
Serait t'il possible d'afficher un message dans une boite de dialogue indiquant que celle-ci a déjà été lancé et empechant par consequent, la creation d'une nouvelle feuille ?
(Quoi qu'il pourrait etre sympa de pouvoir demander la creation d'une autre feuille pour un evenement spécial par exemple le week-end, mais il faudrait alors que la macro affiche une boite de dialogue dans laquel on puisse rentrer manuelement le jour de la feuille à ajouter)==> la je pense que deja ca doit se compliquer serieusement

Merci encore à tous et bonne nuit
 

myDearFriend!

XLDnaute Barbatruc
Re:Fixer date du jour lors de l’exécution d’une ma

Re NikoZozo,

Pour répondre à ta question :
Concernant ta deuxième suggestion :
Cordialement,
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:Fixer date du jour lors de l’exécution d’une ma

Bonjour à tous

Une version un peu plus 'bétonnée' niveau gestion d'erreur que celle de mon copain Didier, certe plus longue, d'autant plus qu'écrite avec une seule main, mais justement c'est bien dans l'intention de ne pas perdre... la main !! arf facile celle-là lol



Bonne journée et appétit
[ol]@+Thierry[/ol]

Message édité par: _Thierry, à: 29/03/2006 11:24
 
N

NikoZozo

Guest
Re:Fixer date du jour lors de l’exécution d’une ma

Un grand merci à tous les gars,
c'est super ! :woohoo: mon classeur Excel est magique grace à vous :woohoo: :lol:
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…