OVH Cloud OVH Cloud

Affichage des mois entre 2 dates

14 réponses
Avatar
cd
Bonsoir la communauté,
Voilà déjà plusieurs heures que je cherche à afficher dans 5 cellules (max)
tous les mois compris entre 2 dates.
Ex: date deb: 25/09/06 ; date fin:12/01/07
=> affichage de 09 10 11 12 01

Si quelqu'un peut me dépatouiller, je l'en remercie d'avance enormement
A+

10 réponses

1 2
Avatar
JLuc
*Bonjour cd*,
Une petite procédure :

Sub ChercheMois()
depart = Range("A2")
fin = Range("B2")
dec = 0
dateinter = DateSerial(Year(depart), Month(depart), 1)
While dateinter < fin
Range("C2").Offset(dec, 0) = Month(dateinter)
dec = dec + 1
dateinter = DateSerial(Year(dateinter), Month(dateinter) + 1, 1)
Wend
End Sub


PS :
En A2 : date de début
En B2 : date de fin


Bonsoir la communauté,
Voilà déjà plusieurs heures que je cherche à afficher dans 5 cellules (max)
tous les mois compris entre 2 dates.
Ex: date deb: 25/09/06 ; date fin:12/01/07
=> affichage de 09 10 11 12 01

Si quelqu'un peut me dépatouiller, je l'en remercie d'avance enormement
A+


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
cd
Déjà Merci JLuc pour ton retour
Avant d'essayer ta macro, j'ai oublié de préciser que ma contrainte est
d'utiliser plutot des formules
Est-ce toujours possible?



*Bonjour cd*,
Une petite procédure :

Sub ChercheMois()
depart = Range("A2")
fin = Range("B2")
dec = 0
dateinter = DateSerial(Year(depart), Month(depart), 1)
While dateinter < fin
Range("C2").Offset(dec, 0) = Month(dateinter)
dec = dec + 1
dateinter = DateSerial(Year(dateinter), Month(dateinter) + 1, 1)
Wend
End Sub


PS :
En A2 : date de début
En B2 : date de fin


Bonsoir la communauté,
Voilà déjà plusieurs heures que je cherche à afficher dans 5 cellules (max)
tous les mois compris entre 2 dates.
Ex: date deb: 25/09/06 ; date fin:12/01/07
=> affichage de 09 10 11 12 01

Si quelqu'un peut me dépatouiller, je l'en remercie d'avance enormement
A+


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O






Avatar
AV
Avant d'essayer ta macro, j'ai oublié de préciser que ma contrainte est
d'utiliser plutot des formules
Est-ce toujours possible?


A adapter
Avec la date de début en A1 et la fin en B1
Insertion > Nom > Définir > Nom dans le classeur : "zz" > Fait référence à
:
=MOIS(LIGNE(INDIRECT($A$1&":"&$B$1)))

Dans la feuille :
Sélection de D1:D5 > Saisie de (matricielle) :
=TEXTE(SI(ESTNUM(PETITE.VALEUR(SI(EQUIV(zz;zz;0)=LIGNE(INDIRECT("1:"&LIGNES(zz)));EQUIV(zz;zz;0);"");LIGNE(INDIRECT("1:"&LIGNES(zz)))));INDEX(zz;PETITE.VALEUR(SI(EQUIV(zz;zz;0)=LIGNE(INDIRECT("1:"&LIGNES(zz)));EQUIV(zz;zz;0);"");LIGNE(INDIRECT("1:"&LIGNES(zz)))));"");"00")
Validation par ctrl+maj+entrée

http://cjoint.com/?jyhVtEFiZ0

AV

Avatar
dre
Salut,

A1 : 25/09/06
B1 : 12/01/07
C1 : =SI(MOIS($B1-$A1)<COLONNE()-3;"";MOIS(MOIS.DECALER($A1;COLONNE()-3)))
formule à copier vers la droite.
Il faut préalablement activer l'Utilitaire d'Analyse sous les Macros
complémentaires du menu Outils.

Pour ne pas faire appel à la macro complémentaire :
=SI(MOIS($B1-$A1)<COLONNE()-3;"";MOIS(DATE(ANNEE($A1);MOIS($A1)+COLONNE()-3;1)))

Â+






Bonsoir la communauté,
Voilà déjà plusieurs heures que je cherche à afficher dans 5 cellules (max)
tous les mois compris entre 2 dates.
Ex: date deb: 25/09/06 ; date fin:12/01/07
=> affichage de 09 10 11 12 01

Si quelqu'un peut me dépatouiller, je l'en remercie d'avance enormement
A+


Avatar
JLuc
*Bonjour dre*,
Ta formule est pas mal, mais, parce qu'il y a un mais :') elle marche
dans le cas ou le jour en A1 est plus grand qu'en B1. Si tu entre en A1
01/09/06, tu obtiendra : 9 10 11 12 1 2
Mais j'avoue que, cette formule, c'est presque de la bombe.

Pour ne pas faire appel à la macro complémentaire :
=SI(MOIS($B1-$A1)<COLONNE()-3;"";MOIS(DATE(ANNEE($A1);MOIS($A1)+COLONNE()-3;1)))


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
JLuc
*Bonjour AV*,

Super ta formule matricielle, mais où tu va chercher des formules
pareil ?? 8-o :-?

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O
Avatar
dre
Salut JLuc,

Merci pour ta remarque.
Comme quoi il faut toujours tester une formule !

Il me semble qu'une petite condition supplémentaire du type :
+(JOUR($A1)-JOUR($B1))<0
devrait suffire, mais je vais tester cette fois.
Toutefois, plus aujourd'hui (il y a aussi du canard sur le feu).

Â+




*Bonjour dre*,
Ta formule est pas mal, mais, parce qu'il y a un mais :') elle marche
dans le cas ou le jour en A1 est plus grand qu'en B1. Si tu entre en A1
01/09/06, tu obtiendra : 9 10 11 12 1 2
Mais j'avoue que, cette formule, c'est presque de la bombe.

Pour ne pas faire appel à la macro complémentaire :
=SI(MOIS($B1-$A1)<COLONNE()-3;"";MOIS(DATE(ANNEE($A1);MOIS($A1)+COLONNE()-3;1)))


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O






Avatar
JLuc
*Bonjour dre*,

Toutefois, plus aujourd'hui (il y a aussi du canard sur le feu).
Alors : Bon app' ;-)


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
Trirème
Yo every body
Si je puis apporter mon grain de sel à l'édifice.
Date début en A1, date de fin en B1, formule à recopier de C1 à G1 :
=SI(MOD(MOIS($B$1)-MOIS($A$1);12)>=(COLONNE()-3);MOD(MOIS($A$1)+COLONNE()-COLONNE($A$1)-3;12)+1;"")

Je n'ai pas besoin de lire la formule d'AV pour savoir qu'elle fonctionne, mais, 5
neurones ont lâché après la 7ème parenthèse fermante...
La formule que je propose est 'colonno-dépendante' mais peut être plus aisée si besoin
mise à jour.
(Je sens que je vais me faire allumer).

Pour résoudre l'aspect 'colonno-dépendant', remplacer les deux "-3" de la formule par
"-4", "-5" si on écrit la formule en D, E,...
Ou alors nommer la cellule C1 : 'NumPremMois' et remplacer les "-3" par COLONNE(NumPremMois)

Cordialement
--
Trirème

Bonsoir la communauté,
Voilà déjà plusieurs heures que je cherche à afficher dans 5 cellules (max)
tous les mois compris entre 2 dates.
Ex: date deb: 25/09/06 ; date fin:12/01/07
=> affichage de 09 10 11 12 01

Si quelqu'un peut me dépatouiller, je l'en remercie d'avance enormement
A+


Avatar
Daniel.M
Bonjour,

Avec la date de début en A1 et la date de fin en B1, cette formule
matricielle (sur 5 cellules verticales) :

=SI(DATE(ANNEE(A1);MOIS(A1)+{0;1;2;3;4};0)<B1;1+MOD(MOIS(A1)-1+{0;1;2;3;4};12);"")

Salutations,

Daniel M.

"cd" wrote in message
news:
Déjà Merci JLuc pour ton retour
Avant d'essayer ta macro, j'ai oublié de préciser que ma contrainte est
d'utiliser plutot des formules
Est-ce toujours possible?



*Bonjour cd*,
Une petite procédure :

Sub ChercheMois()
depart = Range("A2")
fin = Range("B2")
dec = 0
dateinter = DateSerial(Year(depart), Month(depart), 1)
While dateinter < fin
Range("C2").Offset(dec, 0) = Month(dateinter)
dec = dec + 1
dateinter = DateSerial(Year(dateinter), Month(dateinter) + 1, 1)
Wend
End Sub


PS :
En A2 : date de début
En B2 : date de fin


Bonsoir la communauté,
Voilà déjà plusieurs heures que je cherche à afficher dans 5 cellules
(max)
tous les mois compris entre 2 dates.
Ex: date deb: 25/09/06 ; date fin:12/01/07
=> affichage de 09 10 11 12 01

Si quelqu'un peut me dépatouiller, je l'en remercie d'avance enormement
A+


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O








1 2