IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Faire un modulo avec une date (Fréquence) sur un calendrier


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut Faire un modulo avec une date (Fréquence) sur un calendrier
    Bonjour à tous, je suis d'un niveau plus que novice sur excel (je connais les bases, mais pas la peine de me parle de VBA ...). Donc voila, j'ai trouvé sur internet une macro qui permet d'afficher un calendrier basique en fonction du mois et de l'année. Sur celui-ci je souhaiterai afficher des tâches à effectuer.

    Ces tâches sont des épisodes de maintenance, je dis bien épisode, car ils sont de fréquences différentes (certains tous les 2 jours, d'autre tous les exemple !), on travaillera toujours quotidiennement, c'est a dire que les horraires ne nous interesse pas, il suffit que dans une case correspondant à jour (Jeudi 02/04/2015) soit inscrit : Maintenance Machine A sur Points 1 et 2 avec Produits X et Y à utiliser.

    J'essaye en meme temps avec Access également car la base de donnée est plus simple et plus ergonomique à mettre en oeuvre, cependant la mise en place du planning dépasse mes compétences.

    Donc si vous aviez une petite solution à mettre en oeuvre, je vous serai vraiment reconnaissant de m'en dire d'avantage, parceque vraiment la je seche ...

    Merci de votre attention, Cordialement.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    je vous serai vraiment reconnaissant de m'en dire d'avantage
    Bin... C'est réciproque.
    Parce qu'avec le peu d'éléments que tu donnes, je ne vois pas trop ce qu'on peut faire.

    Tu ne donnes pas le code de ta macro.
    Tu n'indiques pas sous quelle forme s'inscrit ton calendrier.
    Tu de dis pas comment sont renseignées tes tâches et leur périodicité.
    Tu ne dis pas ce que tu veux obtenir comme résultat.

    Nom : smileys-boule-cristal-tns0.gif
Affichages : 704
Taille : 49,8 Ko

    mais pas la peine de me parle de VBA
    J'ai quand même l'impression qu'il va falloir en parler un peu...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Bonjour, merci de votre réponse

    Citation Envoyé par Menhir Voir le message
    Tu ne donnes pas le code de ta macro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    Sub CalendarMaker()
     
           ' Unprotect sheet if had previous calendar to prevent error.
           ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _
              Scenarios:=False
           ' Prevent screen flashing while drawing calendar.
           Application.ScreenUpdating = False
           ' Set up error trapping.
           On Error GoTo MyErrorTrap
           ' Clear area a1:g14 including any previous calendar.
           Range("a1:g14").Clear
           ' Use InputBox to get desired month and year and set variable
           ' MyInput.
           MyInput = InputBox("Type in Month and year for Calendar ")
           ' Allow user to end macro with Cancel in InputBox.
           If MyInput = "" Then Exit Sub
           ' Get the date value of the beginning of inputted month.
           StartDay = DateValue(MyInput)
           ' Check if valid date but not the first of the month
           ' -- if so, reset StartDay to first day of month.
           If Day(StartDay) <> 1 Then
               StartDay = DateValue(Month(StartDay) & "/1/" & _
                   Year(StartDay))
           End If
           ' Prepare cell for Month and Year as fully spelled out.
           Range("a1").NumberFormat = "mmmm yyyy"
           ' Center the Month and Year label across a1:g1 with appropriate
           ' size, height and bolding.
           With Range("a1:g1")
               .HorizontalAlignment = xlCenterAcrossSelection
               .VerticalAlignment = xlCenter
               .Font.Size = 18
               .Font.Bold = True
               .RowHeight = 35
           End With
           ' Prepare a2:g2 for day of week labels with centering, size,
           ' height and bolding.
           With Range("a2:g2")
               .ColumnWidth = 11
               .VerticalAlignment = xlCenter
               .HorizontalAlignment = xlCenter
               .VerticalAlignment = xlCenter
               .Orientation = xlHorizontal
               .Font.Size = 12
               .Font.Bold = True
               .RowHeight = 20
           End With
           ' Put days of week in a2:g2.
           Range("a2") = "Dimanche"
           Range("b2") = "Lundi"
           Range("c2") = "Mardi"
           Range("d2") = "Mercredi"
           Range("e2") = "Jeudi"
           Range("f2") = "Vendredi"
           Range("g2") = "Samedi"
           ' Prepare a3:g7 for dates with left/top alignment, size, height
           ' and bolding.
           With Range("a3:g8")
               .HorizontalAlignment = xlRight
               .VerticalAlignment = xlTop
               .Font.Size = 18
               .Font.Bold = True
               .RowHeight = 21
           End With
           ' Put inputted month and year fully spelling out into "a1".
           Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
           ' Set variable and get which day of the week the month starts.
           DayofWeek = Weekday(StartDay)
           ' Set variables to identify the year and month as separate
           ' variables.
           CurYear = Year(StartDay)
           CurMonth = Month(StartDay)
           ' Set variable and calculate the first day of the next month.
           FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
           ' Place a "1" in cell position of the first day of the chosen
           ' month based on DayofWeek.
           Select Case DayofWeek
               Case 1
                   Range("a3").Value = 1
               Case 2
                   Range("b3").Value = 1
               Case 3
                   Range("c3").Value = 1
               Case 4
                   Range("d3").Value = 1
               Case 5
                   Range("e3").Value = 1
               Case 6
                   Range("f3").Value = 1
               Case 7
                   Range("g3").Value = 1
           End Select
           ' Loop through range a3:g8 incrementing each cell after the "1"
           ' cell.
           For Each cell In Range("a3:g8")
               RowCell = cell.Row
               ColCell = cell.Column
               ' Do if "1" is in first column.
               If cell.Column = 1 And cell.Row = 3 Then
               ' Do if current cell is not in 1st column.
               ElseIf cell.Column <> 1 Then
                   If cell.Offset(0, -1).Value >= 1 Then
                       cell.Value = cell.Offset(0, -1).Value + 1
                       ' Stop when the last day of the month has been
                       ' entered.
                       If cell.Value > (FinalDay - StartDay) Then
                           cell.Value = ""
                           ' Exit loop when calendar has correct number of
                           ' days shown.
                           Exit For
                       End If
                   End If
               ' Do only if current cell is not in Row 3 and is in Column 1.
               ElseIf cell.Row > 3 And cell.Column = 1 Then
                   cell.Value = cell.Offset(-1, 6).Value + 1
                   ' Stop when the last day of the month has been entered.
                   If cell.Value > (FinalDay - StartDay) Then
                       cell.Value = ""
                       ' Exit loop when calendar has correct number of days
                       ' shown.
                       Exit For
                   End If
               End If
           Next
     
           ' Create Entry cells, format them centered, wrap text, and border
           ' around days.
           For x = 0 To 5
               Range("A4").Offset(x * 2, 0).EntireRow.Insert
               With Range("A4:G4").Offset(x * 2, 0)
                   .RowHeight = 65
                   .HorizontalAlignment = xlCenter
                   .VerticalAlignment = xlTop
                   .WrapText = True
                   .Font.Size = 10
                   .Font.Bold = False
                   ' Unlock these cells to be able to enter text later after
                   ' sheet is protected.
                   .Locked = False
               End With
               ' Put border around the block of dates.
               With Range("A3").Offset(x * 2, 0).Resize(2, _
               7).Borders(xlLeft)
                   .Weight = xlThick
                   .ColorIndex = xlAutomatic
               End With
     
               With Range("A3").Offset(x * 2, 0).Resize(2, _
               7).Borders(xlRight)
                   .Weight = xlThick
                   .ColorIndex = xlAutomatic
               End With
               Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
                  Weight:=xlThick, ColorIndex:=xlAutomatic
           Next
           If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _
              .Resize(2, 8).EntireRow.Delete
           ' Turn off gridlines.
           ActiveWindow.DisplayGridlines = False
           ' Protect sheet to prevent overwriting the dates.
           ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
              Scenarios:=True
     
           ' Resize window to show all of calendar (may have to be adjusted
           ' for video configuration).
           ActiveWindow.WindowState = xlMaximized
           ActiveWindow.ScrollRow = 1
     
           ' Allow screen to redraw with calendar showing.
           Application.ScreenUpdating = True
           ' Prevent going to error trap unless error found by exiting Sub
           ' here.
           Exit Sub
       ' Error causes msgbox to indicate the problem, provides new input box,
       ' and resumes at the line that caused the error.
    MyErrorTrap:
           MsgBox "You may not have entered your Month and Year correctly." _
               & Chr(13) & "Spell the Month correctly" _
               & " (or use 3 letter abbreviation)" _
               & Chr(13) & "and 4 digits for the Year"
           MyInput = InputBox("Type in Month and year for Calendar")
           If MyInput = "" Then Exit Sub
           Resume
       End Sub
    J'ai trouvé ce code sur internet, et il est plutot bien fait, il suffit juste d'entre le mois et l'année que l'on désire afficher

    Citation Envoyé par Menhir Voir le message
    Tu n'indiques pas sous quelle forme s'inscrit ton calendrier.
    Nom : Calen.png
Affichages : 892
Taille : 92,1 Ko

    Voila à quoi cela peut ressembler

    Citation Envoyé par Menhir Voir le message
    Tu de dis pas comment sont renseignées tes tâches et leur périodicité.
    La, je ne vois pas bien ... Tout est référencé dans access, avec une date de départ, puis une fréquence (par exemple : 26/03/2015, fréquence d'entretien tous les deux jours, il faut donc 28/03/2015, 30/03/2015 ....)

    Citation Envoyé par Menhir Voir le message
    Tu ne dis pas ce que tu veux obtenir comme résultat.
    J'aimerai qu'au final, les tâches soient rentrées dans le calendrier ci-dessus en fonction de la correspondance de leur date.

    Citation Envoyé par Menhir Voir le message
    J'ai quand même l'impression qu'il va falloir en parler un peu...
    Je pense bien, mais je suis vraiment novice dans ce domaine, votre aide est plus que la bienvenue !

    Merci par avance
    Cordialement

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2011, 14h10
  2. Faire un controle avec message d'erreur sur date
    Par manue514 dans le forum Débuter
    Réponses: 8
    Dernier message: 04/05/2009, 17h08
  3. faire un calcul avec une date
    Par marcuswillbe dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/11/2008, 19h24
  4. Réponses: 3
    Dernier message: 17/05/2008, 14h39
  5. faire le lien avec une image sur mon disque dur
    Par tsubasette dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 23/10/2006, 00h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo