![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: septembre 2005
Messages: 37
|
bonsoir,
j'ai du mal avec une macro, soumise par un collegue. Il s'agit de creer un nouveau feuillet, en effaçant les données saisies, ( jusque là je sais faire...), et en renommant la nouvelle feuille à la date du lendemain, sauf si vendredi on renomme à la date du lundi. Et là on a pas abouti, et surement un peu compliqué les choses... Est ce qu'un genereux contributeur aurait une idée, plus simple et plus efficace que celles que nous avons testées ? Merci d'avance |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: septembre 2006
Localisation: Bordeaux
Messages: 237
|
Bonsoir Lucho07,
Il y a une erreur dans la procédure "Nouveau". J'ai remplacé : 'on efface le bouton de la feuille precedente feuille.Shapes("Button 2").Delete par : 'on efface le bouton de la feuille precedente feuille.Shapes("Button 1").Delete Après, je ne vois pas trop ce qu'il faut faire. Peux-tu donner un exemple de nom d'onglet que tu souhaites ? Merci Bonne nuit @+ |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: août 2006
Messages: 7 503
|
Bonjour Lucho, Lacorse, le forum
Pourquoi ne pas utiliser l'instruction "select case" en lieu et place des differets "if", a mon avis mais ca n'engage que moi cela faciliterait la mise au point de ton code, ci dessous un exemple : Code:
Select Case Numjour
Case 6
.Range("D3") = "=today() + 3"
.Name = "Journee du lundi " & compteur
Case 5
Case 4
Case 3
Case 2
Case Else
End Select
@+
__________________
Pierrot On se trouve toujours suffisamment intelligent, vu que c'est avec ce que l'on a qu'on juge !!! |
|
|
|
|
|
#5 (permalink) | |
|
XLDnaute Accro
Date d'inscription: avril 2006
Localisation: Basse Goulaine
Messages: 1 545
|
Citation:
la macro du fichier que t'as mis en exemple, un peu modifiée : Code:
Sub nouveau()
'
' nouveau Macro
' Macro enregistrée le 18/09/2006 par JULLIE franck
'
'declaration des variables
Dim feuille As Worksheet
Dim Numjour As Integer
Dim compteur As Integer
Dim NomDate As Date
'on affecte la valeur du jour de la semaine à la date d'aujourd'hui dans la variable Num
Numjour = Weekday(Now())
'copie de la feuille active
ActiveSheet.Copy after:=Sheets(Sheets.Count)
'modification de la nouvelle feuille
With ActiveSheet
'on affecte la feuille precedente a la variable feuille
Set feuille = Sheets(Sheets(.Index - 1).Name)
compteur = feuille.Range("f2") + 1
'definition de formule pour la date du jour
NomDate = IIf(Weekday(Date, vbMonday) > 4, _
Date + 4 - Weekday(Date, vbFriday), Date + 1)
.Range("D3") = NomDate
.Name = "Journée du " & Format(NomDate, "dddd") & " " & Day(NomDate)
'on efface les cellules
.Range("D7:D8,D11:D12,D15:D18,D21:D23,D28").ClearContents
.Range("F7:F9,F11:F13,F15:F18,F21:F24").ClearContents
.Range("B30:F38,A31:A38").ClearContents
'on met le compteur a jour
.Range("f2") = compteur
'on efface le bouton de la feuille precedente
feuille.Shapes("Button 1").Delete
End With
End Sub
si tu mets le titre du jour par macro (D3), pourquoi mettre une formule ? Si tu n'eaffaces pas directement ta feuille, c'est pour garder une "historique" donc, plutôt que mettre une formule, fige la date Sinon, en cas d'impression, va pas falloir se tromper entre date sur la feuille, et date sur l'onglet (qui ne figure même pas dans la mise en page Si t'imprimes un mois, t'as pas interet à faire tomber le paquet ![]() A+ |
|
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: janvier 2006
Localisation: 69400 LIMAS
Messages: 8 144
|
salut à tous
ma version corrigée (je m'etais un peu melangé les pieds dans les n° de jour) Code:
Dim MyWeek
MyWeek = Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche")
Dim Numjour As Integer
Dim compteur As Integer
compteur = ActiveSheet.Range("f2") + 1
' numero dulendemain
Numjour = WeekDay(Date + 1)
' si lendemain samedi ou dimanche lendemain lundi
If Numjour = 7 Or Numjour = 1 Then Numjour = 2
ActiveSheet.Copy after:=Sheets(Sheets.Count)
' renomme la nouvelle feuille
Sheets(Sheets.Count).Name = "journée du " & MyWeek(Numjour - 2) & " " & compteur
'on efface les cellules
With Sheets(Sheets.Count)
.Range("D7:D8,D11:D12,D15:D18,D21:D23,D28").ClearContents
.Range("F7:F9,F11:F13,F15:F18,F21:F24").ClearContents
.Range("B30:F38,A31:A38").ClearContents
'on met le compteur a jour
.Range("f2") = compteur
'on efface le bouton de la feuille precedente
.Shapes("Button 1").Delete
End With
End Sub
|
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: septembre 2005
Messages: 37
|
bonjour et merci à tous,
je n'avais effectivement pas fait attention à la date, qui n'est pas figée. La modif m'interesse, puisqu'effectivement les feuillets sont tous conservés comme archive. Merci encore je vais maintenant, essayer de mettre tt ça en application. bonne journée à tous |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Nouveau classeur+ macro | Maxime | Forum Excel | 6 | 26/07/2006 13h29 |
| sauvegarde automatique d'un feuillet | pilcar | Forum Excel | 2 | 15/01/2006 23h25 |
| créer un feuillet "récapitulatif" | Lucho07 | Forum Excel | 10 | 13/01/2006 19h27 |
| reference un un feuillet absent | babasse | Forum Excel | 1 | 21/04/2005 17h46 |
| recuperer des Données d'un feuillet sur un autre sous conditions | nikko | Forum Excel Downloads - Archives | 8 | 24/09/2004 10h30 |