Agenda semaine

Bonjour à tous,

Je souhaiterai avoir un exemple de création d'agenda perpétuel par semaine avec les n° de semaine.

J'ai déjà une création pour l'année mais par mois.

Chaque génération d'agenda il créera 52 feuilles de semaines pour une année.

Le nom de la feuille sera : Semaine-1.1er au 7/1/15

Si quelqu'un pouvait m'aiguiller ou m'aider à le réaliser?

Merci d'avance

Amicalement

Noel

Bonjour,

Tu as vraiment un calendrier très particulier :

Les normes standard numérotent les semaines du lundi au dimanche ou du dimanche au lundi.

Pour 2015 la semaine 1 va du 27 décembre 2014 au 4 janvier 2015...

Tu tiens absolument à garder tes semaines avec des normes "maison" (du jeudi au mercredi) ?

A+

Bonjour Galopin,

Non absolument pas.

C'est en fonction du commencement de l'année

Merci

@+

Amicalement

Noel

Bonjour,

Ce n'est pas simple : la convention de nommage des feuilles ne dépasse pas 31 caractères de plus il y a de nombreuses exclusions...

de plus les noms d'onglets à rallonge sont pas forcément très pratiques...

Ces macros te créeront les feuilles voulues pour 2015

Option Explicit

Function LUNDI(annee As Integer, NumSemaine As Integer) As Double
 'mpfe B Mazas
 'retourne la date du lundi de la semaine n° "NumSemaine" (ISO) de
  'année "Annee"
 Dim PremierJour As Date
 PremierJour = DateSerial(annee, 1, 1)
   If Weekday(PremierJour) = 6 Or Weekday(PremierJour) = 7 Then
     'si le 1er janvier tombe un vendredi ou un samedi
 PremierJour = PremierJour - Weekday(PremierJour) + 2
   Else
 PremierJour = PremierJour - Weekday(PremierJour) - 5
   End If
   LUNDI = PremierJour + 7 * NumSemaine
 End Function

Sub AddSem()
Dim k%, sem%, an%
an = 2015
k = Sheets.Count
For sem = 1 To 52
   Sheets.Add After:=Sheets(Sheets.Count)
   ActiveSheet.Name = "Sem" & sem & " ~ du " & Format(CDate(LUNDI(an, sem)), "dd-mm-yy") & " au " & Format(CDate(LUNDI(an, sem) + 6), "dd-mm-yy")
Next
End Sub

A+

Re,

Je suis un peu perdu, Si ces code ne se trouvent pas dans un USF.

Je ne saurai comment faire.

Pourras-tu me donner l'exemple pour démarrer le projet.

Merci d'avance

Amicalement

Noel

Bonjour,

Une proposition à adapter.

Cdlt.

Bonjour Jean Eric

Re Galopin

Je vous remercie à tous les 2.

Je pense que je vais partir du modèle ci joint, je vais essayer d'adapter tout ça.

Mais je suis de revenir vers vous pour m'aider à réaliser ce projet.

Donc je ne ferme pas le fil maintenant.

Amicalement

Noel

Bonjour,

Mes codes ne sont pas destiné à un UserForm.

Tu les colles dans un module standard (Module1) et tu exécutes la macro AddSem à parir de l'onglet Développeur > Macro.

la macro va te créer 52 feuilles avec les libellés de semaines correspondants.

A+

Re,

Déjà, je pense créer un modèle d'une feuille de reproduction afin lors de la demande de reproduire cette feuille à partir du modèle avec les noms de feuille approprié.

Quand j'aurai terminé mon modèle je vous enverrai le modèle pour générer l'agenda sur les 52 semaines.

Si vous êtes toujours d'accord à m'aider la dessus faites moi savoir.

Amicalement

Noel

Re,

Me revoilà.

Voici le modèle que je souhaiterai à partir du quel que les feuilles semaines soient créer.

39calsem.zip (24.99 Ko)

Re,

Pas très clair tout çà...

Ctrl + w pour lancer la procédure.

Cdlt.

26calsem.xlsm (26.25 Ko)

Bonjour à tous,

Bonjour Jean Eric, Galopin,

J'ai une question fondamentale dans le code à vous poser.

Pourquoi lorsque je crée une nouvelle feuille exp "Patients" lors du lancement de la procédure "Creer_Calebdrier" elle m'efface automatiquement la feuille "Patients". Qu'elle serait la solution que je pourrai envisager à rajouter une autre feuille.

Merci d'avance

Amicalement

Noel

Bonjour,

Ta demande était de créer un calendrier de 52 semaines.

Pour ma part (pour les tests), Je supprimai les feuilles existantes (voir lignes surlignées).

A toi d'adapter en conséquence.

Cdlt.

Option Explicit
'Option Private Module
Public Sub Creer_calendrier()
'Ctrl+w pour lancer la procédure
Dim wb As Workbook
Dim ws As Worksheet
Dim x As Byte, i As Byte, j As Byte
Dim strName As String
Dim an As Integer

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    Set wb = ActiveWorkbook

   For Each ws In wb.Worksheets
        If ws.Name <> "Modele" Then ws.Delete
    Next ws

    Application.DisplayAlerts = True

    Set ws = wb.Worksheets("Modele")
    an = 2015

    With ws
        x = nbSemaines(an)
        For i = 1 To x
            ws.Copy after:=Worksheets(Worksheets.Count)
            strName = "Sem" & Format(i, "00") & " ~ du "
            strName = strName & Format(LundiSemaine(an, i), "dd-mm-yy") & " au "
            strName = strName & Format(LundiSemaine(an, i) + 6, "dd-mm-yy")
            ActiveSheet.Name = strName
            [B1] = "Semaine du " & Format(LundiSemaine(an, i), "dd-mm-yyyy") & _
                 " au " & Format(LundiSemaine(an, i) + 6, "dd-mm-yyyy")
            [B3] = LundiSemaine(an, i)
            For j = 1 To 6
                Cells(3, j + 2) = [B3] + j
            Next j
        Next i
    End With

    Set ws = Nothing
    Set wb = Nothing

End Sub

Re,

Jean Eric je te remercie.

Effectivement j'ai demandé pour la création d'un agenda de Semaine. Pour moi c'est le point de départ d'un projet.

Ce dernier c'est de faciliter la saisie, de créer un agenda avec les années. Pour le moment celui ci fonctionne que pour l'année 2015, mais bien entendu je voudrai pouvoir choisir l'année pour la création à travers un USF.

Pour cela comment remplacer : an=2015 par un combobox =2014 to 2025 par exemple.

Si jamais tu as besoin du modèle en création n’hésite pas

Effectivement les noms des feuilles j'ai trouvé un peu barbant, j'ai éliminer des bouts de code afin de réduire le nom surtout quand je veux les supprimer à l'aide d'un code.

Je me débrouille un peu en VBA mais je suis loin du compte.

Je te remercie de ton aide que tu pourras apporter pour réaliser mon projet.

Amicalement

Noel

Re,

Je ne suis pas un expert UserForm.

Voir exemple dans fichier.

23calsem.xlsm (35.74 Ko)

Re,

Jean Eric, je me permets d'attirer ton attention sur le fait que lors de la création du calendrier quelque soit l'année choisit il crée toujours le calendrier de l'an 2000.

Je te renvoie le fichier un peu mise en forme à ma manière avec les noms des feuilles changés tu constateras de visu.

De plus pour la mise en marche de l'USF tu devras cliquer sur la cellule B2 d'ou j'ai mis un bouton et pour effacer les feuilles là aussi j'ai mis un bouton sur la cellule "Dimanche"

Je me suis permis de mettre une zone texte qui est égale à la valeur de de la cellule "A1" qui prend la valeur lors de la création du Calendrier afin de savoir sur quel N° de semaine on se trouve.

Pourras-tu regarder cela pour moi.

J'abuse peut-être de ta gentillesse.

Merci d'avance

Amicalement

Noel

PS: Comme tu vois je travaille sous 2003 donc je préfère le fichier en .xls

44calsem-1.zip (34.12 Ko)
Rechercher des sujets similaires à "agenda semaine"