+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14
  1. #1
    Futur Membre du Club
    Inscrit en
    avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 50
    Points : 19
    Points
    19

    Par défaut

    Bonjour,

    J'explique ce que je cherche à faire. J'ai actuellement un formulaire sur lequel j'entre une date de début, et une date de fin de formation au format 00/00/0000 gràçe à des calendriers.

    Une formation ne peut durer plus d'une semaine (donc 5 jours). J'ai donc des contrainte m'empechant de valider une formation si elle dure plus de 5 jours.
    Actuellement, je n'ai pas ainsi de soucis si celle-ci s'étend sur une même semaine, mais le soucis est si je veut une formation, par exemple du mercredi au mardi de la semaine suivante...Il me dit que ça fait plus de 5 jours, forcement, il me compte mercredi, jeudi ,vendredi, samedi, dimanche, lundi, mardi....

    Seulement, il n'y a bien sur aucune formation possible le week-end. Alors comment faire pour qu'il ne prenne pas en compte le samedi et le dimanche, et que donc si je choisi une date de début le mercredi , et une date de fin le mardi d'après, il me compte bien:
    Mercredi, jeudi, Vendredi, lundi, mardi..

    J'aimerais rajouter aussi que j'ai une ligne qui affiche tous les jours dans cet intervalle.

    Par exemple, si j'ai une formation du mercredi 18 avril au mardi 24, je voudrais avoir dans la ligne A:

    A1
    Mercredi 18 avril 2012

    A2
    Jeudi 19 avril 2012

    A3
    Vendredi 20 avril 2012

    A4
    Lundi 21 avril 2012

    A5
    Mardi 22 avril 2012


    Merci d'avance pour votre aide!

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 994
    Points : 2 100
    Points
    2 100

    Par défaut

    Alors, il y a deux choses dans ta question.

    - Calcul du nombre de jours : Tu as regardé du coté de WorkDays ? Je crois qu'elle n'est pas disponible pas défaut selon les version d'Excel, mais google est ton ami.
    - Affichage des dates : C'est en formule Excel ou en VBA ? Dans tous les cas, une petite condition devrait suffir avec un WeekDay. Si c'est vendredi tu ajoutes 3 jours, sinon 1 seul.

    Je ne pourrais pas t'en dire plus car je manque un peu de détails sur le fonctionnement de ton outil.
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  3. #3
    Futur Membre du Club
    Inscrit en
    avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 50
    Points : 19
    Points
    19

    Par défaut

    Bon alors pour faire simple, j'ai un formulaire qui par deux calendriers, me permet d'avoir deux dates, une date de début et une date de fin (DTPicker1 et DTPicker2)


    J'ai pensé à Workday, mais quand je fait
    Code :
    1
    2
    3
    datedebut= DTPicker1.Value
    datefin=DTPicker2.Value
    WorksheetFunction.WorkDay(Datedebut, DateFin)
    j'obtient un résultat étrange, du style 98451, et non un intervalle.

    Et pour afficher les dates de l'intervalle, l'outils fait un truc tout moche (ça a été fait par un débutant en vb :p):

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    '---Recuperation, mise en forme et ajout des dates
    DateDebut = Format(DTPicker1.Value, "dd mmmm yyyy")
    DateFin = Format(DTPicker2.Value, "dd mmmm yyyy")
     
    DateJour1 = Format(DTPicker1.Value, "dddd dd mmmm yyyy")
    DateJour2 = Format(DateAdd("d", 1, DTPicker1.Value), "dddd dd mmmm yyyy")
    DateJour3 = Format(DateAdd("d", 2, DTPicker1.Value), "dddd dd mmmm yyyy")
    DateJour4 = Format(DateAdd("d", 3, DTPicker1.Value), "dddd dd mmmm yyyy")
    DateJour5 = Format(DTPicker2.Value, "dddd dd mmmm yyyy")
     
    Range("C5").Value = DateJour1
     
    If DTPicker1.Value <> DTPicker2.Value Then
    Range("E5").Value = DateJour2
     
    If DTPicker2.Value - DTPicker1.Value > 1 Then
    Range("G5").Value = DateJour3
     
    If DTPicker2.Value - DTPicker1.Value > 2 Then
    Range("I5").Value = DateJour4
     
    If DTPicker2.Value - DTPicker1.Value > 3 Then
    Range("K5").Value = DateJour5
    End If
    End If
    End If
    End If

    Il doit y avoir un moyen de faire mieux que ça pour afficher les dates dans l'intervalle de datedebut et datefin, tout en excluant les samedi et dimanche?

  4. #4
    Expert Confirmé Sénior Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    décembre 2006
    Messages
    3 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : décembre 2006
    Messages : 3 983
    Points : 8 314
    Points
    8 314

    Par défaut

    Bonjour,
    voir du coté de "NETWORKDAYS" en VBA ou "NB.JOURS.OUVRES" avec excel

    Bonne journée
    Cordialement,
    Dom

    N'oubliez pas que les membres qui vous répondent sont des participants bénévoles !
    Merci de votre visite et ... n’oubliez pas le guide, en cliquant (en bas des réponses) sur si content, sur rien du tout si pas satisfait, sinon sur si pas content mais alors pas content du tout

  5. #5
    Expert Confirmé Sénior

    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    juin 2006
    Messages
    2 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : juin 2006
    Messages : 2 773
    Points : 7 052
    Points
    7 052

    Par défaut

    Salut, par curiosité vas voir ici tu y verras un calendrier annuel sans Samedi Dimanche ni jours fériés et l'utilisation de Weekday
    Pensez à Voter, d'avance merci.
    Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
    Autres utilitaires : MZ Tools 3.0 VBA 7Zip et Compacter projets VBA

    Contributions : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator et Téléchargements

  6. #6
    Expert Confirmé Sénior

    Homme Profil pro
    Engineering
    Inscrit en
    février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : février 2008
    Messages : 3 900
    Points : 7 754
    Points
    7 754

    Par défaut

    Bonjour,

    Pour compléter tout ce qui vient de se dire, un petit exemple de l'utilisation de la fonction NB.JOURS.OUVRES en VBA
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
    Dim Ddeb As Date, Dfin As Date, Jferie As Range
     
    Ddeb = "26/04/2012" '<-- date de début
    Dfin = "03/05/2012" '<-- date de fin
    Set Jferie = Sheets("Feuil2").Range("A1:A10") '<-- plage contenant les jours fériés (par exemple le 01/05/2012)
     
    'résultat sans tenir compte des jours fériés
    MsgBox Application.WorksheetFunction.NetworkDays(Ddeb, Dfin)
     
    'résultat en tenant compte des jours fériés
    MsgBox Application.WorksheetFunction.NetworkDays(Ddeb, Dfin, Jferie)
     
    End Sub

  7. #7
    Futur Membre du Club
    Inscrit en
    avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 50
    Points : 19
    Points
    19

    Par défaut

    Effectivement, je viens d'essayer la fonction NetWorkDay, cela fonctionne. Mon premier soucis est donc réglé, merci beaucoup .

    Maintenant, reste ma 2nd question, qui je vous rappele concerne l'affichage dans une ligne d'un tableau de tous les jours de la formation au format "Vendredi 26 avril 2012".

    Pour le moment, ça fonctionne ainsi (c'est moche^^) et ça affiche même les samedi et dimanches...:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    '---Recuperation, mise en forme et ajout des dates
    DateDebut = Format(DTPicker1.Value, "dd mmmm yyyy")
    DateFin = Format(DTPicker2.Value, "dd mmmm yyyy")
     
    DateJour1 = Format(DTPicker1.Value, "dddd dd mmmm yyyy")
    DateJour2 = Format(DateAdd("d", 1, DTPicker1.Value), "dddd dd mmmm yyyy")
    DateJour3 = Format(DateAdd("d", 2, DTPicker1.Value), "dddd dd mmmm yyyy")
    DateJour4 = Format(DateAdd("d", 3, DTPicker1.Value), "dddd dd mmmm yyyy")
    DateJour5 = Format(DTPicker2.Value, "dddd dd mmmm yyyy")
     
    Range("C5").Value = DateJour1
     
    If DTPicker1.Value <> DTPicker2.Value Then
    Range("E5").Value = DateJour2
     
    If DTPicker2.Value - DTPicker1.Value > 1 Then
    Range("G5").Value = DateJour3
     
    If DTPicker2.Value - DTPicker1.Value > 2 Then
    Range("I5").Value = DateJour4
     
    If DTPicker2.Value - DTPicker1.Value > 3 Then
    Range("K5").Value = DateJour5
    End If
    End If
    End If
    End If
    Comment améliorer ça en n'affichant pas les week-ends?

  8. #8
    Expert Confirmé Sénior

    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    juin 2006
    Messages
    2 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : juin 2006
    Messages : 2 773
    Points : 7 052
    Points
    7 052

    Par défaut

    Salut, égalment pour infos voir ceci
    Pensez à Voter, d'avance merci.
    Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
    Autres utilitaires : MZ Tools 3.0 VBA 7Zip et Compacter projets VBA

    Contributions : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator et Téléchargements

  9. #9
    Expert Confirmé Sénior Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    décembre 2006
    Messages
    3 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : décembre 2006
    Messages : 3 983
    Points : 8 314
    Points
    8 314

    Par défaut

    Et tu ne pouvais pas adapter ce que je t'ai déjà donné, en ajoutant une condition ?

    http://www.developpez.net/forums/d12...ine-caractere/
    Cordialement,
    Dom

    N'oubliez pas que les membres qui vous répondent sont des participants bénévoles !
    Merci de votre visite et ... n’oubliez pas le guide, en cliquant (en bas des réponses) sur si content, sur rien du tout si pas satisfait, sinon sur si pas content mais alors pas content du tout

  10. #10
    Futur Membre du Club
    Inscrit en
    avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 50
    Points : 19
    Points
    19

    Par défaut

    Si justement, c'est ce que je suis en train d'essayer de faire^^. Au passage j'ai oublié de te remercier hier .

    Mais c'est justement au niveau de la condition que je bloque (gros débutant en vb).

  11. #11
    Expert Confirmé Sénior Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    décembre 2006
    Messages
    3 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : décembre 2006
    Messages : 3 983
    Points : 8 314
    Points
    8 314

    Par défaut

    A adapter
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub remplirdates()
    Dim x As Long, tb(), y As Long
    y = 0
    For x = Range("A1") To Range("B1")
      If WorksheetFunction.Weekday(x, 2) <> 6 And WorksheetFunction.Weekday(x, 2) <> 7 Then
        y = y + 1
        ReDim Preserve tb(1 To y)
        tb(y) = x
      End If
    Next x
    Range("C1:C" & UBound(tb)) = WorksheetFunction.Transpose(tb)
     
    End Sub
    Cordialement,
    Dom

    N'oubliez pas que les membres qui vous répondent sont des participants bénévoles !
    Merci de votre visite et ... n’oubliez pas le guide, en cliquant (en bas des réponses) sur si content, sur rien du tout si pas satisfait, sinon sur si pas content mais alors pas content du tout

  12. #12
    Futur Membre du Club
    Inscrit en
    avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 50
    Points : 19
    Points
    19

    Par défaut

    Merci casefayere , cela repond à ce que je cherche. Par contre, pour une raison qui m'échappe encore, cela bug quand je selectionne une plage de 5 jours (il ne m'affiche que les 3 premiersà, alors que si je selectionne une plage de 1 à 4 jours aucun soucis.

  13. #13
    Expert Confirmé Sénior Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    décembre 2006
    Messages
    3 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : décembre 2006
    Messages : 3 983
    Points : 8 314
    Points
    8 314

    Par défaut

    quand je selectionne une plage de 5 jours (il ne m'affiche que les 3 premiers
    tout dépend de tes dates, exemple :
    - Nous sommes le jeudi 26/4
    - ta date de depart = 25/4
    - ta date de fin = 29/4
    tu n'auras que 3 jours

    Est-ce le problème ?
    Cordialement,
    Dom

    N'oubliez pas que les membres qui vous répondent sont des participants bénévoles !
    Merci de votre visite et ... n’oubliez pas le guide, en cliquant (en bas des réponses) sur si content, sur rien du tout si pas satisfait, sinon sur si pas content mais alors pas content du tout

  14. #14
    Futur Membre du Club
    Inscrit en
    avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 50
    Points : 19
    Points
    19

    Par défaut

    C'est bon, j'ai finallement réussi ce que je cherchais faire. Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •