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

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

BUDGETS

XLDnaute Impliqué
Il n'est pas de moi mais que pensez-vous de ce programme ? pourrait-il être amélioré, simplifié ?
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.
C'est vous qui voyez.
Il faudrait que vous y écriviez une 1ère procédure GarnirAutresControles qui affecte à la propriété Text de chaque TextBox un élément d'un tableau nommé TVL (comme Tableau des Valeurs de la Ligne) à 2 dimensions mais d'une seule ligne, la première étant toujours 1, donc. Genre
TextBox?.Text = TVL(1, ?)
Quand elle sera invoquée, TVL contiendra la valeur d'une plage représentant la ligne de la base à mettre à jour, celle qu'on voudra afficher.
 

BUDGETS

XLDnaute Impliqué
Bonjour.
C'est vous qui voyez.
Il faudrait que vous y écriviez une 1ère procédure GarnirAutresControles qui affecte à la propriété Text de chaque TextBox un élément d'un tableau nommé TVL (comme Tableau des Valeurs de la Ligne) à 2 dimensions mais d'une seule ligne, la première étant toujours 1, donc. Genre
TextBox?.Text = TVL(1, ?)
Quand elle sera invoquée, TVL contiendra la valeur d'une plage représentant la ligne de la base à mettre à jour, celle qu'on voudra afficher.
TVL = Liste de choix ? Que signifie à deux dimensions ? Procédure = Module ?
 

Dranreb

XLDnaute Barbatruc
Ça signifie qu'il faut spécifier 2 indices pour accéder à un de ses éléments, un indice de ligne et un indice de colonne.
Comme propriété Value d'un Range représentant plusieurs cellules contigües, Excel renvoie toujours un tableau à 2 dimensions, quitte à ce que l'une d'elle soit toujours à 1 si la plage n'a qu'une seule ligne ou une seule colonne.

Procédure = Sub. Ici une Private Sub GarnirAutresContrôles dans le module de l'Userform.

Édition: En réalité, pour être tout à fait exact, Procédure est un terme général incluant en dehors des Sub aussi les Function, Property Get et Property Let.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Bon depuis le temps je suppose qu'elle est écrite depuis longtemps.
La seconde procédure que je voudrais que vous écriviez, ou du moins le début, c'est la Private Sub CBnValider_Click()
Vous devez y faire les affectations inverses: TVL(1 , ?) = TextBox?.Text
Toutefois les information numériques devraient êtres converties en nombres.
Pous pouvez aussi utiliser cette fonction :
VB:
Public Function ValeurTBx(ByVal TBx As MSForms.TextBox, _
   Optional ByVal TypeDon As VbVarType = vbDouble)
   On Error Resume Next
   If TBx.Text = "" Then
       ValeurTBx = Empty
   ElseIf TypeDon = vbDate Then
       ValeurTBx = CDate(TBx.Text)
   ElseIf TypeDon = vbString Or Not IsNumeric(TBx.Text) Then
       ValeurTBx = TBx.Text
   ElseIf TypeDon = vbCurrency Then
       ValeurTBx = CCur(TBx.Text)
   Else
       ValeurTBx = CDbl(TBx.Text)
       End If
   End Function
Et mettre des TVL(1, ?) = ValeurTBx(TextBox?) dans la CBnValider_Click

Édition: Rappel: TVL: Tableau des Valeurs de la Ligne en cours de mise à jour.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Une fois que vous aurez fait toute cette partie fastidieuse, que je ne ferai pas, d'autant que vous n'avez pas suivi mon conseil de mettre des noms mnémonique aux contrôles pour que je puisse m'y retrouver, et donc leur attribuer les bons numéros de colonnes de TVL, re-joignez le classeur.
La troisième chose que vous pourriez faire c'est dans la UserForm_Initialize mettre des instructions de la forme
CL.Add Me.NomDeComboBox, NuméroDeColonne pour toutes les ComboBox devant faire l'objet de recherche dans la base à mettre à jour. Et aussi si vous voulez des
CLsPlats.Add Me.NomDeComboBox, NuméroDeColonnemais mais avec des numéros de colonnes d'un autre tableau, celui des plats disponibles, avec au moins une colonne Catégorie et une colonne Intitulé.
 

BUDGETS

XLDnaute Impliqué
Bonjour Drenreb,

J'espère que tu vas bien.
Je continue à créer mon fichier. Pour ce qui est du fichier par formulaires, je m'en occuperai en 2019 et je ne manquerai pas de revenir vers toi si le besoin s'en fait sentir (ce sera sûr).
Dans le fichier joint, quand je veux effectuer une modification, un message m'indique que le numéro référentiels menus et le tire référentiels menus ne peuvent pas être modifiés. Impossible de retrouver le code correspondant à cette interdiction que je souhaite garder. Merci de me dire où elle se cache.
Bonnes journée et continuation.
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.
Ce n'est pas le système vers lequel je voulais vous orienter.
Pour moi c'est idiot de faire des recherches dans la base puisque j'ai un système qui se charge de tout, à ce point de vue là, à base de choses tapées dans des ComboBox et qui vous dit, lui, si c'est une création ou une modification, selon que ça existe déjà ou non.
 

BUDGETS

XLDnaute Impliqué
Bonsoir Dranreb

J'ai retrouvé mon code. Il est dans la feuille shModifierRéférentielsMenus
Bonnes soirée, nuit et continuation. Excellent weekend.
 

BUDGETS

XLDnaute Impliqué
Bonjour Dranreb,
J'espère que tu vas bien.
Je ne sais pas pourquoi, mais impossible de modifier les données dans la feuille Modifier référentiels menus. Je change le code jour référentiels menus, le nouveau nom n'apparaît pas. Idem pour tout le reste. Pourrais-tu m'aider pour que les lignes soient modifiées à partir de leur code respectif ? Je te rappelle que je me suis engagé pour travailler avec les formulaires à partir de 2019.
D'avance merci.
Bonnes journée et continuation.
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Non je ne sais pas. D'ailleurs je ne fais jamais genre
Titre_référentiels_menus = .Range("C" & ici) 'On récupéreles informations
Liste_code_référentiels_menus = .Range("D" & ici)
Liste_nom_référentiels_menus = .Range("E" & ici)
Code_jour_référentiels_menus = .Range("F" & ici)
Jour_référentiels_menus = .Range("G" & ici)
Code_conditionnement_référentiels_menus = .Range("H" & ici)
Conditionnement_référentiels_menus = .Range("I" & ici)
Code_destination_référentiels_menus = .Range("J" & ici)
Destination_référentiels_menus = .Range("K" & ici)
Code_période_concernée_menus = .Range("L" & ici)
Période_cocernée_menus = .Range("M" & ici)
Code_période_viandes_week_end = .Range("N" & ici)
Période_viandes_week_end = .Range("O" & ici)
Date_création_référentiels_menus = .Range("P" & ici)
À_modifier = .Range("Q" & ici)
Je fais :
VB:
TVL = .Range("C:Q").Rows(LCou).Value
Avec en tête du module la déclaration des variables globales :
VB:
Private LCou As Long, TVL() ' Tableau des Valeurs de cellules de la Ligne en cours d'affichage ou de mise à jour.
Et ça peut aussi se faire dans l'autre sens :
VB:
.Range("C:Q").Rows(LCou).Value = TVL
Et ailleurs il y aurait :
VB:
TVL = Worksheetfunction.Transpose(Range("B3:B18").Value
C'est un peu comme j'ai fait dans le MàJFiche.xlsm joint au poste #11 en somme. Pourquoi ne gardez vous pas ce principe avec un UserForm généraliste automatique qui ne s'occupe que des identifiants de la fiche en attendant de créer l'UserForm personnalisé avec les TextBox en plus où il ne restera qu'à faire des TextBoxX.Text = TVL(1, X) : TextBoxY.Text = TVL(1, Y) etc. ?
 

BUDGETS

XLDnaute Impliqué
Bonjour Dranreb,

Tu sembles être fâché contre moi puisque tu ne m'as pas répondu à mon dernier message écrit à partir de ton profil. J'ai appris beaucoup de choses sur toi : 1) tu es un informaticien (peut-être même ingénieur)à la retraite;2) Tu fais l'objet de beaucoup de compliments dont ceux de Cathodique. Aussi, je ne comprends pas pourquoi tu me laisses tomber. Si un message t'a déplu, je ne voulais pas te vexer d'aucune manière. Excuses-moi si tu l'as trouvé offensant, ce n'était vraiment pas le but recherché.
Ceci dit, premièrement je te présente mes vœux les meilleurs et les plus sincères d'heureuse année et surtout de bonne santé pour toi et ta famille. Que cette année t'apporte beaucoup de plaisir, de réussite, de joie, de bonheur. Deuxièmement,je reviens à mon message resté sans réponse : je te demandais situ acceptais de m'aider dans la rédaction de mon programme Menus par formulaires puisque si, je me souviens bien, la programmation par formulaires est ta spécialité. Malheureusement, mon programme Menus est toujours en rade puisque je ne trouve personne qui accepte de comparer les deux programmes et de me dire pourquoi le mien ne fonctionne pas alors que, sauf erreur ou omission de ma part, il est la copie conforme du modèle.
Pour mon programme Menus par formulaires, je suis en train de le préparer d'après un modèle. Ta mission, si tu l'acceptes, sera de simplifier ou de modifier le programme si tu penses cela est possible.
Bonnes fin de soirée, nuit et continuation.
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Si, j'avais mis une réponse en dessous :
upload_2019-1-12_22-49-40.png
et je pensais qu'elle était visible par toi.
je joins le dernier classeur avec UserForm muni de contrôles gérés par ComboBoxLiées et CorntrolsAssociési. Mais bien que le demandeur n'ait plus souhaité de finalisation avec mon aide, les noms de contrôle n'y suivent pas ma normalisation, et de mon point de vu l'affaire a été un peu laissée en plan.

Vous voyez, pas de variables même de noms courts contrairement aux votres, et pas d'accès direct aux cellules individuelles, tout passe via un TVL (Table des Valeurs de la Ligne)
 

Fichiers joints

Dernière édition:

BUDGETS

XLDnaute Impliqué
Bonsoir.
Si, j'avais mis une réponse en dessous :
Voir la pièce jointe 1023442
et je pensais qu'elle était visible par toi.
je joins le dernier classeur avec UserForm muni de contrôles gérés par ComboBoxLiées et CorntrolsAssociési. Mais bien que le demandeur n'ait plus souhaité de finalisation avec mon aide, les noms de contrôle n'y suivent pas ma normalisation, et de mon point de vu l'affaire a été un peu laissée en plan.

Vous voyez, pas de variables même de noms courts contrairement aux votres, et pas d'accès direct aux cellules individuelles, tout passe via un TVL (Table des Valeurs de la Ligne)
Bonjour Dranreb,
Quel rapport entre le fichier joint et moi : personnellement aucun.
 

Dranreb

XLDnaute Barbatruc
Non, aucun rapport, c'est juste un exemple pour vous montrer le style que ça aura, et préparer le terrain en ce qui concernera peut être l'UserForm duquel vous souhaiterez que je partes.
Je tiens à ce que les noms des contrôles soient normalisés et que leurs liens avec les titres des colonnes du tableau Excel à mettre à jour soient établis par des .Add dans l'UserForm_Initialize.
 

BUDGETS

XLDnaute Impliqué
Non, aucun rapport, c'est juste un exemple pour vous montrer le style que ça aura, et préparer le terrain en ce qui concernera peut être l'UserForm duquel vous souhaiterez que je partes.
Je tiens à ce que les noms des contrôles soient normalisés et que leurs liens avec les titres des colonnes du tableau Excel à mettre à jour soient établis par des .Add dans l'UserForm_Initialize.
Et sera-t-il possible d'utiliser des noms définis, des listes de choix, des validations des données dans un ou plusieurs userforms ?
Qu'entendez-vous par "les noms des contrôles soient normalisés et que leurs liens avec les titres des colonnes du tableau Excel à mettre à jour soient établis par des .add dans l'userform_initialize" ?
 

Dranreb

XLDnaute Barbatruc
Pas besoin de nom défini pour les éléments d'une plage mise sous forme de tableau. Ce sont les titres qui font le lien.
Mes noms de contrôles commence par 3 lettres, généralement la 1ère et dernière majuscule de son nom de type enfin sa dernière lettre. Par exemple pour une TextBox c'est TBx. Suivi d'un nom mnémonique court commençant par une majuscule.
Voir la UserForm_Initialize du classeur joint.

Pour ce qui est de validation de donnée d'après une liste, elle peut être simulée par la propriété List d'une ComboBox avec propriété MatchRequired à true.
 
Dernière édition:

BUDGETS

XLDnaute Impliqué
Je viens de faire quelques essais : j'ai fait deux créations lesquelles ont été répercutées dans le tableau Excel et dans les combo boxes correspondants. Par contre, à partir de la feuille Accueil, clics sur rechercher, le tableau afficher les recherches apparaît : clic sur un nom d'animal : erreur de compilation : référence incorrecte ou non qualifiée (
Public Sub Afficher(ByVal Ligne As Long, ByVal Info As String)
LCou = Ligne: TVL = CL.Lignes(LCou).Range.Value
CL.ValeursDepuis TVL
CA.ValeursDepuis TVL
LabInfo.Caption = Info
CBnValider.Caption = "Modifier": CBnValider.Enabled = True: .Me.Show
End Sub
.Me.show s'entoure de bleu.
Dans la soirée ou demain, j'étudierai un peu plus ton fichier. Dans les noms définis, Critères, Extraire et listfa ont une valeur #REF! (d'où peut-être l'erreur de compilation citée plus haut).Toujours dans la liste des noms définis, à quoi correspondent Tableau1, tableau2, TVA (qui semble demander le téléchargement d'un fichier). D'où viennent la feuille CP et son contenu ? Tableau1 et tableau2, je ne sais pas pourquoi, ils sont créés automatique dans formules lors de leur création respectives. J'ai vu à quoi ils correspondent. Par contre, pour #REF!, je n'ai pas pu faire quoi que ce soit car je ne sais pas de quelles références il est question : il doit aller dans la feuille contacts et je pense qu'il doit aller dans la colonne Nom (colonne G) pour ce qui est du nom défini Critères. Pour le nom défini Extraire, aucune idée de ce qu'il doit faire. Pour ListFa, c'est encore pire car je ne sais pas ce qu'il doit chercher dans le classeur. Pourquoi le (Name) de certains objets commence par id, pour d'autres par label alors que pour moi ce sont tous un outil Intitulé ? Même remarque pour les boutons de commande (CBN ou Tbn). Comme tu peux le constater, je ne suis pas trop idiot et j'essaie de comprendre le pourquoi et le comment des choses. Modules de classe : CAssoLBx : la page code est vide. À 99 %, désolé pour toi, mais je l'ai toujours dit et je le maintiens, je ne suis pas un expert en programmation, je n'ai pour ainsi dire rien compris aux pages codes. Si tu te sens volontaire, il y aura de nombreuses explications à me donner ou je t'écrirai un commentaire et tu le confirmeras ou l'infirmeras.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Oui, il y a un point en trop devant Me.Show. Comme dit, c'est un classeur qui a un peu été laissé en plan. Le demandeur n'a pas renommé les contrôles conformément à ma normalisation. Je regrette un peu de l'avoir téléversé. J'avais seulement en tête l'UserForm_Initialize du UFm MàJContacts à prendre un peu comme modèle, sauf les noms de contrôles que je voudrais normalisés.
Je n'ai pas fait de feuille d'aide pour l'objet ControlsAssociés. D'ailleurs il est encore en évolution: le CAssoLBx n'est en effet pas développé. Ni même utilisé d'ailleurs: si on en tente un CA.Add on tombe sur le message 'Contrôle de type "ListBox" non supporté actuellement'.
Par contre j'en ai une pour l'objet ComboBoxLiées. Attention, c'est un classeur précurseur qui cherche à s'installer en tant que complément .xlam. On peut d'ailleurs l'utiliser sous cette forme, si on veut, mais on peut aussi implanter les module de service nécessaires dans le classeur d'application. Ce n'ai pas grave de ne pas comprendre la programmation des modules de service: c'est seulement de savoir s'en servir qui est important.
CBn : CommandButton, TBn: ToggleButton
 

Fichiers joints

Dernière édition:

BUDGETS

XLDnaute Impliqué
Quelle différence entre un bouton de commande et un toggleButton ? Je connaissais le premier, pas le deuxième. Et pour ce qui est des noms définis ? Donnes-moi la formule complète des fait référence à. ListFa = liste famille ou liste famille accueil qui se trouve donc la feuille contacts. Mais je ne sais pas l'endroit où il doit chercher.
Mon projet est d'étudier ton fichier et de créer le mien par rapport au tien.
Que fait un fichier .xlam ? j'ai ouvert ton fichier, il m'a été demandé je ne sais plus quoi, j'ai répondu oui et, à la fin, il m'a été dit installation réussie, vous pouvez vous servir de votre fichier.xlam.
Discussion finie pour ce soir. Je te souhaite une bonne fin de soirée, une bonne nuit et une bonne continuation. Au plaisir de te lire, enfin j'espère.
 
Statut
N'est pas ouverte pour d'autres réponses.

Haut Bas