Incompatibilité de type

Résolu/Fermé
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024 - 31 oct. 2016 à 22:12
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024 - 11 nov. 2016 à 13:06
Bonjour,
J'ai quarante fichiers dont certains sont destinés à servir de liste de choix dans d'autres fichiers;ces derniers servent également de liste de choix pour le fichier Menus.xltm dont les données enregistrées iront dans le fichier Classeur menus.xltm. En ce qui concerne, les listes de choix, tout fonctionne correctement (ce travail avait fait l'objet d'une précédente question : transfert des données d'un fichier dans un autre autant que je me souvienne).
Mintenant, le problème se situe dans le fichier Menus.xltm qui comprend un module (listemenusjournaliers) qui regroupe toutes les données avec leur type (date, string, byte, etc.) et d'un UserForm frmListemenusjournaliers qui comprend des zones de liste modifiable (cbo), des zone de texte (une pour la date, une pour le numéro du menu, quatre pour les quantités), deux boutonds de commande (ajout menus journaliers et retour).
Les quantités sont des nombres à deux chiffres après la virgule;le numéro du menu est un chiffre sans virgule et sans rien après la virgule évidemment. Dans le classeur menus.xltm, il a deux feuilles (Récapitulatif menus, Menus dont une colonne commune (Date du menu) est formatée sous la forme Date (Lundi 31 octobre 2016).) .
Dans le fichier Menus.xltm; il est prévu un appel à Créermenusjournaliers et un autre à Remplacermenusjournaliers (call Créermenusjournaliers suivi de la liste de tout les objets de l'UserForm, chacun suivi de .value, call Remplacermenusjurnaliers suivi de la liste de tous les objets de l'UserForm, chacun suivi de .value). À l'exécution du programme, pour les outils de l'UserForm concerné, la liste des choix possibles s'affiche correctemnt, et quand je clique sur Ajoutmenujournalier, j'ai un message d'erreur "Incimpatibilité de typé" et le débogage entoure la procédure publique Créermenusjournaliers (qui est suivi du nom des outils de l'UserForme sans le préfixe : donc pas de cbo, pas de txt, etc). Je suis autodidacte en programmation et je n'ai malheureusement pas la science infuse et je ne comprends rien au message d'erreur.
Votre aide me serait très précieuse. D'avance, je vous en remercie.
Le cas échéant, quelque quarante fichiers compressés attendent d'être envoyés à qui le demandera (certainement en plusieurs fois).
Encore merci pour votre aide précieuse. Bonnes soirée et continuation.


29 réponses

BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024
6 nov. 2016 à 22:29
Merci Patrice.
Je vais imprimer ton message puis modifier les appels callCréermenusjournaliers et call Remplacermenusjournaliers, les procédures public sub Créermenusjournaliers et public sub Remplacermenusjournaliers et le code d'écriture/lecture dans le fichier Classeur menus.
Bonnes nuit et continuation.
0
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024
6 nov. 2016 à 22:34
Public Mesmenusjouranliers : c'est une erreur de frappe, il faut lire journaliers.
D'autre part, je suis basé sur le livre dont je t'ai déjà parlé, j'ai compris certaines choses, pas les autres et je l'ai modifié bêtement (il faut le reconnaître) pour qu'il corresponde à ce que je voulais.
0
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024
Modifié par BUDGETS le 7/11/2016 à 19:26
Bonsoir Patrice,

J'espère que tu vas bien et que tu as passé une bonne journée.
Je vaiq recommencer tout depuis le départ à partir des renseignements que tu as eu la gentillesse de me fournir.
Tous les fichiers légumes, viandes, desserts (codes, noms, jours, conditionnement, destinations) serviront à exécuter les fichiers listes de choix (légumes, viandes, desserts) lesquels seront utiles pour créer le fichier Menus auxquels s'adjoindront les fichiers observations et mois concernés.
Dans l'hypothèse où j'aurai un problème quelconque, pourrais-je continuer à compter sur ton aide précieuse ?
Si tu as une idée et si cela est possible, pourrait-on envisager que dans le fichier Menus.xltm, si je tape un code légume par exemple, que tout le reste puisse s'inscrire directement à l'écran (nom du légume, jour légume, conditionnement légume, destination légumes) ?
Bonnes soirée et continuation.

BUDGETS
0
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024
7 nov. 2016 à 22:35
Bonsoir Patrice,

J'ai refait mon premier fichier en tenant compte du modèle ci-dessus.
À l'exécution, j'ai le message d'erreur un module n'est pas un type valide. Voir les fichiers joints.
https://www.cjoint.com/c/FKhvIcg8xgJ
Classeur codes légumes.xlsx
https://www.cjoint.com/c/FKhvJaHibIJ
Codes légumes.xltm

BUDGETS
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024
7 nov. 2016 à 22:44
Bonsoir Patrice,
J'ai refait mon premier fichier (Codes légumes.xltm) en tenant compte de l'exemple ci-dessus.
À l'exécution, j'ai le message d'erreur un module n'est pas un type valable.
Voir les deux fichiers joints.
https://www.cjoint.com/c/FKhvPmQnY5J
Classeur codes légumes.xlsx
https://www.cjoint.com/c/FKhvP5tvG0J
Codes légumes.xltm

Faut-il prévoir également, comme dans les précédents fichiers, le tri et l'enregistrement du fichier Classeur codes légumes, la mise à jour de la liste déroulante, l'initialisation de l'UserForm, l'ajout de tous les codes légumes ?
Bonnes soirée et continuation.
0
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024
8 nov. 2016 à 15:17
Bonjour Patrice,

J'ai essayé différentes modifications mais cela ne marche pas. Voir mes messages d'hier soir avec les deux fichiers joints.
Bonnes journée et continuation.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 8/11/2016 à 15:53
Bonjour,

Tout reprendre à zéro est un bon début.

Cependant, pour que je puisse t'aider de façon constructive, il faut impérativement que je comprenne les différents objectifs du projet, ce qui est loin d'être le cas actuellement.

Il faut notamment que tu me précises la raison de certains choix qui m'échappent totalement :
1 - Pourquoi le Classeur Légumes est-il au format xltm (modèle) plutôt que xlsm (fichier normal avec macros) ?
2 - A quoi sert-il exactement ? : on peut seulement ajouter des codes mais pas les supprimer ni les modifier.
3 - Pourquoi ne pas simplement corriger directement le fichier « Classeur codes légumes » de façon manuelle ?
4 - Dans le cas ou l'utilité du formulaire serait avérée, pourquoi ne pas le mettre dans le même fichier que les codes ?
J'ai encore de très nombreuses interrogations, notamment pourquoi autant de fichiers lorsqu'un ou deux suffiraient, mais cela viendra plus tard, commençons par le début.

Pour répondre à ta question : « j'ai le message d'erreur un module n'est pas un type valable », c'est tout à fait normal :
On ne peut pas commencer à écrire une nouvelle procédure à l'intérieur d'une autre. Il faut impérativement terminer la précédente (par End Sub) avant d'en commencer une nouvelle.


Pour éviter ce genre de problème tu devrais indenter ton code, comme indiqué page 43 de cet Excellent Cours VBA que je t'ai déja conseillé au post 30 : ici. Cela permet de se rendre compte immédiatement qu'il manque une partie du code.

Cordialement
Patrice
0
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024
Modifié par crapoulou le 9/11/2016 à 00:46
Dans le fichier joint, réponses à tes questions.
Si c'est plus facile pour toi, voici mon adresse mail (tu ne m'as répondu à ce sujet) : xxx@wanadoo.fr
https://www.cjoint.com/c/FKiuPCjB7RJ

(Adresse mail supprimée par la Modération CCM)
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 9/11/2016 à 00:58
Re,
Désolé il manque un mot dans ma première question et ça change toutes les réponses qui en découlent. :
1 - Pourquoi le classeur (ou fichier) Codes Légumes.xltm est-il au format xltm (modèle) plutôt que xlsm (fichier normal avec macros) ?

et en 4, il s'agit des codes VBA !

Un exemple d'indentation du code VBA : http://www.gaboly.com/VBA/Indentation.html
0
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
9 nov. 2016 à 16:55
Bonjour Patrice,

J'espère que tu vas bien.
Je viens d'écrire le code de public sub RemplacerCodeslégumes et public sub XréerCodeslégumes. Exécution : message d'erreur : Un module n'est pas un type valide.
Bonnes fin de journée et continuation.
Les deux fichiers classeur codes légumes.xlsx et Codeslégumes.xltm
https://www.cjoint.com/c/FKjp1TelLJJ
https://www.cjoint.com/c/FKjp2wtzzhJ
0
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
9 nov. 2016 à 17:27
Bonjour Patrice,

J'ai fait des modifications dans le code de public sub Créercodeslégumes et de public sub Remplacer codes légumes. Je ne sais pas si cela correspond à ce que tu avais en tête mais ça marche.
Nouveau fichier Codes légumes.xltm
https://www.cjoint.com/c/FKjqBezfarJ
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 9/11/2016 à 19:31
Bonjour,

Voici en retour le fichier de macro Code légumes.xlsm :
https://www.cjoint.com/c/FKjsas60lLm
P.S. : je l'ai mis au format normal des macro (xlsm) car tu ne m'as toujours pas dit pourquoi tu utilises le format xltm.

J'ai supprimé une partie ce qui est inutile (il en reste encore) : ce code fonctionne exactement comme le tien (il en reste encore des lignes inutiles que j'ai laissées pour conserver le même fonctionnement, où plutôt le même dysfonctionnement).

J'ai indenté le code pour que tu voies ce que ça présente comme avantage.

Je vois que tu ne comprends le fonctionnement des variables en programmation :
- il est inutiles de déclarer des variables si on ne les utilise pas.
- chaque variable doit être déclarée pour la portée dans laquelle elle est utilisée.
- le type des chaque variable doit correspondre à l'utilisation qu'on va en faire.

Tu t'es lancé dans ce développement en te disant que tu verrais au fur et à mesure plutôt que faire l'analyse préalable (indispensable) de ton besoin : « je suis preneur pour que Menus.xltm soit rempli automatiquement à partir des codes légumes, codes viandes et codes desserts » et de réfléchir à la façon d'obtenir ce résultat (tu aurais du commencer par ça).

Pour réaliser ce projet, il est évident que tu aura besoin d'une base de données correspondant, de préférence unique et qu'en aucun cas tu pourra résoudre ce problème avec une multitude de petits fichiers sans aucun lien entre eux. Il faut donc commencer par structurer cette base de données.

Compte tenu de sa simplicité, l'ensemble de ton projet devrait tenir dans un fichier unique contenant la base de données et toutes les macros.

Patrice
0
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024
Modifié par BUDGETS le 8/11/2016 à 17:16
Bonjour Patrice,
Normalement le classeur Légumes est de format xlsm (enfin chez moi).
J'envisage de créer des formulaires afin de prévoir mes menus 2017. Jusqu'ici, je le faisais avec des clics et je me suis inspiré de mes menus 2016 pour créer mes formulaires pour les menus 201.
Pour 2016, il y avait une feuille Paramètres, une feuille saisie, et différentes feuilles pour recevoir les données (menus midi retraite, menus journaliers, menus viandes week-end) et trois feuilles pour calculer les quantités (quantités légumes, quantités viandes, quantités desserts) qui se remplissaient à partir des trois feuilles menus grâce à des fonctions.
La feuille paramètre a été remplacée par les fichiers codes légumes, codes desserts, codes viandes, codes observations, légumes, desserts, viandes, etc. À partir de ces différentes ficjiers, j'ai créé les fichiers liste de choix Légumes, liste de choix viandes, liste de choix desserts qui se remplissent à partir des fichiers codes, légumes, viandes,etc de format xlsx. Le fichier menus.xltm est rempli à partir des trois fichiers Liste de choix légumes, liste de choix viandes, liste de choix desserts, liste de choix observations, ainsi que du classeur Mois concernés.xlsm. Ce qui serait bien c'est que le fichier Menus.xltm se remplisse automatiquement à partir des classeurs listes de choix : exemple : je tape un code légumes : les données légumes, jours légumes, conditionnement légumes, destination légumes correspondant à ce code devraient surgir alors automatiquement, quitte à transformer les cbo en zone de texte ou autre pouvant accepter cette manipulation. Voir fichier Menus 2015.xlsm joint.
https://www.cjoint.com/c/FKipxd5XcLJ
Initialement, je pensais créer des fichiers modèles pour m'en servir l'année suivante (d'où XLTM);vu la manière dont cela fonctionne, il est possible que des fichiers XSLM suffisent.
Voilà pour l'instant, une première réponse.

Je viens d'imprimer les deux livres dont tu m'as parlé (lex variables en vba excel et formation excel)
Merci pour ton aide très précieuse.
Bonnes fin de journée et continuation.
ps : excuses-mo si tu me trouves répétif pour les début et fin de message (bonjour Patrice, merci pour ton aide... et bonnes fin de journée et continuation), mais quand commencé à fréquenter le forum, je ne le mettais pas et j'ai eu des réflexions et même des insultes pour mon impolitesse.
BUDGETS
0
BUDGETS Messages postés 1563 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 23 décembre 2024
8 nov. 2016 à 17:42
Voici le nouveau fichier Codes légumes sans les procédure CréerCodeslégumes ni RemplacerCodesLégumes. J'espère avoir compris ton observations puisque j'ai déplacé les deux procédures après un end sub. Que penses-tu de ce nouveau fichier ? Faut-il prévoir un tri et un enregistrement du classeur Codes légumes.xlsx ? Une mise à jour de la liste déroulante est-elle toujours nécessaire ? L'initialisation de l'UserForm frmCodeslégumes est-elle toujours obligatoire ? Merci de me répondre à ces différentes questions afin que j'apporte les modification adéquates.

https://www.cjoint.com/c/FKiqNARjk4J
0