XL 2013 Trois petits problèmes dans Excel et VBA

GeoLek

XLDnaute Nouveau
Bonjour à tous,

Je n'ai pas l'habitude de rechercher sur des forum les solutions aux problèmes que je rencontre dans le développement des mes projets VBA.
Pardonnez-moi si je m'y prend mal ou que je suis trop long dans mes questions...

Je suis occupé à développer 2 grosses applications dans Excel.
Toutes les deux consistent à placer et manipuler sur une feuille des formes (shapes).
Je travaille avec 2 fichiers ouverts, l'un possédant la feuille en question (celle qui recevra mes "shapes"), d'autres feuilles contenant des données et le code VBA que je suis occupé à développer.
Ce code étant particulièrement complexe, le second fichier me sert à élaborer ce qui s'appelle, je crois, mon "pseudo-code".
Dans ce second fichier, j'ai déjà inséré pas mal de shapes et d'images, notamment des copies d'écran, qui m'aident à voir plus clair dans mon développement.

Mon premier problème provient du "volet de sélection" qui est sensé m'afficher la liste des formes (dont la plupart sont dans un groupe) de la feuille active.
Lorsque j'ouvre mes 2 fichiers, le volet de sélection m'indique bien cette liste se met correctement à jour lorsque je change de feuille ou de fichier.
Mais au bout d'un certain temps (1 heure ou plus ?), cette mise à jour ne s'opère plus.
Je suis obligé de refermer les fichiers et de les réouvrir !
Ensuite, cela marche de nouveau bien pendant une heure ou deux, et puis, ça recommence !
Si quelqu'un pouvait m'indiquer la raison de ce problème et, si possible, la solution, cela me permettrait de gagner beaucoup de temps...

Mon second problème concerne le positionnement par le code VBA d'une "InputBox" et une "MsgBox" dans le coin supérieur gauche de l'écran.
Pour l'InputBox, j'y suis arrivé +/- en utilisant la méthode InputBox de l'objet Application d'Excel.
Dans sa syntaxe, les arguments "left" et "top" permettent d'agir sur la position de l'objet mais je n'ai trouvé nul part d'indication sur la valeur à donner à ces argument.
Si je leur donne la valeur "0", l'InputBox se place bien comme je le souhaite dans la coin supérieur/gauche de l'écran.
A partir de 400/500, l'InputBox se déplace un peu vers le centre.
Comment puis-je maîtriser complètement ce problème de positionnement ?
Cela permettrait de choisir d'autres emplacements si nécessaire.
Pour une MsgBox, je n'ai toujours pas trouvé de solution et c'est très embêtant car en se plaçant chaque fois au milieu de l'écran, elle masque une partie de ma feuille.

Mon troisième problème consiste à insérer la copie d'une forme du plan par la méthode "Duplicate" (pour qu'elle se range dans le même groupe que son modèle) seulement si cette forme n'existe pas encore.
J'ai trouvé une méthode très simple en utilisant l'expression "On error goto 901".
Si juste après je demande de changer une propriété de la shape(T) par exemple (T = nom de la shape), le programme devrait se poursuivre à la ligne indiquée en marge par l'étiquette "901":
901 On error goto 0
Wr.Shapes("NomModèle").Duplicate.Name = T
Resume
La plupart du temps, cela fonctionne très bien, mais quelquefois une erreur se produit (forme avec le nom T non trouvée), alors que "On error" devrait empêcher le bogue !
Pour l'éviter, j'ai été obligé de modifier mon code en créant une "GoSub" qui cherche si la forme se trouve dans son groupe et l'insère s'il ne la trouve pas.
Ca marche très bien , mais c'est beaucoup plus lourd et sans doute plus long dans le cas où le groupe contient de nombreuse formes.
Merci à celui qui peut m'expliquer ce problème...

A bientôt, j'espère

Georges
 

jmfmarques

XLDnaute Accro
Bonjour et bienvenue
Comme tu le dis toi-même, il s'agit de trois problèmes totalement distincts, qui n'ont d'autre lieu commun que celui du développement de ton application.
L'utilité des discussions de ce forum est bien évidemment l'exposé d'une difficulté et de la manière de la résoudre.
Tu pourrais, dans cet esprit (et donc celui de l'intérêt commun) sans doute envisager d'ouvrir une discussion par difficulté technique isolée.
 

Discussions similaires

Réponses
4
Affichages
273
Réponses
4
Affichages
277