Fonction date week end ou semaine + concatenation

Bonjour les amis,

J'ai réussi à créer les formules qui me permettent de regarder ligne par ligne si la date saisie est un samedi ou un dimanche et ensuite j'ai effectué une concaténation de type (WE + DATE) ou (SE +DATE).

Je cherche maintenant une fonction plus simple qui me permet de le faire MAIS en VBA.

Pouvez vous m'aider ?

Je joins un fichier pour plus de compréhension

A très vite

tu as oublié la PJ ...

Bonjour,

Pourquoi en VBA ? C'est un a-priori !

D'abord donne au moins ta formule. Il faut qu'on puisse l'évaluer. Ce qui exige qu'on la voit.

Et si ce n'est pas suffisant (s'il faut pouvoir juger dans son environnement, on redemandera un classeur...

Ceci étant, une formule pratique pour tester si une date est un samedi ou un dimanche est (date en A1) :

=MOD(JOURSEM(A1);7)<2

à intégrer bien sûr dans une formule plus large, car ce n'est là que la condition qui renvoie VRAI (si samedi ou dimanche) et FAUX (pour autres jours).

Cordialement.

Pourquoi en VBA, parce que je souhaite simplement automatiser au maximum les choses et aussi parce que le vba m'intéresse vivement.

J'ai joins mon fichier

Merci pour vos commentaires

Bonjour,

Une proposition de fonction personnalisée à utiliser dans une procédure.

Cette proposition est à tester et doit être adaptée à ton environnement.

Cdlt.

Public Function DEMO(sDt1 As String, sDt2 As String) As String
Dim dt As Date, dt1 As Date, dt2 As Date
Dim nDay As Byte
Dim sDay As String, sDate As String

    On Error GoTo fin

    dt1 = CDate(sDt1): dt2 = CDate(sDt2)
    If dt2 < dt1 Then
        DEMO = ""
        Exit Function
    End If

    If sDt2 = "" Then
        dt = dt1
    Else
        dt = dt2
    End If

    nDay = Application.Weekday(dt)
    sDate = Format(dt, "dd/mm")

    Select Case nDay
        Case 1, 7
            sDay = "WE"
        Case Else
            sDay = "SE"
    End Select

    DEMO = sDay & " " & sDate
    Exit Function

fin:
    DEMO = ""
    Exit Function

End Function

Merci beaucoup, je la teste de suite

Jean-Eric,

La fonction marche très bien lorsqu'il y a une date, cependant lorsque la date saisie est vide j'aurai souhaité qu'il prenne en compte la date de la pièce.

Sinon c'est parfait

Cordialement

Une seule formule suffit pour servir la colonne H.

=SI($A9="6112210";SI(MOD(JOURSEM(SI($C9<>"";$C9;$B9));7)<2;"WE ";"SE ")&SI($C9<>"";$C9;$B9);0)

NB: tu fais partie du club des "calcul manuel sans raison, et sans le dire quand on demande de l'aide" !

Je ne sais pas de quel club je fais partie en tout les cas j'essaye d'apprendre pour améliorer mon quotidien et c'est grâce à des personnes comme toi que cela est possible.

Merci encore

Ta formule fonctionne à merveille !

En VBA ça aurait été parfait, je vais essayer de me débrouiller avec la fonction qu'on m'a proposé...

Dossier à suivre

La fonction marche lorsqu'il y a des dates dans la colonne A et dans la colonne B mais ne fonctionne pas lorsque la colonne B n'a pas de date.

Pour résumer, si la colonne B n'a pas de date, il faut mettre la date de la colonne A et ensuite la suite de la fonction qui permet de concaténer...

Pourtant dans la fonction après une longue réflexion, les lignes ci-dessous me semblent justes.

If sDt2 = "" Then ' Si sDt2 égal vide alors (sDt2 = colonne B)

dt = dt1 ' dt = colonne A

Else ' sinon

dt = dt2 ' dt = Colonne B

End If ' Fin de si

Quelqu'un pourrais me guider svp ?

Re,

Une nouvelle proposition à tester.

Cdlt.

Public Function DEMO(sAccount As String, sDt1 As String, sDt2 As String) As String
Dim dt As Date
Dim nDay As Byte
Dim sDay As String, sDate As String

    If sAccount <> "6112210" Then
        DEMO = ""
        Exit Function
    End If

    On Error GoTo fin

    If sDt2 = "" Then
        dt = CDate(sDt1)
    Else
        dt = CDate(sDt2)
    End If

    nDay = Application.Weekday(dt)
    sDate = Format(dt, "dd/mm")

    Select Case nDay
        Case 1, 7
            sDay = "WE"
        Case Else
            sDay = "SE"
    End Select

    DEMO = sDay & " " & sDate
    Exit Function

fin:
    DEMO = ""
    Exit Function

End Function

Merci infiniment Jean eric

Je la teste en rentrant

À bientôt

Miloud

Bonsoir Jean-Eric,

Malheureusement ça fonctionne pas, j'ai pourtant nommé la colonne compte "sAccount" puis j'ai écrit la formule dans la colonne appropriée =DEMO(A12;C12;B12).

Vraiment désespéré...

Merci quand même Jean-Eric

Après une réflexion et un nouveau test, je tiens à te remercier de m'avoir débloquer.

Ta fonction fonctionne comme je le souhaitai.

Merci encore Jean-Eric et au plaisir

Cordialement

Miloud

Rechercher des sujets similaires à "fonction date week end semaine concatenation"