Pb sur macro nouveau feuillet

  • Initiateur de la discussion Initiateur de la discussion Lucho07
  • 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 !

L

Lucho07

Guest
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

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
@+
 
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
@+
 
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+
 
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)
 
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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour