Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion papillon28400
  • 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 !

P

papillon28400

Guest
Bonjour à tous,
J'ai commencé à créer dans Excel 2007, un fichier qui comprend plusieurs colonnes corresponant à des cycles (voir pj : 2 onglets)

Les principales sont :
cycle 1 qui correspondant à une date bien définie

cycle 2 qui correspondant à une date bien définie

Les dates de ces colonnes sont à saisir

La 2ème ligne du 1er cycle jusqu'à la fin est une formule de calcul
(MOIS.DECALER_REF CELLULE;1)

idem pour le 2ème cycle

idem pour le 3ème cycle

Mon problème est le suivant :
Les colonnes de chaque cycle doivent être de la même longueur et les dates de saisie sont bien spécifiques.
Elles ne sont pas de la même longueur pour chaque cas.

Voir le fichier Excel en exemple (2 onglets)

A part effacer les lignes manuellement bien sur, pouvez vous m'apporter une aide pour automatiser ou me suggérer une solution. Est ce que vous pouvez m'aider également pour automatiser les colonnes B, E et H. Ces colonnes s'alimentent comme suit :
1 pour la date historique 1
2 pour la date anniversaire
3 idem
etc

Merci de votre collaboration

Cordialement
 

Pièces jointes

Re : 3 cycles

Bonjour Papillon28400 🙂,
Entre comprendre ton problème, puis le résoudre, bonjour l'angoisse...
Enfin, après avoir fait frétiller mes neurones, voici le code que je te propose:
Code:
Sub Remplissage()
Range("a2", "j500").ClearContents
Dim Début As Date, Fin As Date, DateIntermédiaire As Date, Hauteur As Integer, I As Integer
On Error GoTo Sortie
Début = InputBox("Date de début ?")
Fin = InputBox("Date de fin ?")
On Error GoTo 0
If Fin < Début Then Exit Sub
DateIntermédiaire = Début
Hauteur = ((Month(Fin) + Year(Fin) * 12) - (Month(Début) + Year(Début) * 12)) / 3
If Hauteur <> Int(Hauteur) Then Hauteur = Int(Hauteur) + 1
For I = 2 To Hauteur + 1
Cells(I, 3) = DateIntermédiaire
Cells(I, 6) = DateAdd("m", Hauteur, DateIntermédiaire)
Cells(I, 9) = DateAdd("m", Hauteur * 2, DateIntermédiaire)
DateIntermédiaire = DateAdd("m", 1, DateIntermédiaire)
Next I
For I = 2 To Hauteur + 1
If Month(Cells(I, 3)) = Month(Début) Then Cells(I, 1) = Year(Cells(I, 3)) - Year(Début)
If Month(Cells(I, 6)) = Month(Début) Then Cells(I, 5) = Year(Cells(I, 6)) - Year(Début)
If Month(Cells(I, 9)) = Month(Début) Then Cells(I, 8) = Year(Cells(I, 9)) - Year(Début)
Next I
Exit Sub
Sortie: Exit Sub
End Sub
Il fonctionne, je l'ai testé. Il te restera à faire la présentation. Il peut être amélioré en y ajoutant la présentation. J'ai par contre considéré que tu faisais 3 colonnes égales, donc la date de fin peux être dépassée. Il suffira juste d'effacer la ou les 2 dernières cellules.
Bon courage 😎
 
- 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.

Discussions similaires

Réponses
12
Affichages
372
Réponses
11
Affichages
361
Réponses
15
Affichages
795
Réponses
6
Affichages
346
  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
396
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…