Pb sur macro nouveau feuillet

Lucho07

XLDnaute Nouveau
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
 

Pièces jointes

  • tableau previsionnel de tresorerie.zip
    10.6 KB · Affichages: 29

lacorse33

XLDnaute Occasionnel
Re : Pb sur macro nouveau feuillet

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
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Pb sur macro nouveau feuillet

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

Bonne journée
@+
 

Gorfael

XLDnaute Barbatruc
Re : Pb sur macro nouveau feuillet

Lucho07 à dit:
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
Salut à tous
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
P'tite question :
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+
 

pierrejean

XLDnaute Barbatruc
Re : Pb sur macro nouveau feuillet

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

mêmes remarques que Gorfael (que je salue particulierement)
 

Lucho07

XLDnaute Nouveau
Re : Pb sur macro nouveau feuillet

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
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz