1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Aide pour un calendrier de prêt

Discussion dans 'Forum Excel' démarrée par pa226, 7 Février 2019.

  1. pa226

    pa226 XLDnaute Nouveau

    Inscrit depuis le :
    7 Février 2019
    Messages :
    3
    "J'aime" reçus :
    0
    Bonjour je travaille sur un fichier de prêt d'outils. j'aimerais votre opinion sur comment aborder mon problème.
    Voila; dans mon tableur, j'ai une liste d'outils et la quantité que j'ai. J'ai ensuite un autre tableau contenant la date de sortie de l'outil, la date de retour et l'outil en prêt. J'aimerais être capable de détecter les conflits de prêt.

    Est-ce que je commence par trouver les outils en double dans le tableau de prêt et ensuite pour chaque doublon je compare les dates pour détecter les conflits ou est-ce que je commence par trouver les dates conflictuelle pour ensuite vérifier si pour chaque date conflictuelle il s'agit d'un outil en double?

    En VBA, est-il possible de définir un range entre 2 dates?

    Si la question vous semble confuse, c'est normal car je le suis!
     

    Pièces jointes:

  2. Chargement...

    Discussions similaires - Aide calendrier prêt Forum Date
    XL 2016 Remplir une fiche à l'aide d'un userform-calendrier Forum Excel 6 Janvier 2019
    Besoin d'aide pour création calendrier automatique Forum Excel 17 Octobre 2018
    Toutes versions Besoin d'aide pour formule tenant compte d'un calendrier perpétuel et de 2 dates (début et fin) Forum Excel 18 Août 2018
    XL 2016 Aide calendrier et jours feriés Forum Excel 5 Décembre 2017
    XL 2016 Aide sur Calendrier Forum Excel 12 Février 2017

  3. tatiak

    tatiak XLDnaute Accro

    Inscrit depuis le :
    25 Février 2005
    Messages :
    1973
    "J'aime" reçus :
    295
    Habite à:
    Morbihan
    Page d'accueil :
    Utilise:
    Excel 2016 (PC)
    Bonjour Pa226,

    Pour un besoin quasi-similaire, je peux proposer ce fichier joint.
    Ici il s'agit de location de vélo, mais on peut remplacer les réf des vélo par des réf de matériel quelconque.

    Dans ce fichier quand on essaye d'attribuer une référence sur un créneau déjà pris, il y a un message d'alerte qui signale son indisponibilité.

    Ca pourrait peut être répondre au besoin?
    Pierre
     

    Pièces jointes:

    arthour973 aime votre message.
  4. JM27

    JM27 XLDnaute Occasionnel

    Inscrit depuis le :
    6 Octobre 2015
    Messages :
    435
    "J'aime" reçus :
    26
    Utilise:
    Excel 2010 (PC)
    Bonjour
    ci joint un fichier réalisé il y a quelques années ,qui peut, peut être t'aider
     

    Pièces jointes:

  5. pa226

    pa226 XLDnaute Nouveau

    Inscrit depuis le :
    7 Février 2019
    Messages :
    3
    "J'aime" reçus :
    0
    Merci pour votre réponse, oui ça ressemble à ce que je cherche et vous y avez mis beaucoup de travail! Veuillez m'excuser mais je suis débutant en vba. C'est la mécanique du code qui m'intéresse surtout. J'aimerais comprendre comment la feuille de travail sait si le vélo est disponible ou non pour une date donnée, comment sont stocker les données de disponibilité et comment elles sont extraite.

    Merci
     
  6. tatiak

    tatiak XLDnaute Accro

    Inscrit depuis le :
    25 Février 2005
    Messages :
    1973
    "J'aime" reçus :
    295
    Habite à:
    Morbihan
    Page d'accueil :
    Utilise:
    Excel 2016 (PC)
    La question est intéressante.

    La méthode que j'utilise pour ce type de besoin passe par une variable tableau (au sens programmation)
    cf par exemple => https://silkyroad.developpez.com/vba/tableaux/

    Dans cet exemple pour les locations de vélo, les infos "location" sont externalisées dans un simple fichier texte.
    L'idée principale est d'obtenir un fichier Excel "léger" et qui le reste dans le temps.
    Un autre avantage est de pouvoir upgrader le fichier "appli" (si nécessaire) sans toucher aux données.

    Pour revenir au sujet :
    A l'ouverture du fichier, on lit les données et on les place dans un tableau (à 2 dimensions) nommé ici "TLoc"
    A chaque nouvel enregistrement, on ajoute les nouvelles données à ce tableau.
    Pour vérifier une dispo, il suffit alors de boucler sur l'ensemble des données existantes pour vérifier si une réf est occupée dans le créneau horaire indiqué => cf "Function Dispo-Ok"

    Voici le code commenté de cette fonction :
    Code (Visual Basic):
    ' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
    Function Dispo_Ok() As Boolean
    Dim Dt1 As Single, Dt2 As Single, Dloc1 As Single, Dloc2 As Single
    Dim ref As String, i As Long

        Dispo_Ok = True ' à priori la réf est dispo
        With Usf_Fiche
            'calcul de la date+heure de départ et de retour au format 'single'
            Dt1 = CSng(CDate(.TextBox4.Value))
            Dt2 = CSng(CDate(.TextBox5.Value))
            If Not .TextBox6.Value = "" Then Dt1 = Dt1 + CSng(CDate(.TextBox6.Value))
            If Not .TextBox7.Value = "" Then Dt2 = Dt2 + CSng(CDate(.TextBox7.Value))
            If Dt1 = Dt2 Then Dt2 = Dt2 + 1
       
            ref = .TextBox2.Value   ' réf du vélo
            For i = 2 To UBound(TLoc, 1)    ' boucle sur l'ensemble des réservations existantes
                'calcul de la date+heure de départ et de retour au format 'single' des réservations existantes
                Dloc1 = CSng(CDate(TLoc(i, 4)))
                Dloc2 = CSng(CDate(TLoc(i, 5)))
                If Not TLoc(i, 6) = "" Then Dloc1 = Dloc1 + CSng(CDate(TLoc(i, 6)))
                If Not TLoc(i, 7) = "" Then Dloc2 = Dloc2 + CSng(CDate(TLoc(i, 7)))
                If Dloc1 = Dloc2 Then Dloc2 = Dloc2 + 1
           
                ' vérification si la nouvelle réservation est "compatible" avec celles existantes
                If ref = TLoc(i, 2) And Not .TextBox1.Value = TLoc(i, 1) Then
                    If Not (Dloc2 <= Dt1 Or Dloc1 >= Dt2) Then Dispo_Ok = False
                    ' Dispo_Ok = False => si même réf et superposition des dates+heures
                End If
            Next i
            .Label_dispo.Visible = Not Dispo_Ok
        End With
    End Function
    De cette façon, le tout est dynamique (fondamentalement, il n'y a pas de statut "occupé" ou "libre" puisque ça dépend du créneau date-horaire)


    Pour des données se trouvant sur une feuille du classeur, il suffirait d'alimenter le tableau TLoc par un code genre :
    Code (Visual Basic):
        With Sheets("Feuil1")
            lg = .Cells(Rows.Count, 1).End(xlUp).Row
            cl = .Cells(1, Columns.Count).End(xlToLeft).Column
            TLoc = .Range(.Cells(1, 1), .Cells(lg, cl)).Value
        End With
    Dans ce fichier le code est ouvert, on peut donc fouiller dedans sans soucis.

    Bon week-end
    Pierre
     
  7. pa226

    pa226 XLDnaute Nouveau

    Inscrit depuis le :
    7 Février 2019
    Messages :
    3
    "J'aime" reçus :
    0
    Merci beaucoup Pierre, c'est très généreux de votre part. Je vais prendre le temps de digérer le code et bidouiller quelque chose pour mon projet!
     

Partager cette page