XL 2016 améliorer mon userform

PiLVaLK

XLDnaute Nouveau
Bonjour à tous les programmeurs,
Je m'amuse à développer des petits tableaux en VBA pour mon boulot et, là, je bloque un peu.
Mon but est de créer un formulaire de saisie le plus "user friendly" possible afin que les gens adhèrent au principe. Il s'agit là d'une application dont le but est de pouvoir alerter le plus efficacement possible les service de secours quand un avion/hélico/ULM/ovni quelconque qui a déposé un plan de vol dépasse un certain retard à l'arrivée.
Ca, globalement, à part un peu de mise en forme conditionnelle à revoir, ça ne marche pas trop mal.
Mon souci, c'est que j'utilise deux userforms. Le premier sert à la gestion "globale" des plans de vol et le second à l'introduction de nouveaux plans de vol via l'utilisation d'un bouton "NOUVEAU" sur le premier.
Ce que j'aimerais, c'est que, dans le premier userform, lorsque je saisis un numéro de plan de vol ou un indicatif qui n'existe pas, ça me renseigne une nouvelle ligne.
J'utilise des comboboxes pour ces deux valeurs dans le premier userform et des textboxes sur le second.
Devrais-je passer par des listboxes?
Je vous joins le fichier en PJ si vous avez envie de le bidouiller.
Attention, mon code est "dégueulasse" mais c'est normal : je ne suis pas très bon et je furète au fur et à mesure.
J'avais aussi une erreur 400 sur le bouton marron /rouge de droite qui me sert à renommer les feuilles et j'ai fait une bidouille qui semble fonctionner.
Les feuilles sont protégées mais il n'y a pas de mdp.
 

Pièces jointes

  • PLN VFR v2.xlsm
    162.1 KB · Affichages: 14

ChTi160

XLDnaute Barbatruc
Bonjour PiLVaLK
Déjà une trentaine d'affichage et rien en retour !
il faudrait peut-être mettre quelques données (anonymisées) dans quelques feuille (Date)
Quelques exemples si possibles de ce que tu as et ce que tu veux.
Bonne Continuation
Jean marie
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Il vaudrait mieux une seule feuille avec une plage mise sous forme de tableau et une colonne supplémentaire Date. Si le principe vous va, je vous équipe votre classeur des définitions d'objets ComboBoxLiées et ControlsAssociés permettant une programmation concise dans un seul UserForm permettant Ajout Modification et Suppression.
 

PiLVaLK

XLDnaute Nouveau
Tu as tout à fait raison Jean-Marie (si tu me permets de t'appeler ainsi),

J'ai donc renseigné 3 plans de vol (PLN) bidons.
Quand je clique sur le bouton gestion PLN en haut à gauche de la première feuille, ça m'ouvre un formulaire. Celui-ci me permet de mettre à jour le PLN avec tout ce dont j'ai besoin, pas de souci de ce côté là.
Je sélectionne le PLN qui m'intéresse en choisissant avec la combobox PLN ou Indicatif. La saisie semi-auto fonctionne également. Toutefois, le PLN DOIT exister sinon, j'ai une erreur d'execution 91 "variable objet ou variable de bloc with non définie".
SI je veux créer un nouveau PLN, je dois cliquer en bas à gauche du formulaire, sur le bouton "NOUVEAU".
Ca m'ouvre alors un nouveau formulaire qui fonctionne comme j'en ai besoin, pas de souci là non plus.
CE que j'aimerais faire, c'est que, si le numéro de PLN (ou l'inidcatif) n'existe pas quand je tape son numéro dans la combobox qui correspond, ça me crée automatiquement une nouvelle entrée dans la feuille.
J'ai mis le tableau complet mais seule la première feuille a son importance. Les autres ne sont là que pour les vols de la semaine à venir.
Si vous voulez vous amuser avec le tableau, il n'y a pas besoin de taper les ":" entre les heures et les minutes et les deux premiers chiffres de la date suffisent dans la case "DOF" (date of flight).
EN résumé, j'ai besoin d'aide pour contourner l'erreur d'execution 91.
Entretemps (premier post et celui-ci), j'ai déjà un peu repris le code du bouton marron : il est infiniment plus rapide !!

Merci pour les conseils

Phil
 

Pièces jointes

  • PLN VFR v2.xlsm
    165.8 KB · Affichages: 4

PiLVaLK

XLDnaute Nouveau
@Dranreb,
Je n'ai pas de souci avec la date, qui n'est pas pertinente hormis pour la programmation des vols futurs.
Le suivi (pour la diffusion de l'alerte), se fait en temps réel, c'est à dire au jour "J", pas "J+x".
Mon seul souci, parce que, même s'il est moche, mon code fait ce que je lui demande, est ce que j'essaye de résumer ci-dessus. C'est à dire, qu'il me crée une nouvelle entrée sur la feuille 1 si le PLN ou l'indicatif n'est pas déjà présent dans la base.
Et, plus que tout, même si je vous suis extrêmement reconnaissant pour la proposition, j'aimerais comprendre comment m'améliorer. Ce qui signifie que si vous améliorez vous-même mes comboboxes, je ne progresserai pas.
En plus, je vous avoue que je ne comprends pas bien ce que vous voulez dire dans votre première phrase. Surtout dans la mesure où je me base sur quatre heures différentes pour générer l'alerte : HED (heure estimée de départ), Durée (durée prévue du vol), DLA (message de modification de l'heure estimée de départ) et DEP (heure effective de départ). Ces 4 heures me donnent ensuite l'HEA (heure estimée d'arrivée), au delà de laquelle, à nouveau, trois délais sont pris en compte.

Merci en tout cas pour l'intérêt que vous portez à mon topic

Phil
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Alors voici quelques exemples d'utilisation des objets dont je parlais.
Comme vous pouvez le voir, l'essentiel est toujours défini dans la Sub UserForm_Initialize, les autre procédures étant généralement assez courtes.
 

Pièces jointes

  • CLsCAsContacts.xlsm
    195.6 KB · Affichages: 11
  • CLsCAsHMS.xlsm
    193.4 KB · Affichages: 9
  • CLsCAsHugoTR35.xlsm
    282.2 KB · Affichages: 12

PiLVaLK

XLDnaute Nouveau
Bon, finalement je n'y arrive pas...
Du coup, suis désolé de vous déranger à nouveau mais je reviens vers vous :
Tous ces modules de classe sont beaucoup trop complexes pour moi pour le moment. Je vais m'y pencher mais ça fait trois jours que j'essaye et que j'échoue. Je sais que je vais y arriver à un moment ou un autre mais je dois commencer plus "petit".
Cependant, je veux vraiment faciliter le travail de saisie pour améliorer le service rendu aux pilotes et à leurs passagers...
Du coup, Bernard "Dranreb" (j'avais pas compris ça non plus à la première lecture !!!), ET TOUS CEUX QUI VOUDRONT BIEN M'ECLAIRER, j'ai besoin de vos lumières.
Comment puis-je, simplement et sans modifier en profondeur ce code que, je l'avoue, j'ai déjà un peu galéré à créer, faire ce qui suit :
Si une valeur n'existe pas dans la source d'une de mes comboboxes, l'ajouter dans la liste ?
Le fichier est toujours le même mais je le remets ici pour limiter les scrollings inutiles
Bien cordialement,

Phil
 

Pièces jointes

  • PLN VFR v2.xlsm
    165 KB · Affichages: 5

Dranreb

XLDnaute Barbatruc
Bonjour.
Il n'est pas utile d'étudier le fonctionnement interne des modules de service, il suffit de savoir comment les utiliser.
Il y a une page d'aide dans la ressource destinée à s'installer en .xlam :
 

PiLVaLK

XLDnaute Nouveau
Bonjour Jean-Marie, ça se rapproche pas mal de ce que j'aimerais avoir à la fin.
Je ne comprends pas toutefois l'intérêt de la combobox que tu as rajoutée (Feuilles suivi).
En fait, je ne pense pas qu'elle me serve. En effet, les feuilles autres que celle du jour ne sont là que pour de la saisie et sont remplies grâce à la textbox "DOF si différente de la date du jour". Je vais toutefois la garder au cas où on aurait à modifier un PLN de lendemain pou du surlendemain.
En revanche, ce que l'UserForm ne fait pas, c'est ajouter une ligne quand la valeur entrée n'existe pas encore.
Je vais creuser de ce côté là.
Si tu as le temps de faire de même, c'est cool (je sais que ça ne se dit plus mais je suis né dans les seventies- je sais que ça ne se dit plus non plus !!).
Le but ultime, est de se séparer d'USerForm2 qui ne sert qu'a contourner le message d'erreur '91' que je n'ai déjà plus grâce à toi

Cordialement,

Phil
 

Pièces jointes

  • PLN VFR v2 (Chti160-revu PiLVaLK).xlsm
    196.9 KB · Affichages: 10

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390