Afficher le format de l'heure dans textbox, calculer 2 textbox
Bonsoir,
vous avez raison j'avais un problème sur mon pc et c'est réglé.
1) pour le formulaire OLA juste je n'arrive pas à supprimer le signe «€» dans les TextBox Montant/jour, Montant Total
2) pour le formulaire BOOKING je souhaite que le formulaire s'affiche dans la feuil3 "Réservation" à partir du bouton de commande "Réservation" pour insérer les données.
j'ai copié et modifié les codes de OLA dans le formulaire BOOKING et le module3 mais malheureusement à chaque fois j'ai des messages d'erreur "Erreur de compilation variable non définie cbQualite.List. En plus des complications dans le formulaire OLA.
Cordialement
Bonjour,
1) Dans module1, dans le tableau "gacCtrlsOLAFormats", il faut remplacer les formats "Currency" par "#,##0.00".
2) Les noms des contrôles du formulaire BOOKING ne sont pas en phase avec le code. Il faut que vous renommiez les contrôles dans le formulaire BOOKING pour qu'ils n'aient plus le nom générique "TextBoxn", "ComboBoxn", etc. mais le nom significatif ex: cbQualite.
Dans Module3, les 2 tableaux "gacCtrlsBOOKINGTypes" et "gacCtrlsBOOKINGFormats" doivent être cohérents avec "acCtrlsBOOKINGNoms"
Par ailleurs certaines variables sont définies en "Public" avec les mêmes noms dans le Module1 et le Module3, vous pouvez essayer de mettre la ligne du Module3 en commentaire, les 2 formulaires n'étant pas actifs simultanément il ne devrait pas y avoir de pbm même si ce n'est pas super propre.
Il faudrait regarder si ces variables sont nécessaires (et pas dangereuses) à un niveau Public, ex: la variable i est utilisée dans des boucles For à plein d'endroit et devrait plutôt être définie au niveau de la procédure où elle est utilisée. Un des intérêts d'avoir une variable Public est de pouvoir disposer directement de sa valeur dans différentes procédures / fonctions mais là cela ne me semble pas être le cas, on ne passe pas la valeur (ou pas volontairement), on ne fait que s'éviter de les redéclarer.
Je vous laisse reprendre ces éléments et apporter les corrections nécessaires et me revenir si nécessaire.
Cdlt,
Cylfo
Cher Cyflo Bonsoir, vous avez raison lorsque j'ai changé les noms j'avais un prob de la boucle For i dans les deux formulaires.
j'ai besoin de votre aide
Bonjour BK79,
J'ai mis (comme indiqué dans mon post précédent) en commentaire dans le module 3 la ligne de déclaration des variables public qui contient en autres la déclaration de i. A priori, les formulaires ont l'air de fonctionner correctement ... mais à tester de manière approfondie.
J'ai également renommé dans le module1 la procédure Rechercher() en RechercherOLA() car elle était définie avec le même nom dans les modules 1 et 3.
Bonsoir cher Mr,
Vraiment merci beaucoup pour votre assistance et suivi et explication
j'ai testé les formulaires tout va bien rien que j'ai constaté que dans le formulaire BOOKING il ne faut pas insérer les mêmes données
càd lorsque j'insère une même date + même marque de voiture + même num de série il m'affiche un message avec Beep "La voiture (indiquer la marque) est réservée".
En plus est-il possible de savoir quelles sont les voitures réservées et les voitures disponibles.
ce que je veux faire dépasse mes connaissances et je compte sur votre aide.
Merci
Bonjour,
Pour la demande " il m'affiche un message avec Beep "La voiture (indiquer la marque) est réservée", il me semblerait plus simple d'utilisation de renseigner d'abord les dates et heures de prise et de retour du véhicule et ensuite d'afficher les seuls véhicules (marque + n° de série) disponibles.
Qu'en pensez-vous ?
Bonjour, oui c'est plus logique et simple
Bonjour BK79,
Tant qu'à faire plus simple ... j'ai supprimé le formulaire Booking et le tableau des réservations
Je te laisse prendre connaissance des modifications et me dire si cela te convient. Si oui je mettrai en place le contrôle de disponibilité des véhicules au moment de la réservation et si non, je modifierai le fichier initial ...
Bonjour, cher cylfo
vraiment c'est impeccable merci beaucoup
Bonjour BK79,
De retour après une petite période de congé
Principe de fonctionnement :
- Le bouton (image de clé et de voiture) permet de lancer l'actualisation des véhicules disponibles via des requêtes Power Query dont les paramètres et les résultats sont stockés dans l'onglet "Paramètres".
- Ce bouton n'est accessible / visible que si les dates de début et de fin de location sont renseignées
- Le clic sur ce bouton exécute la procédure "MajListeVehicules" située dans le module "Module1" :
1 - Actualisation à partir des données du formulaire (tbCode, tbDateDebut, tbDateRetour) des paramètres stockés dans 3 tableaux (T_CODE, T_DT_DEBUT, T_DT_RETOUR) dans l'onglet "Paramètres".
2 - La commande VBA "ThisworkBook.RefreshAll" déclenche l'actualisation des requêtes PQ :
2.A - T_DT_DEBUT, T_DT_RETOUR et T_CODE récupèrent les paramètres stockés dans l'onglet "Paramètres"
2.B - T_LOCATIONS récupère les données clients (tableau T_LOCATIOONS de l'onglet "Location") et les filtre sur les critères "each [Code] <> T_CODE and [DATE DEBUT] <= T_DT_RETOUR and [DATE RETOUR] >= T_DT_DEBUT" donc on ne conserve que les données liées aux véhicules et n° de série qui ont une période ou une partie de période commune avec la demande de réservation.
2.C - T_NUMEROS_SERIE récupère les données du tableau "T_NUMEROS_SERIE" de l'onglet "Voitures".
2.D - T_MARQUES_DISPO ne conserve de la requête "T_NUMEROS_SERIE" que les lignes qui ne correspondent pas à celles filtrées par la requête "T_LOCATIONS" et uniquement la colonne "MARQUE VOITURE" en regroupant les lignes. Le résultat de cette requête est chargé dans le tableau "T_MARQUES_DISPO" de l'onglet "Paramètres".
2.E - T_NUMSER_DISPO ne conserve de la requête "T_NUMEROS_SERIE" que les lignes qui ne correspondent pas à celles filtrées par la requête "T_LOCATIONS". Les deux colonnes sont conservées et les données sont triées par marque et n° de série. Le résultat de cette requête est chargé dans le tableau "T_NUMSER_DISPO" de l'onglet "Paramètres".
3 - Je n'ai pas trouvé (je suis probablement passé à côté ...) de moyen "propre" de m'assurer que l'actualisation des requêtes était terminée. Donc il y a un bout de code qui ne me plait pas mais qui a pour fonction de s'assurer que l'actualisation est achevée, voir le commentaire dans la procédure.
4 - La combobox "cbMarque" est alimentée à partir du tableau "T_MARQUES_DISPO"
5 - Si une marque était déjà renseignée et qu'elle est présente dans la liste des véhicules dispos on la sélectionne dans la liste et dans ce cas, on charge la liste des n° de série associés au véhicule et si le n° de série est également renseigné et présent dans la liste, on le sélectionne.
Lorsqu'un véhicule est sélectionné dans la liste, la cellule "VB_cbMarque" dans l'onglet "Paramètres" est alimentée à partir de la valeur de "cbMarque" du formulaire et cette cellule est utilisée pour déterminer la plage des n° de série liés à ce véhicule (voir LST_NUMSERIE dans Formules / Gestionnaire de noms). La combobox "cbNumSerie" est ensuite réactualisée à partir de cette plage nommée (LST_NUMSERIE).
Lorsque les données sont chargées à partir de la ListView, les combobox sont uniquement alimentées à partir du véhicule et du n° de série, pour sélectionner un autre véhicule, il faut réactualiser la liste à l'aide du bouton.
Je te laisse prendre connaissance du code et tester. A ta disposition si tu as besoin d'informations complémentaires.
Cdlt,
Cylfo
Bonjour BK79,
J'ai omis une manip dans mes explications. Cette manip est nécessaire pour que les requêtes qui récupèrent les paramètres fonctionnent correctement.
Une fois que tu as ouvert le fichier Excel et avant de cliquer sur le bouton [Location] :
- Menu "Données" / "Requêtes et connexions", dans la fenêtre qui s'ouvre, faire un clic droit sur la 1ère requête et "Modifier" => l'éditeur Power Query s'ouvre.
- Dans l'éditeur, dans le menu "Fichier" sélectionner "Options et paramètrs" et "Options de requête".
- Dans la boîte de dialogue, sélectionner "Confidentialité" et cocher "Ignorer les niveaux de confidentialité ..." et cliquer sur [OK].
- Dans le menu "Fichier" sélectionner "Fermer et charger".
- Dans le fichier Excel, refermer la fenêtre "Requêtes et connexions".
- Sauvegarder le fichier.
Cdlt,
Cylfo
Bonjour, et Bon retour
Vraiment c'est très gentil de me revenir je suis entrai de tester le fichier. je vous remercie une autre fois.
Cdlt,
Bonjour, Cher Mr.
tout d'abord j'ai ajouté dans la feuil 2 (voitures) des autres lignes pour des autres voitures, supprimé les anciens clients et modifié les anciens dates de réservations
et ajoute des autres réservations au mêmes dates pour tester ce qui est disponible.
* le code (Num de client) n'a pas changé (a commencé a partir de 20...)
* a la dernière recherche de la dernière voiture le fichier m'a affiche un message de débogage : OLA.cbMarque.List = Feuil2.Range("LST_MARQUES_DISPO").Value
* s'il est possible d'ajouter une indication d'un montant de questionnement lors de location et de clôture (je ne sais pas est ce que il faut le créer comme textbox et comme ca si ca sera trop ?).
Cdlt,
Bonjour BK79,
J'ai corrigé le pbm qui générait le plantage, j'avais oublié
Concernant le num client, l'attribution se fait en incrémentant de 1 le num client max. Cela répond-il à votre question ?
Concernant la demande d'évolution, je n'ai pas compris "s'il est possible d'ajouter une indication d'un montant de questionnement" , pouvez-vous me donner plus d'indications ?
Cdlt,
Cylfo
Bonsoir,
1) concernant le numéro de client je préfère que lorsque je supprime une réservation la numérotation sera par ordre c.à.d. lors de suppression de client Num 5 il m'affiche le reste de 1 ..... n client disponibles par ordre croissant (pour le moment ca reste 1-2-3-4-6-9....).
2) l'heure de réservation est aussi très importante pour la disponibilité des voitures par exemple la date de retour de 15/07/2023 il ne m'affiche aucun véhicule disponible pourtant a 10h:00 du même jour j'ai retour des véhicules.
3) lors de location le client dépose un quotionnement ou garantie en cas de dégât pour réparation (un montant par exemple de 500 EUR) qui doit être affiché lors de location et de clôture.
je pense si on solde ces points le fichier sera prêt et complet
Cdlt,
Bonjour,
1) C'est réalisable mais :
- Plutôt que de supprimer les réservations qui sont annulées, une alternative serait d'ajouter un statut "Annulé" qui vous permettrait de garder la trace des annulations.
- La renumérotation ne donnera pas "... le reste de 1 ..... n client disponibles ..." mais uniquement le nombre de lignes non annulées ou, si vous supprimez toutes les locations qui sont clôturées, le nombre de locations en cours (ce qui ne donne ni le nombre de clients [1 même client pourrait avoir 2 réservations en cours], ni le nombre de véhicules disponibles [des réservations peuvent se chevaucher]).
- Cela complexifie un peu plus le code.
- Merci de confirmer l'option retenue (renumérotation / Ajout de statut)
2) Que se passe-t-il si vous avez un retour prévu à 10h00 qui est en retard et une location du même véhicule qui commence à 11h00 le même jour ? Vous prévoyez une marge horaire entre 2 locations ? (si oui de combien)
3) Ok pour la caution mais faut il prévoir une / des infos supplémentaires pour la gérer au retour (restitution, encaissement partiel ou total, ...) et dans ce cas précisez lesquelles.
Cdlt,
Cylfo
Bonsoir, Cher Monsieur,
* Je suis d'accord pour le statut réservation annulée.
* Pour la numérotation le statut annulation gardera les numéros des clients donc ca va résoudre le problème.
* ce que je veux dire pour le retour des véhicules c'est que l'heure lors de réservation qui est la même heure de retour pour compter 24h de location (1 jour)
c'est que le calcul considère la date de retour comme une journée exp. une réservation du 09/07/2023 jusqu'au 15/07/2023 qui la date de retour liée a l'heure de réservation par exemple a 10h:00 AM, a la même date de retour lorsque je clic sur l'image voiture (recherche de disponibilité) il ne m'affiche aucune voiture disponible pourtant j'ai des retour a 10h:00, bref la disponibilité des véhicules hors les dates sera aussi en fonction de l'heure de retour. Donc la question ce n'est pas de compter la marge que de calculer la disponibilité en fonction des dates et heure de réservation (je ne sais pas est ce que j'ai bien expliqué ou non).
* concernant le caution sera compté selon l'état de retour de véhicule et le nombre de kilométrage qui dépassera le 250 km/jour (si le client dépassera 250 km/jour le nombre de kilométrage consommé au delà de 250km/jour (kilométrage fixe et adapté) x nombre de jour de location sera compté en plus : exp 3 jour 250km/j = 750km et le client a consommé 850km le kilométrage en plus sera calculé 850km - 750 km = 100km (en plus) * 0.2 = 20 eur paiement en plus qui est une restitution partiel. donc s'il est possible j'ai besoin de restitution, encaissement partiel ou total.
Cdlt
Bonjour Bk9,
Le fichier joint comporte les modifications suivantes :
- La recherche des véhicules disponibles tient compte des heures de début Et de fin (nécessaire lorsqu'il y a plusieurs réservations dans le futur).
- Ajout du statut "Annulation". Si l'annulation est confirmée (message), le véhicule est remis à disposition et toutes les rubriques sont affichées.
- Ajout de la rubrique "Caution" affichée à partir du statut "Location"
- Modification du tableau des véhicules (T_PARK) : ajout de 2 colonnes "Coût jour" et "Coût km supp".
- "Coût jour" est utilisé pour alimenter automatiquement le coût journalier (il reste modifiable) et calculer coût total.
- "Coût km supp" est utilisé pour calculer le coût supplémentaire en case dépassement du forfait de 250 km journalier, le montant est dans une rubrique spécifique affichée à partir du statut "Clôture", le montant est modifiable. Pour le forcer à zéro, il faut saisir 0 (zéro) et pas simplement effacer la rubrique.
Cdlt,
Cylfo
Bonjour, Cher Monsieur,
Ca me fait plaisir de vous communiquer, merci pour votre support et suivi pour finaliser ce travail, vraiment c'est pro.
le fichier a répondu a tous mes besoins pour le moment, si j'aurais besoin d'aide je suis sur que vous n'allez pas hesiter de m'aider.
Cdlt,
Bonjour,
Merci pour ce retour 😊.
N'oubliez pas de clôturer le sujet et ... s'il y a une demande d'évolution, je n'ai pas d'exclusivité et il vaut mieux compter sur la communauté du forum que sur une seule personne.
cdlt,
Cylfo