XL 2010 La feuille Tableau référentiels menus reste vide

Statut
N'est pas ouverte pour d'autres réponses.

BUDGETS

XLDnaute Impliqué
Bonjour,
Clic sur Valider saisie référentiels menus de la feuille saisie référentiels menus, l'enregistreement semble fonctionner mais le tableau référentiels menus reste vide.
Merci à celle ou à celui qui m'indiquera l'erreur commise pour que le transfert ne se fasse pas.
Bonnes soirée et continuation à toutes et à tous.
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Il ne faut pas travailler avec des End(xlUp) avec les tableaux Excel. Supprimez toutes les lignes vides et utiliser le ListObject.
Le mieux c'est de le définir dans une variable déclarée Dim LOt As ListObject
LOt.ListRows.Add.Range vous donnera un objet Range représentant une ligne ajoutée à la fin.
Et le plus simple c'est d'affecter à sa Value un tableau dynamique d'une ligne.
 

BUDGETS

XLDnaute Impliqué
Bonjour Dranreb,

J'espère que vous allez bien.

C'est la première fois que je vois ce fichier. Par ailleurs, comment m'en servir pour saisir mes données ?
Bonnes journée et continuation.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Vous allez sur la feuille Fiche, tapez votre critères dans les ComboBox de l'Userform, vous continuez en saisssant le reste dans la feuille, enfin vous cliquez sur le bouton du milieu dans l'UserForm.
 

BUDGETS

XLDnaute Impliqué
Public Function Count() As Long
On Error Resume Next: Count = UBound(TCBM)
End Function

L'indice n'appartient pas à la sélection
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Désolé de répondre si tardivement, je n'avais plus de connexion internet depuis hier en fin de matinée.
Cette erreur ne peut se produire que si, dans Visual Basic, menu Outils, onglet Général, rubrique Récupération d'erreur, l'option cochée est :
Arrêt sur toute les erreurs. Avec Arrêt sur les erreurs non gérées, ça passerait. Mais moi je vous conseille même de cocher
Arrêt dans le module de classe pour pouvoir continuer de voir l'instruction qui plante si c'est dans un module objet.
 

BUDGETS

XLDnaute Impliqué
Bonjour Dranreb,

Ce n'est pas grave d'avoir répondu tardivement. Je compatis à ton problème de ne plus avoir eu de connexion à Internet. J'ai fait la manipulation dont vous m'avez parlé dans votre message. Le problème a disparu. Merci.
1) Dans la feuille Fiche, puisse-je créer des validations des données ?
2) Dans la feuille Fiche, dois-je créer un bouton afin de valider mes différents champs, avec une macro ?
Pour l'instant, je n'ai pas bien compris le fonctionnement de la feuille fiche.
 

Dranreb

XLDnaute Barbatruc
1) — Oui. Mais on pourrait être obligé de les déplacer si on ajoutait où supprimait des colonnes. Attention, des valeurs trouvées dans la base non prévues dans les listes de validation pourraient gêner le fonctionnement.
2) — Non. Le bouton Ajouter ou Modifier de l'UserForm suffit. Évitez de modifier dans la fiche les valeurs saisies dans les ComboBox: ça pourrait rendre caduque le résultat de la vérification préalable d'existence, or il n'y a pas actuellement de verrouillage de ces cellules.

La vraie solution serait quand même plutôt de se dessiner un UserForm personnalisé avec des TextBox pour les champs modifiables, et de ne plus faire cette mise à jour dans une fiche faite de cellules d'une feuille.
Si vous voulez, je pourrais aussi perfectionner cet UserForm automatique pour qu'il se mette tout seul des TextBox pour ça.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Je réalise que ce que vous n'avez sans doute pas compris, c'est que l'UserForm doit rester affiché pendant qu'on modifie les autres infos dans la feuille. C'est un affichage non modal. Lorsqu'on a validé la dernière cellule modifiée on clique sur le bouton du milieu.
 

Dranreb

XLDnaute Barbatruc
J'ai modifié quelque détails :
Verrouillé les intitulés et les cellules d'identification de la fiche.
Protégé la feuille Fiche (mais sans mot de passe)
Enlevé la croix de fermeture de l'UserForm pour qu'on ne puisse le fermer qu'en quittant la feuille.
 

Fichiers joints

BUDGETS

XLDnaute Impliqué
1) J'ai essayé de créer une fiche complète en remplissant les champs à partir de la feuille Fiche. Que faire pour que le remplissage des champs de la feuille fiche soient intégrés dans la feuille Base ? Je n'ai pas trouvé la solution. Je me permets de vous rappeler que je ne suis pas un expert en programmation malgré que j'arrive à me débrouiller un peu et, je le reconnais volontiers, ce qui m'a valu d'ailleurs des insultes, je n'ai pas un esprit de compréhension et de déduction développé. Je viens de créer une fiche complète qui a bien été intégrée dans la base. J'ai compris le fonctionnement (cela m'arrive quand même de comprendre, je comprends vite mais il faut m'expliquer longtemps !)
Votre message :
La vraie solution serait quand même plutôt de se dessiner un UserForm personnalisé avec des TextBox pour les champs modifiables, et de ne plus faire cette mise à jour dans une fiche faite de cellules d'une feuille.
Si vous voulez, je pourrais aussi perfectionner cet UserForm automatique pour qu'il se mette tout seul des TextBox pour ça.
Ma réponse : oui, je suis d'accord sur le principe étant entendu que je pourrais vous faire des objections si le résultat ne répond pas à mes besoins.
Je viens de réaliser que vous m'avez joint un nouveau fichier. Je vais le consulter afin de voir vos propositions. Je vous tiens au courant de mon avis. J'ai créé une fiche complète qui a bien été intégrée dans la base.
Cela serait bien de prévoir de quitter l'userform grâce à un bouton de commande quitter ou à une case fermeture
J'ai regardé les différents codes et là c'est l'incompréhension totale.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
J'ai exprès enlevé la croix de fermeture de l'UserForm. Il ne faut jamais le fermer sur la feuille Fiche. Sélectionnez une autre feuille: il se fermera tout seul. Je la remettrai si j'étoffe un peu mon UserForm automatique de telle sorte qu'on n'aura plus besoin de la feuille Fiche.
C'est sûr c'est trop compliqué pour pratiquement tout autre que moi ! Tout est automatique. Il n'y a qu'une seule ligne de code qui peut vous intéresser parce qu'elle conditionne tout, c'est la UFmRechFiche.Init Me.[B3], WshBase.ListObjects(1), 1, 2 dans le module WshFiche (Fiche)
La méthode Init de l'UFmRechFiche est documentée par des commentaires indiquant ce qu'elle fait et quels sont les paramètres à spécifier.
 

BUDGETS

XLDnaute Impliqué
J'ai exprès enlevé la croix de fermeture de l'UserForm. Il ne faut jamais le fermer sur la feuille Fiche. Sélectionnez une autre feuille: il se fermera tout seul. Je la remettrai si j'étoffe un peu mon UserForm automatique de telle sorte qu'on n'aura plus besoin de la feuille Fiche.
C'est sûr c'est trop compliqué pour pratiquement tout autre que moi ! Tout est automatique. Il n'y a qu'une seule ligne de code qui peut vous intéresser parce qu'elle conditionne tout, c'est la UFmRechFiche.Init Me.[B3], WshBase.ListObjects(1), 1, 2 dans le module WshFiche (Fiche)
La méthode Init de l'UFmRechFiche est documentée par des commentaires indiquant ce qu'elle fait et quels sont les paramètres à spécifier.
Bonjour Dranreb,

saisie des données par UserForm : dans la mesure du possible, voilà comment je vois les choses :
1) Feuille Liste de choix avec des noms définis (Pour liste code référentiels menus, un nom défini pour les desserts, un nom défini pour les légumes, un nom défini pour les viandes, un nom défini pour les périodes, un nom défini pour les observations).
2) UserForm pour la saisie des données : Selon le choix fait dans Titre référentiels menus, Liste code référentiels menus devra afficher la liste déroulante correspondante (par exemple : Titre référentiels menus = Viandes, Liste code référentiels menus ne devra afficher que les codes commençant par V et W); À partir de liste code référentiels menus, afficher le nom du référentiel correspondant automatiquement.
3) Toutes les données nécessaires saisies, les valider pour qu'elles soient enregistrées dans un tableau.
4) Possibilité de modifier ou de supprimer un référentiel.
Si vous voyez d'autres éléments à traiter, merci de me les signaler.
Bonnes journée et continuation.
 

Dranreb

XLDnaute Barbatruc
Mon système d'UserForm automatique ne pourra pas faire ça. Il faut vous dessiner un UserForm personnalisé.
Il sera possible d'y utiliser plusieurs objets ComboBoxLiées en dehors de celui qui gère la liste à mettre à jour.
Ça impliquerait de mettre les listes sous forme de tableaux de toutes les combinaisons possibles en répétant notamment "Viandes" sur chaque ligne concernée.
Toute autre approche serait forcément plus compliquée.
Attention toutefois: une même ComboBox ne doit pas être prise en charge par deux ComboBoxLiées actifs en même temps.
Si donc une ComboBox sert à retrouver des choses associées à "Viandes" dans un tableau fixe de combinaisons valides, vous ne pourrez pas en même temps vous en servir pour retrouver des "Viandes" dans la base à mettre à jour. Mais si pour la base à mettre à jour ce n'est qu'une information associée pas de problème. Du moins à condition que la combinaison retrouvée dans la base existe dans le tableau de combinaisons, si vous en y notez plusieurs parties au lieu de seulement un code unique.
Un conseil: si vous décidez de vous lancer dans la conception d'un UserForm, donnez des noms court et mnémoniques à tous vos contrôles, commençant par un trigramme pris de cette liste :
upload_2018-9-29_11-39-1.png
 
Dernière édition:

BUDGETS

XLDnaute Impliqué
Je vous envoie un fichier UserForm pour lequel j'ai payé mais le professeur est parti en mission et la société qui l'employait considère que le nombre d'heures payées a été utilisé. Voyez ce que vous pouvez faire pour le terminer ou le modifier.
 

Fichiers joints

BUDGETS

XLDnaute Impliqué
Mon système d'UserForm automatique ne pourra pas faire ça. Il faut vous dessiner un UserForm personnalisé.
Il sera possible d'y utiliser plusieurs objets ComboBoxLiées en dehors de celui qui gère la liste à mettre à jour.
Ça impliquerait de mettre les listes sous forme de tableaux de toutes les combinaisons possibles en répétant notamment "Viandes" sur chaque ligne concernée.
Toute autre approche serait forcément plus compliquée.
Attention toutefois: une même ComboBox ne doit pas être prise en charge par deux ComboBoxLiées actifs en même temps.
Si donc une ComboBox sert à retrouver des choses associées à "Viandes" dans un tableau fixe de combinaisons valides, vous ne pourrez pas en même temps vous en servir pour retrouver des "Viandes" dans la base à mettre à jour. Mais si pour la base à mettre à jour ce n'est qu'une information associée pas de problème. Du moins à condition que la combinaison retrouvée dans la base existe dans le tableau de combinaisons, si vous en y notez plusieurs parties au lieu de seulement un code unique.
Un conseil: si vous décidez de vous lancer dans la conception d'un UserForm, donnez des noms court et mnémoniques à tous vos contrôles, commençant par un trigramme pris de cette liste :
Voir la pièce jointe 1018550
Pourriez-vous, quand vous aurez un moment libre, me concevoir un projet qui réponde à vos observations ci-dessus.
 

Dranreb

XLDnaute Barbatruc
Franchement ça ne me branche pas de reprendre cet UserForm qui ne semble pas correspondre à la base que vous voulez mettre à jour.
Pourquoi n'essayez vous pas de le faire vous même ?
 

BUDGETS

XLDnaute Impliqué
Franchement ça ne me branche pas de reprendre cet UserForm qui ne semble pas correspondre à la base que vous voulez mettre à jour.
Pourquoi n'essayez vous pas de le faire vous même ?
suis pas assez calé

Je ne suis pas assez professionnel pour le faire moi-même.
Pourriez-vous me concevoir un UserForm répondant à ce qui vous semble le plus adéquat ou j'en crée un et je vous le transmets pour que vous me disiez ce que vous en pensez ?
 
Statut
N'est pas ouverte pour d'autres réponses.

Haut Bas