XL 2016 VBA - OLEObjects.add fait perdre les valeurs des variables globales de tous les Modules

Dudu2

XLDnaute Barbatruc
Bonjour,

J'avais déjà remarqué ce phénomène étrange et excessivement gênant lorsqu'on veut partager des variables entres plusieurs fonctions.
Si on déclare et valorise des variables au niveau d'un ou plusieurs Modules et que dans un des Modules on créé une ComboBox de feuille Active X, toutes ces valeurs sont perdues !

La création de la ComboBox dézingue toutes les variables Modules de TOUS les Modules !

Je cherche un contournement de ce problème car même si on peut s'en sortir avec un Application.OnTime Now après la création de la ComboBox, cette solution ne permet pas de passer des paramètres reçus qui sont précisément les valeurs à placer en variables Module. Et puis de toutes façons, comme tous les Modules sont affectés, c'est irrattrapable !
 

Pièces jointes

  • ComboBox ActiveX sur feuille détruit toutes les variables Modules.xlsm
    26.6 KB · Affichages: 13

patricktoulon

XLDnaute Barbatruc
ben oui
le height par le insideheight pour la caption ( attention c'est pas précis au micron hein)
et le width par le insidewidth pour la largeur de l’intérieur

le 2d / 2 te donne la largeur de la bordure

ATTENTION C EST THEORIQUE !!!
car en effet avec W7 et aero par exemple l'aero rajoute des points (un peu plus large)
d'ou ma variable op et ECX dans la sub placement qui gère selon le system ce qu'il faut enlever ou ajouter ou pas
par exemple le calcul me donnera pour l’épaisseur du cadre
3,4 pour XP SP3
4.2 pour W7
1.2 pour Windows 10
bref 1 ou 2 point d’écart c'est pas bien grave pour le calcul qui est nécessaire ici
il existe une api pour gerer les calcul avec aero mais je ne m'en souviens plus
bref tu as tout
 

patricktoulon

XLDnaute Barbatruc
re
si tu veux des calcul hyper precis
il te faudra utiliser les api getwindowrect pour capter le left top right,bottom de l'userform entier
capter aussi le getwindowrect de l'interieur par le sub handle (et oui un userform a 2 handle )avec getnextwindow et argument 5 et 2

faire le même calcul avec ces données et appliquer avec avec createrondrectangle etc.. comme je le fait
et encore là tu gère pas l'aero et compagnie
fait des recherches sur DVP j'en ai beaucoup parler avec pijaku par exemple c'etait le temps des cerises 😅😂🤣

ne pas oublier aussi (c'est important) que VBA a la facheuse manie d'arrondir a tout bout de chanp dans le transport de variable numérique ce qui facilite pas la tache

a moindre coût c'est ce que je t'ai donné (crois moi)
 

Dudu2

XLDnaute Barbatruc
Bonjour @patricktoulon, les Experts,

Voilà, j'ai fait un code pour la validation de données par ComboBox... qui à ce stade ne sert pas à grand chose :p sauf si on doit utiliser des fontes spéciales (Windings, etc...).

Je n'ai pas utilisé ton code car je n'ai pas réussi à bien positionner le rectangle et puis je préfère utiliser du basique que je maitrise. Un UserForm a une taille minimale et donc parfois excède la taille de la cellule mais ça n'a pas tellement d'importance pour la saisie.

Sur un autre sujet qui en a besoin, je vais l'intégrer avec la saisie filtrée, et c'est là que ça deviendra plus utile.

Edit: fichier supprimé
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bonjour les ComboBoxers,

Bon cette fois, après avoir bien ramé, notamment sur un Bug ComboBox / UserForm Unload, j'ai fait une validation de données par ComboBox (sur option filtrée en fonction de la saisie) qui s'approche plus de la "vraie" validation des données avec une première étape d'affichage qui peut soit être terminé par les touches de déplacement ou Entrée ou Escape, soit suivi d'une entrée en édition. Je vous passe les détails, mais c'est pas du tout simple à faire.

Si j'arrive à intégrer le carré Combo de @patricktoulon je le ferai pour être encore plus proche d'une validation de données standard.
 

Pièces jointes

  • VBA Validation par ComboBox dynamique simulant liste de validation et saisie filtrée V2.xlsm
    101.8 KB · Affichages: 0

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 234
dernier inscrit
matteo75654548