Calendrier en fonction des jours choisis

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 !

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais votre aide pour afficher en colonne un calendrier en fonction des *jours choisis (*type Lundi,Mardi ect).

Par formule ou VBA, pas de contrainte.

voir fichier...

Merci pour votre aide.

Bien à vous,
Christian
 

Pièces jointes

Re : Calendrier en fonction des jours choisis

Bonjour,

Vois la proposition de formule en pièce jointe.

Il n'a pas été tenu compte des jours fériés, puisqu'il n'y en a pas sous le fichier.
A vérifier aussi s'il faut commencer le décompte des jours en B8 (tel que demandé) ou en B9 (tel l'exemple joint).
 

Pièces jointes

Re : Calendrier en fonction des jours choisis

Re, le forum, Hoerwind,

Merci, Hoerwind, pour ton travail.

J'ai ajouté une feuille avec un tableau nommé "fériés".

Lorsque j'enlève ou je rajoute des jours dans la zone de choix (en jaune) rien ne se passe dans le calendrier??? peux-tu me dire..

Bien à toi,
à+

Christian
 

Pièces jointes

Re : Calendrier en fonction des jours choisis

Bonjour à tous,

Si tu veux "accélérer" l'excellent code de Softmama :

Code:
Sub Masquer()
Dim c As Range
Application.ScreenUpdating = 0
Application.Calculation = xlCalculationManual
For Each c In Range([B10], [B65536].End(xlUp))
    Ok = False
    For Each d In [C5:K5]
        If UCase(d(1, t)) = UCase(Format(c, "dddd")) Then Ok = True
    Next d
    For Each d In [fériés]
        If d = c Then
            If [J5] = "" Then Ok = False
        End If
    Next d
    c.EntireRow.Hidden = IIf(Ok, False, True)
Next c
Application.Calculation = xlCalculationAutomatic
End Sub
A++
A+ à tous
 
Re : Calendrier en fonction des jours choisis

Re, Bonsoir le forum,

Je souhaiterais, à nouveau, votre aide pour l'écriture d'une macro.

J'ai gardé le même fil, la base de l'idée est identique mais le résultat souhaité est assez différent.

Je remercie à nouveau, Softmama et JCGL, pour leur travail sur le fichier précédent, qui fonctionne parfaitement.


Voir nouveau fichier joint.

Merci pour votre aide
Bien à vous

Christian
 

Pièces jointes

Re : Calendrier en fonction des jours choisis

Bonsoir à tous,

modif du code ainsi
VB:
Sub Masquer()
Dim c As Range, d As Range, e As Range, f As Range
Dim Repas(3), Ok(3)
Repas(1) = "P.Déj": Repas(2) = "Midi": Repas(3) = "Soir"
Application.ScreenUpdating = 0
Application.Calculation = xlCalculationManual
Set c = Sheets("Calendrier").[C9]
Set e = Sheets("Dates").Range("A4").End(xlToRight).Offset(0, 1)
Do While c <> ""
    Ok(1) = False: Ok(2) = False: Ok(3) = False
    For Each d In Sheets("Calendrier").[D5:J5]
        If UCase(d) = UCase(Format(c, "dddd")) Then
            For t = 1 To 3
                Ok(t) = IIf(d(1 + t, 1) = Repas(t), True, False)
            Next t
        End If
    Next d
    For Each f In Sheets("Fériés").[fériés]
        If f = c Then
            If [K5] <> "Fériés" Then
                For t = 1 To 3: Ok(t) = False: Next t
            End If
        End If
    Next f
    For t = 1 To 3
        c(t, 1).EntireRow.Hidden = IIf(Ok(t), False, True)
        If Ok(t) Then
            e = Format(c, "ddd d mmm") & " " & Repas(t)
            Set e = e(2, 1)
        End If
    Next t
    Set c = c(4, 1)
Loop
Application.Calculation = xlCalculationAutomatic
End Sub
Vois les modifs en fichier joint :
 
Dernière édition:
Re : Calendrier en fonction des jours choisis

Re, le forum, Sofmama,

Quel boulot!!!, je te remercie, Softmama, pour ce gros travail.

Dis moi, Softmama, quand j'efface tout dans la feuille d'export "Date", j'ai un message d'erreur. Faut-il que je laisse une colonne de données ?

Merci pour le beau boulot, c'est super.

Bien à toi, l'artiste.

à+
Christian
 
Re : Calendrier en fonction des jours choisis

Bonsoir,

Oui, c'est normal l'erreur, ça provient du

Code:
Set e = Sheets("Dates").Range("A4").End(xlToRight).Offset(0, 1)

qui prend la cellule A4, et trouve la prochaine cellule sur sa droite où y a des données... Vu que t'as tout effacé, il pointe sur la dernière cellule de la ligne soit [IV4] et le .offset(0,1) choisit la cellule directement à sa droite, et là oops erreur y en a plus. Pour corriger ceci, tu peux remplacer cette ligne par

VB:
if [B4] = "" then
    if [A4] = "" then
        set e = [A4]
    else
        set e = |B4]
    end if
else
    Set e = Sheets("Dates").Range("A4").End(xlToRight).Offset(0, 1)
end if
 
- 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

Discussions similaires

Réponses
14
Affichages
766
Réponses
5
Affichages
135
Réponses
3
Affichages
211
Retour