Re : Besoin d'aide avec VBA
Oh, la ! 3 postes d'un coup ! Reprenons tout dans l'ordre.
Bon alors, L'aide avec F1 est aussi claire que la programmation des codes !!!!!
Oui, oui, tout à fait d'accord ! Tout cela est en effet très clair. (Je dis ça juste pour te mettre en rogne
🙄, mais en réalité j'espère que ça le deviendra avec le temps pour toi, aux quelques imperfections réelles près de l'aide)
Que c'est déjà bien d'avoir déduit, essayons de transformer en compréhension.
PlgTablo est déclaré As Range et en Public dans le module de classe ComboBoxLiés. Vous pouvez y voir derrière cette description:
Propriété. Plage des lignes entières couvertes par le tableau. À votre disposition. Initialisée par méthode Plage.
C'est donc une propriété de son instance CBL (faut vous habituer au jargon, y a pas, même s'il fait mal aux oreilles) en tant qu'objet Range, et représente, puisqu'on y a indiqué des lignes entières, la plage indiquée au CBL.Plage dans Userform_Initialize, donc le tableau dans la feuille "Liste" de CodeName Feuil4.
Il s'agit de l'intersection de la ligne de numéro LaLigne de cet objet Range et de la colonne de nom de plage "Tarif" indiquée entre crochets droits ce qui forme aussi une expression Range.
Dois-je modifié les 5 plages de nom dans la feuille "Liste" comme cela: =Liste!$E$2:$E$ pour que cela fonctionne correctement ?
C'est le modèle pour le nom "Condit" seulement je suppose. Non, une colonne entière c'est =Liste!$E:$E
Par contre concernant UserForm.Initialize, et ListObject , je ne vois pas ce que tu veux dire
Tout ce que je sais c'est qui est possible en Excel 2010 de convertir une liste en tableau et que cela donne lieu à la création d'un objet de type ListObject. Celui ci garantit que les colonnes nommée dedans sont automatiquement ajustée au nombre de lignes de cet objet en cas d'ajouts et suppressions. Je l'utiliserait surement, intégré même à mes modules de service, si je pouvais.
P.S. Et encore un poste !
Je n'ai pas de problème de mon coté pour nommer les colonnes entières. Mais peut être cela devient-il impossible une fois la liste convertie en tableau, ce qui aurait été fait ? Dans ce cas il faut trouver l'objet ListObject et passer carrément, tant qu'à faire, sa propriété Range à la méthode CBL.Plage. C'est facile, il appartient très probablement à une collection ListObjects de Feuil4. Les simplifications proposées plus haut s'appliqueront alors: plus besoin d'intersections.
À + en espérant que les chose soient un peu plus claires, sinon, demande encore.