Mise à jour du planning en effaçant les MFC précédentes des dates

salut le forum

je viens solliciter votre aide. je débute en VBA et j'essaye de mettre sur pied un planning sur Excel pour gérer des activités. j'ai évolué dessus mais il y'a une condition qui me dérange. en effet je souhaite que lorsque je mette 1 et que la cellule ne corresponde pas à la date prévue(la cellule de la date prévue est rouge lorsque on a atteint et dépassé sa date) alors je voudrais que on détermine le nombre de colonne qui sépare la cellule qui comporte 1 de celle qui est rouge avec * à l'intérieur( date prévue).

Après avoir déterminer la valeur , j'ajoute la périodicité correspondante et je soustrais à la position de la cellule qui compote 1 pour retrouver la cellule qui précède la date prévue. Après avoir déterminer cette cellule, je souhaite effacer sont contenu.

je n'arrive pas à faire cela et j'ai vraiment besoin de votre aide s'il vous plait

je vous remercie

15therse-3.xlsm (50.45 Ko)

bonjour Theres,

je n'ai pas bien étudié votre macro, mais c'est quelque chose comme ceci. Je prends aujourd'hui et je cherche la première date >= 1/8/2023 qui est un multiple de x jours ou mois.

Sub test()

     '************************************
     'date de référence = aujourd'hui
     '************************************

     Dim MaDate, DateVoulu, f, g, x
     MaDate = DateSerial(2023, 8, 1)         'la date voulu
     If MaDate > Date Then                   'tant que madate < que la date en G7
          'recherche date suivante
          For Each f In Array(1, 2, 7, 14) 'multiple de 1,2,7 au 14 jours
               x = WorksheetFunction.Ceiling_Math(DateDiff("d", Date, MaDate), f)
               DateVoulu = DateAdd("d", x, Date)
               MsgBox "premier date à partir du " & Format(Date, "dd-mm-yy") & vbLf & " avec intervalle " & f & " jours : " & Format(DateVoulu, "dd-mm-yy") & vbLf & DateVoulu - Date & " jours"
          Next

          For Each g In Array(1, 2, 3, 6, 12)'multiple de 1,2,3,6 ou 12 mois
               x = WorksheetFunction.Ceiling_Math(DateDiff("m", Date, MaDate), g)
               DateVoulu = DateAdd("m", x, Date)
               MsgBox "premier date à partir du " & Format(Date, "dd-mm-yy") & vbLf & " avec intervalle " & g & " mois : " & Format(DateVoulu, "dd-mm-yy") & vbLf & DateDiff("m", Date, DateVoulu) & " mois"
          Next

     End If
End Sub

re,

je l'ai modifié en fonction personnalisée, alors vous appelez cette fonction avec 4 paramètres, les 2 dates, le nombre de jours ou mois comme intervalle et TRUE (en cas de mois) ou False (en cas de jours).

La macro "teste" est un exemple comment on peut utiliser cette fonction.

Dans votre macro, vous avez par exemple 2 dates, la cellule G7 (1/7/2023) et E10 (5/8/23) et F10 (bi-hebdomadaire=14j), alors votre date sera le résultat de

madate=datemultiple(range("G7").value, range("E10").value, 14, false)

[s=fs-1.1][s=co-8064a2][/s][/s]

Sub Teste()
     Dim MaDate
     MaDate = DateMultiple(Date, DateSerial(2023, 8, 1), 3, True)     'première date >= aujourd'hui et 1/8/23 qui est un multiple de 3 mois
     MsgBox Format(MaDate, "dd-mm-yy")
End Sub

Function DateMultiple(MaDate As Date, DateRef As Date, nombre As Integer, bMois As Boolean)

     '******************************************************************************************
     'MaDate = à partir de cette date on cherche un multiple en jours ou en mois qui est plus grand que MaDate et DateRef
     'bMois = Vrai si on cherche un multiple en mois, = false sie on cherche en jours
     '******************************************************************************************
     Dim dMin, Dmax, x
     dMin = Application.Min(MaDate, DateRef)
     Dmax = Application.Max(MaDate, DateRef)

     If Not bMois Then
          x = WorksheetFunction.Ceiling_Math(DateDiff("d", dMin, Dmax), nombre)
          DateMultiple = DateAdd("d", x, dMin)
     Else
          x = WorksheetFunction.Ceiling_Math(DateDiff("m", dMin, Dmax), nombre)
          DateMultiple = DateAdd("m", x, dMin)
     End If
End Function

re,

maintenant avec PJ

11therse-3.xlsm (60.36 Ko)

merci beaucoup pour tes réponses

j'oublie la politesse, bonjour à vous

j'ai une autre préoccupation s'il vous plait. en fait le planning ci-dessous me permet de visualiser les activités sur 1 an en masquant à chaque fois le mois lorsque on le change. mon souci c'est qu'il réinitialise à chaque fois que l'année passe et que nous somme en janvier. je souhaite c'est justement qu'il ne se réinitialise jamais. je voudrais qu'il m'affiche les mois indéfiniment et qu'il les masquent lorsque on passe à un autre mois.

je souhaite que si c'est vraiment possible que chaque mois sur n'importe quelle année ait sa plage de données et que celle-ci se masque lorsque on passe à un autre mois pour que je puisse conserver les données des années précédentes.

je vous remercie

11therse.xlsm (50.42 Ko)

re,

cela ralentira le fichier, mais comme vous ne voulez que voir un (ou plusieurs) mois en même temps, on peut modifier la cellule G7 avec les cellules C6:C7 + eventuellement une cellule pour indiquer le nombre de mois

si cela va ralentir le fichier, comment je peut faire pour sauvegarder les données complète d' une année sur un classeur

merci

re,

si vous changez quelque chose dans la plage C5:C7, le Gantt se met à jour.

D'où viennent les valeurs "1" dans le Gantt ? Manuellement ?

Votre boucle est bizarre

14therse-2.xlsm (67.58 Ko)

bonjour à vous

1 c'est une condition pour celui qui va suivre le planning. si la tache est effectuée un jour qu'il correspond ou pas à une date déjà prévue on met 1.

merci pour les modification mais c'est pas vraiment ça.

vu que ça va ralentir le fichier si je le surcharge comme j'avais l'intention de le faire, je voudrais à la place que pour chaque année commençant de janvier à décembre que tout mon planning s'enregistre dans un autre classeur Excel à chaque fois que l'on est déjà au dernier jour du mois de décembre de l'année correspondante

merci

re,

alors, je dois encore créer un tableau pour sauvegarder tous ces "1" manuels , sinon ils sont perdu ...

justement je veux pouvoir sauvegarder les données sur une année

re,

les "1" sont sauvegardé dans un tableau de la feuille "Mes_1"

16therse-2.xlsm (98.11 Ko)

merci beaucoup pour ta réponse

Erreur

Rechercher des sujets similaires à "mise jour planning effacant mfc precedentes dates"