entre 2 dates n'afficher que les lun, mar, jeu, vend
12 réponses
val.eric
Bonjour !!
voila je m'occupe d'une cantine scolaire associative.
je dois creer un fichier excel qui va contenir tous les jours
d'ouverture de la cantinepour l'année scolaire 2005-2006.
nous n'ouvrons que les lundi, mardi, jeudi et vendredi.
ais-je un moyen pour taper la date de debut puis la date de fin et
qu'excel m'affiche en ligne
lun 01 sept
mar 02 sept
jeud 03 sept
vend 04 sept
lun 07 sept
etc...
il ne me restera qu'a supprimer a la main les jours de vacances.
Merci pour votre (precieuse) aide !
Cordialement
--
R : Parce qu'on lit, en général, de gauche à droite et de haut en bas.
Q : Pourquoi dois-je répondre en dessous de la question ?
Tout auto avec tes jours de vacances et/ou fériés dans une plage nommée "JrFs" Démarrer sur une cellule active contenat une date
Sub zz_X_Jours_Ouvrés() Application.ScreenUpdating = False If Not IsDate(ActiveCell) Then _ MsgBox "La cellule sélectionnée ne contient pas de date !": Exit Sub x = InputBox("Combien de jours ouvrés à écrire ?", "") If x = "" Then Exit Sub L = ActiveCell.Row + 1: C = ActiveCell.Column For Each cel In Range(Cells(L, C), Cells(L + x - 1, C)) dat = cel.Offset(-1, 0) * 1 + 1 While Weekday(dat + nb, 2) > 5 Or Weekday(dat + nb, 2) = 3 Or _ Evaluate("isnumber(match(" & dat + nb & ",JrFs,0))") = True nb = nb + 1 Wend cel.Value = dat + nb: nb = 0 Next End Sub
AV
pfff Wahoo quand tu te corrige tu ne le fait pas avec le dos de la cuillière !!!!
je vais l'essayer rapidement !
Merci !
Ok j'avais lu un peu vite la question
Tout auto avec tes jours de vacances et/ou fériés dans une plage nommée "JrFs"
Démarrer sur une cellule active contenat une date
Sub zz_X_Jours_Ouvrés()
Application.ScreenUpdating = False
If Not IsDate(ActiveCell) Then _
MsgBox "La cellule sélectionnée ne contient pas de date !": Exit Sub
x = InputBox("Combien de jours ouvrés à écrire ?", "")
If x = "" Then Exit Sub
L = ActiveCell.Row + 1: C = ActiveCell.Column
For Each cel In Range(Cells(L, C), Cells(L + x - 1, C))
dat = cel.Offset(-1, 0) * 1 + 1
While Weekday(dat + nb, 2) > 5 Or Weekday(dat + nb, 2) = 3 Or _
Evaluate("isnumber(match(" & dat + nb & ",JrFs,0))") = True
nb = nb + 1
Wend
cel.Value = dat + nb: nb = 0
Next
End Sub
AV
pfff Wahoo quand tu te corrige tu ne le fait pas avec le dos de la
cuillière !!!!
Tout auto avec tes jours de vacances et/ou fériés dans une plage nommée "JrFs" Démarrer sur une cellule active contenat une date
Sub zz_X_Jours_Ouvrés() Application.ScreenUpdating = False If Not IsDate(ActiveCell) Then _ MsgBox "La cellule sélectionnée ne contient pas de date !": Exit Sub x = InputBox("Combien de jours ouvrés à écrire ?", "") If x = "" Then Exit Sub L = ActiveCell.Row + 1: C = ActiveCell.Column For Each cel In Range(Cells(L, C), Cells(L + x - 1, C)) dat = cel.Offset(-1, 0) * 1 + 1 While Weekday(dat + nb, 2) > 5 Or Weekday(dat + nb, 2) = 3 Or _ Evaluate("isnumber(match(" & dat + nb & ",JrFs,0))") = True nb = nb + 1 Wend cel.Value = dat + nb: nb = 0 Next End Sub
AV
pfff Wahoo quand tu te corrige tu ne le fait pas avec le dos de la cuillière !!!!
je vais l'essayer rapidement !
Merci !
e.l.f
Bonsour® val.eric une solution simple sans macro
A1: "Date" B1 : "Jour" ----------------------------------- 1ere phase : toutes les dates d'une période en A2 tu rentres une date de début format "jjj j mmm aaaa" en B2 tu rentres la formule : =Joursem(A2;2) tu selectionnes A2:B2 et tu recopies vers le bas autant que tu veux ----------------------------------- 2eme phase : élagage des dates non désirées selectionner A1: Menu Données > Filtrer >Filtre automatique cliquer sur la petite fléche qui apparait en B1 choisir personnalisé dans les conditions : egal ------> 3 cocher le bouton radio Ou est supérieur ou égal à -----> 6 Ok
apparaissent alors les jours à exclure Menu Edition> Atteindre >cellules > Zone en cours selectionner alors toutes les lignes sauf la ligne 1 puis edition > supprimer la (les) ligne(s) ------------------------------------------- 3eme phase : désactiver alors le filtre selectionner les colonnes A et B puis trier colonne A ("Date") Ascendant
et voili !!!
si comme la précisé AV tu posséde une liste des jours de congés
la génération des dates peut avantageusement etre faite via la fonction Complémentaire Jours.ouvres avec en paramétre la liste des jours de congés @+
C'est vrai, le coup du filtre est trop fort, il y a plus de manip mais c'est tres clean, il faudrait vraiment que je m'astregne a chercher aussi ds cette direction !!
Merci !
Bonsour® val.eric
une solution simple sans macro
A1: "Date" B1 : "Jour"
-----------------------------------
1ere phase : toutes les dates d'une période
en A2
tu rentres une date de début
format "jjj j mmm aaaa"
en B2
tu rentres la formule : =Joursem(A2;2)
tu selectionnes A2:B2
et tu recopies vers le bas autant que tu veux
-----------------------------------
2eme phase : élagage des dates non désirées
selectionner A1:
Menu Données > Filtrer >Filtre automatique
cliquer sur la petite fléche qui apparait en B1
choisir personnalisé
dans les conditions :
egal ------> 3
cocher le bouton radio Ou
est supérieur ou égal à -----> 6
Ok
apparaissent alors les jours à exclure
Menu Edition> Atteindre >cellules > Zone en cours
selectionner alors toutes les lignes sauf la ligne 1
puis edition > supprimer la (les) ligne(s)
-------------------------------------------
3eme phase : désactiver alors le filtre
selectionner les colonnes A et B
puis trier colonne A ("Date") Ascendant
et voili !!!
si comme la précisé AV tu posséde une liste des jours de
congés
la génération des dates peut avantageusement etre faite
via la fonction Complémentaire Jours.ouvres avec en
paramétre la liste des jours de congés
@+
C'est vrai, le coup du filtre est trop fort, il y a plus de manip mais
c'est tres clean, il faudrait vraiment que je m'astregne a chercher
aussi ds cette direction !!
A1: "Date" B1 : "Jour" ----------------------------------- 1ere phase : toutes les dates d'une période en A2 tu rentres une date de début format "jjj j mmm aaaa" en B2 tu rentres la formule : =Joursem(A2;2) tu selectionnes A2:B2 et tu recopies vers le bas autant que tu veux ----------------------------------- 2eme phase : élagage des dates non désirées selectionner A1: Menu Données > Filtrer >Filtre automatique cliquer sur la petite fléche qui apparait en B1 choisir personnalisé dans les conditions : egal ------> 3 cocher le bouton radio Ou est supérieur ou égal à -----> 6 Ok
apparaissent alors les jours à exclure Menu Edition> Atteindre >cellules > Zone en cours selectionner alors toutes les lignes sauf la ligne 1 puis edition > supprimer la (les) ligne(s) ------------------------------------------- 3eme phase : désactiver alors le filtre selectionner les colonnes A et B puis trier colonne A ("Date") Ascendant
et voili !!!
si comme la précisé AV tu posséde une liste des jours de congés
la génération des dates peut avantageusement etre faite via la fonction Complémentaire Jours.ouvres avec en paramétre la liste des jours de congés @+
C'est vrai, le coup du filtre est trop fort, il y a plus de manip mais c'est tres clean, il faudrait vraiment que je m'astregne a chercher aussi ds cette direction !!