XL 2019 Base de données alimentée par un userform ne fonctionne pas

Yann71

XLDnaute Occasionnel
Bonsoir la com, bonsoir le forum.
Me voici avec un problème récurrent. J'ai une BD alimentée par un Userform. Si ma BD est vide, je ne peux l'alimentée avec l'userform,
par contre si dans les lignes A2 et A3 j'y inscrit des données directement dans ma BD, plus de problème, je peux alimenter par la suite depuis mon l'userform.
Donc en résumé pour que tout fonctionne je dois avoir au minimum 2 lignes remplie. Donc serait-il possible de faire en sorte que tout fonctionne même si
aucune donnée n'est inscrite dans ma BD.

Merci pour votre futur aide.
 

Pièces jointes

  • FORMULAIRE_3 - EN_CONSTRUCTION V4.xlsm
    51.9 KB · Affichages: 24

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour Dranreb
... "Promis je regarde ton projet plus tard, après un peu de sommeil et je te fais un retour.
A bientôt "
Comme promis cette nuit j'ai regardé ton projet :
Très abouti, je suis impressionné par les fonctionnalités et l'écriture.

Une seule remarque (mais là c'est pour pinailler un peu !) ;
Dans un ListObject vidé par ton application, s'il prend l'idée folle à l'utilisateur de décocher la ligne d'entête, patatras ça plante, ça supprime même l'objet tableau si l'utilisateur tente d'ajouter une ligne.
On peut peut-être s'en prémunir en vérifiant la propriété ShowHeaders du LisObject

Mais comme je dis, c'est une idée folle, qui pourrait penser à faire ça !!!

Amicalement
Alain
 
Dernière édition:

Yann71

XLDnaute Occasionnel
Bonjour Dranreb

Comme promis cette nuit j'ai regardé ton projet :
Très abouti, je suis impressionné par les fonctionnalités et l'écriture.

Une seule remarque (mais là c'est pour pinailler un peu !) ;
Dans un ListObject vidé par ton application, s'il prend l'idée folle à l'utilisateur de décocher la ligne d'entête, patatras ça plante, ça supprime même l'objet tableau si l'utilisateur tente d'ajouter une ligne.
On peut peut-être s'en prémunir en vérifiant la propriété ShowHeaders du LisObject

Mais comme je dis, c'est une idée folle, qui pourrait penser à faire ça !!!

Amicalement
Alain
Bonjour Alain,
Je te remercie pour ton commentaire, mais je dois ce formulaire à un tuto, je n'ai fait que copier le code. La seule chose personnel et d'avoir restructurer les lignes de code, d'adaptés les intitulés à la façon dont je travail et à la présentation de l'userform. Merci encore d'avoir pris le temps d'étudier mon projet.

Amicalement
Yann
 

Yann71

XLDnaute Occasionnel
Bonsoir.
Inspirez vous donc plutôt de celui-ci, il est presque pareil.
Bonjour Dranred, j'utilise ton fichier " CLsCAsContacts " qui est par ailleurs très intéressant et si complet. Je tiens à te remercier et te félicité pour ce travail.
J'ai pu ajouter des TextBox et ComboBox sans aucun soucis, mais là je me trouve confronté à un problème, c'est que je souhaite ajouter 2 autres ComboBox mais qui elles dépendent de liste déroulante en cascade.
Sur la feuille "Listes", j'ai un tableau avec des animaux et races que j'aimerai que ceux-ci soient intégré à l'UserForm. A noter que j'ai modifier la façon d'interagir avec la ComboBox "Civilité" en passant par " RowSource ".
Je te souhaite une bonne journée.

Amicalement Yann
 

Pièces jointes

  • V_1A.xlsm
    197.6 KB · Affichages: 5

Dranreb

XLDnaute Barbatruc
Bonjour.
Pour bénéficier du CLsCAS le Tableau3 n'est pas pratique. Moi j'y mettrais simplement 2 colonnes une pour l'animal, l'autre pour la race, les ferais gérer par un second ComboBoxLiées annexe appelé par exemple CLsA. Ce ne serait pas gênant à mon avis qu'on choisisse la race en premier.
De toutes façon si de nouvelles colonnes seront attribuées dans la BDD à ces deux ComboBox, il faudra les confier à CAs en plus de ce que vous ferez pour les gérer.
 

Yann71

XLDnaute Occasionnel
Bonjour.
Pour bénéficier du CLsCAS le Tableau3 n'est pas pratique. Moi j'y mettrais simplement 2 colonnes une pour l'animal, l'autre pour la race, les ferais gérer par un second ComboBoxLiées annexe appelé par exemple CLsA. Ce ne serait pas gênant à mon avis qu'on choisisse la race en premier.
De toutes façon si de nouvelles colonnes seront attribuées dans la BDD à ces deux ComboBox, il faudra les confier à CAs en plus de ce que vous ferez pour les gérer.
Bonsoir, je comprends bien ton explication, mais je ne serai le réaliser, mon niveau du code VBA est faible.
 

Dranreb

XLDnaute Barbatruc
J'en conclue que vous êtes d'accord pour cette solution alors.
Mais qu'est-ce qui vous bloque ?
Si vous n'essayez pas de le faire vous n'apprendrez pas comment le faire, vous ne comprendrez jamais comment ça marche si je n'ai pas l'occasion de vous dire pourquoi ce que vous essayeriez devait ne pas marcher.
Comment j'appelle le nouveau tableau des animaux ? Tableau3 ça ne veut rien dire ! Où j'insère les nouvelles colonne Animal et Race dans la BDD ?
 

Yann71

XLDnaute Occasionnel
J'en conclue que vous êtes d'accord pour cette solution alors.
Mais qu'est-ce qui vous bloque ?
Si vous n'essayez pas de le faire vous n'apprendrez pas comment le faire, vous ne comprendrez jamais comment ça marche si je n'ai pas l'occasion de vous dire pourquoi ce que vous essayeriez devait ne pas marcher.
Comment j'appelle le nouveau tableau des animaux ? Tableau3 ça ne veut rien dire ! Où j'insère les nouvelles colonne Animal et Race dans la BDD ?
Oui je suis d'accord pour cette solution. Vous avez entièrement raison l'apprentissage s'exerce par la pratique. Il faudrait insérer effectivement les nouvelles colonnes dans BDD.
 

Dranreb

XLDnaute Barbatruc
Je les ai insérées entre "Ville" et "Téléphone"
J'ai finalement appelé "TbCompagnon" l'ancien "Tableau3", maintenant sur 2 colonnes titrées "Animal" et "Race".
Et le ComboBoxLiées auxiliaire CLsCompagnon, sans attribut WithEvents puisqu'on n'a pas besoin de ses évènements.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Bon. Je joins le corrigé. Tâchez de le regarder après avoir essayé de faire ce que je disais, car c'était peu d'instructions à ajouter dans la Sub UserForm_Initialize, et ça ne remettait rien en cause du reste de la programmation derrière.
Remarque: il n'y a guère de règle dans les trigrammes utilisé comme préfixe des noms d'objets pour indiquer leur type. La prochaine fois tâchez d'appliquer ma règle simple :
Lorsqu'un nom de type comporte plusieurs majuscules, il prend la 1ère, la dernière et la dernière lettre. Exemple: CBn pour CommandButton
Lorsqu'il n'y en a qu'une il prend dans l'ordre 3 lettres du début sauf les "a".
Exemple: Rng pour Range
J'applique néanmoins 9 exceptions pour des raisons diverses : Cht pour Chart, Ckx pour CheckBox, Cln pour Collection, Ctr ou Ctl pour Control, Fle pour File, Fdr pour Folder, Lab pour Label, Wbk pour Workbook et Wsh pour Worksheet. Mais je n'aurais rien à y redire si elle était appliquée complètement.
 

Pièces jointes

  • CLsCAsYann71.xlsm
    177.5 KB · Affichages: 6

Yann71

XLDnaute Occasionnel
Bonjour.
Bon. Je joins le corrigé. Tâchez de le regarder après avoir essayé de faire ce que je disais, car c'était peu d'instructions à ajouter dans la Sub UserForm_Initialize, et ça ne remettait rien en cause du reste de la programmation derrière.
Remarque: il n'y a guère de règle dans les trigrammes utilisé comme préfixe des noms d'objets pour indiquer leur type. La prochaine fois tâchez d'appliquer ma règle simple :
Lorsqu'un nom de type comporte plusieurs majuscules, il prend la 1ère, la dernière et la dernière lettre. Exemple: CBn pour CommandButton
Lorsqu'il n'y en a qu'une il prend dans l'ordre 3 lettres du début sauf les "a".
Exemple: Rng pour Range
J'applique néanmoins 9 exceptions pour des raisons diverses : Cht pour Chart, Ckx pour CheckBox, Cln pour Collection, Ctr ou Ctl pour Control, Fle pour File, Fdr pour Folder, Lab pour Label, Wbk pour Workbook et Wsh pour Worksheet. Mais je n'aurais rien à y redire si elle était appliquée complètement.
Merci pour cette aide, je vais maintenant l'adapter à des multipages, car d'autres informations vont être inscrite. Question pourquoi utiliser cette manière d'affichage des préfixes.
 

Dranreb

XLDnaute Barbatruc
Parce qu'elle est simple et permet en général d'identifier tout de suite de quel type d'objet il s'agit.
1638018972836.png


—————————
Je trouve que les MultiPage (MPe) ne simplifient généralement rien coté utilisation, surtout quand la quantité de contrôles pour tout afficher tient dans un UserForm plus petit que la taille de l'écran.
 

Yann71

XLDnaute Occasionnel
Vous me déconseillez donc d'utiliser les MPe même si j'ai beaucoup d'informations à rentrer, car le tableau possèdera bien plus de colonne que dans le fichier traité jusque ici. Vous me conseillerez quoi, de créer 2 UserForm au lieu d'un MPe.
 

Discussions similaires

Réponses
27
Affichages
1 K

Statistiques des forums

Discussions
315 096
Messages
2 116 174
Membres
112 677
dernier inscrit
Justine11