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

XL 2016 modifier code pour tache ennuyeuse

fenec

XLDnaute Impliqué
Bonjour le forum,

Il y 8 ans Victor21 m’avait aidé pour une tache ennuyeuse qui consistais à imprimer une même feuille mais avec la date de chaque jour du mois
Exemple :
Une feuille au 01-03-2012
Une feuille au 02-03-2012
Une feuille au 03-03-2012
Etc…
Et ce tous les mois de l’année

Aujourd’hui je souhaiterais modifier ce code afin de ne plus imprimer 31 feuilles par mois
Je voudrais les recopier cette fois et les renommer, pour la copie j’ai supprimé l’impression et mis la copie à la place mais ou je coince c’est pour renommer les feuilles qui auraient comme nom la date
Vous joint le code

VB:
Private Sub CommandButton1_Click()
Dim i As Date
 Dim j As Date
 Dim x As Long
 
i = InputBox("Date de début")
 j = InputBox("Date de fin")
 
For x = i To j
 Range("A2").Value = CDate(x)
 Worksheets("Modèle").Copy after:=Sheets(Worksheets.Count)
 'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
 Next x
End Sub

Cordialement,
Philippe.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Si j'ai bien compris
VB:
Private Sub CommandButton1_Click()
Dim i&, j&, x&
i = CLng(CDate(InputBox("Date de début", "Choix", Date)))
j = CLng(CDate(InputBox("Date de fin")))
Application.ScreenUpdating = False
For x = i To j
Worksheets("Modèle").Copy after:=Sheets(Worksheets.Count)
ActiveSheet.Range("A2").Value = CDate(x)
ActiveSheet.Name = Format(CDate(x), "dd-mm-yyyy")
Next x
End Sub
 

fenec

XLDnaute Impliqué
Bonsoir le forum,Staple1600
Viens de tester et tout fonctionne comme je souhaite, je suis même parvenu à modifier le nom du fichier lors de la création d'onglet en mettant ceci:

VB:
ActiveSheet.Name = "Planning du " & Format(CDate(x), " dd-mm-yyyy")
Dites moi si c'est la bonne méthode?

J'ai quand même une petite question:
Lors de la création d'onglet je ne souhaite pas recopier le bouton, j'ai essayé de rajouter:
Code:
ActiveSheet.Shapes.delete
Hélas ca ne fonctionne pas.

Cordialement ,
Philippe.
 

Staple1600

XLDnaute Barbatruc
Re

A tester sur une copie de votre fichier
VB:
Private Sub CommandButton1_Click()
Dim i&, j&, x&
i = CLng(CDate(InputBox("Date de début", "Choix", Date)))
j = CLng(CDate(InputBox("Date de fin")))
Application.ScreenUpdating = False
For x = i To j
Worksheets("Modèle").Copy after:=Sheets(Worksheets.Count)
ActiveSheet.Range("A2").Value = CDate(x)
ActiveSheet.Name = Format(CDate(x), """Planning du ""dd-mm-yyyy")
ActiveSheet.DrawingObjects.Delete
Next x
End Sub
 

fenec

XLDnaute Impliqué
Re,
Non il n'y en a pas d'autre.
J'ai aussi oublié de vous dire que si je clique dans input box "Annuler "le code bloque sur:
VB:
i = CLng(CDate(InputBox("Date de début", "Choix", Date)))
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Une version à ma sauce
(avec une seule InputBox et sans le petit blocage du clic sur Annuler)
VB:
Private Sub CommandButton1_Click()
pj = CDate("1-" & Month(Date))
dj = Format(Application.EoMonth(pj, 0), """ ""dd/mm/yyyy")
Dates = InputBox("Saisir date début et date de fin" & Chr(13) & "(séparée par un espace)", "Création Planning", pj & dj)
Select Case True
Case StrPtr(Dates) = 0
Exit Sub
Case Len(Dates) = 0
Exit Sub
Case Else
Application.ScreenUpdating = False
i = CDate(Split(Dates)(0))
j = CDate(Split(Dates)(1))
For x = i To j
Worksheets("Modèle").Copy after:=Sheets(Worksheets.Count)
    With ActiveSheet
        .Range("A2").Value = CDate(x)
        .Name = Format(x, """Planning du ""dd-mm-yyyy")
        .DrawingObjects.Delete
    End With
Next
End Select
End Sub
NB: Evidemment si la saisie dans l'InputBox ne respecte pas les contraintes, des soucis apparaîtront.
A l'utilisateur final d'être vigilant.
 

fenec

XLDnaute Impliqué
Bonjour le forum, Staple1600
Viens de tester votre code il est top et je l'ai même compris mais pas tout j'avoue comme:
VB:
EoMonth
et
Code:
Split(Dates)(0))

Je vais le garder sous le coude vu la rébellion de l'informatique de certains, je crains que le téléphone ne fasse que sonner. Il est plus simple pour moi de leur d'appuyer sur fin et de recommencer avec la première macro

Un grand merci pour votre aide

Cordialement,
Philippe.
 

Staple1600

XLDnaute Barbatruc
Bonsoir

EoMonth
Comme EndOfMonth

PS: Qui veut faire du VBA s'oblige à consulter son Harraps et/ou G..gle Translate ou autres outils de traduction.

NB: L'autre macro ne gère pas le clic sur Annuler
Celle du message#10, oui
 

fenec

XLDnaute Impliqué
Bonsoir le forum, Staple1600
Simplement pour vous dire qu'après explication votre solution poste 10 à été un succès et adopter
Encore merci pour votre aide
Cordialement,
Philippe.

PS: comment modifie t'on le tire pour marquer résolu?
 

Discussions similaires

Réponses
7
Affichages
592
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…