IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Gestion de la superposition de UserForms


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut Gestion de la superposition de UserForms
    Bonsoir,

    Selon le lieu où je travaille, j'utilise une version différente d'Excel. D'une part, Excel 2010, et d'autre part, Excel 2007.

    J'ai mis en place des macros qui font intervenir plusieurs UserForms afin d’interagir avec l'utilisateur. Notamment, une Userform va en appeler d'autres si on clique sur certains boutons.

    Mon problème est le suivant : à chaque apparition d'une nouvelle UserForm, je souhaite que la précédente s'efface, sans pour autant être "déchargée". Pour ce faire, j'ai simplement utilisé l'instruction .Hide au lieu de Unload.
    Sur Excel 2010, aucun souci, je parviens précisément à ce que je souhaite. En revanche, sous la version 2007 du tableur, avec le même code, les fenêtres se succèdent une à une, se superposant à l'écran (et lorsqu'on a des liste déroulantes, celles-ci restent en général déroulées), et ne s'effacent que lorsqu'on décharge le UserForm principal.

    Voyez-vous d'où peut venir cela, et surtout, comme le résoudre ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir aide en ligne [F1] sur vbModeless pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserFormX.Show vbModeless
    par défaut les UserForms sont VbModal

    Tuto à lire.

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    je ne pense pas que le fait que l'USF soit modal ou non soit en cause, le fait qu'il soit non modal peut par contre présenter des dangers...

    J'ai des applis qui tournent indifféremment sous 2007-2010 avec des cache-cache d'USF en pile sans souci.

    @ m@tix tu devrais faire un code tout simple avec juste quelques uns de tes USF et tester sous les 2 versions, si ça perdure, met le fichier en PJ

    Si le fichier test mini est OK, c'est uqe tu as un autre paramètre dans ton code complet qui met le zinzin..

    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  4. #4
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Bonjour,

    Merci pour vos réponses. Comme le suggère Ormonth, le problème ne vient pas du fait que le UserForm soit modal ou non. J'ai également testé de faire faire un fichier simple avec plusieurs UserForms, et en effet tout fonctionne bien. Le problème vient donc de mon code. D'où cela pourrait-il venir ?

    Détail important : lorsque j'exécute le code en pas à pas, tout fonctionne normalement... !

    Autre symptôme : lorsque je déplace les UserForms, celles-ci "restent" afficher sur l'écran, elles ne se déplacent pas mais se "copient" !

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu!...
    bonjour

    non tes userforms ne se copie pas mais la mémoire utilisées dans ton code est excessive donc le graphisme réagit en retard

    regarde si tu n'a pas une boucle qui perdure même après la fin dans ton code

    et dans le pire des cas met des tas de "doevents" dans tes boucles suspectes juste pour voir si ça peut pas permettre au userforms de se replacer graphique ment lors de leur déplacements


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, et pourtant sous Excel 2007 SP3 le fait de mettre les UserForms en vbModeless résoud le problème alors qu'en vbModal les Userforms s'empilent ...

  7. #7
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    J'ai ma réponse ! En fait, la ligne de code Application.ScreenUpdating = False était la cause de mes problèmes...

  8. #8
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour

    @kiki29, tu peux nous mettre un petit classeur à tester, je n'ai pas ce souci sur mes classeurs, donc faut creuser..


    @m@tix emploies-tu des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenupdating= False
    ?

    c'est symptomatique de comportements bizarres selon leur emplacement et la non remise à true, mais devrait se comporter idem sur les 2 versions ?

    le Doevents peut aider, mais ce serait plus un souci de config de poste que de version ?

    cordialement,

    Didier

  9. #9
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Citation Envoyé par m@tix Voir le message
    J'ai ma réponse ! En fait, la ligne de code Application.ScreenUpdating = False était la cause de mes problèmes...
    oups, pas rafraîchi, mais comme je disais, ça n'expliques pas la différence de comportement entre les 2 versions, peux-tu le reproduire sur ton test simple et nous le mettre en PJ, qu'on teste

    cordialement,

    Didier

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    en fait

    pour le comportement différent entre les deux versions ça peut être tout simplement le rafraîchissement graphique géré par windows voir ( le logiciel de ta carte graphique )très gourmand

    en fait il est très difficile de t'aider sur ce plan car il faudrais faire les teste sur la même bécane avec les deux version offices

    cela dis effectivement le "application .screenupdating=false "peut être la raison
    bien que chez moi par exemple avec windows 7 et office 2007 si je met application.screenupdating=fase" dans une macro et je joue avec les userforms et bien ces derniers ne sont même pas géré même a false

    tout ça pour dire que des pistes il y en a

    bon courage

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Merci pour vos compléments d'infos
    Du coup, je ne fournis pas de classeur exemple étant donné que ce comportement différent provient certainement de configurations (Excel ou PC) probablement différentes d'un PC à l'autre.. C'est tout de même curieux ! Comme si le ScreenUpdating était à True par défaut sur certaines versions, et à False sur d'autres..

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    je n'ai pas dis que false était a true sur certains et a false sur d'autre

    c'est la gestion graphique de l'ordinateur qui pouvait etre différente surtout si tu a un logiciel du style radeon ou nvidia qui sont souvent present dans les ordi vendu avec un pack

    essaie de déconnecter cette gestion graphique par le logiciel si c'est le cas

    ensuite regarde tes macros et met des doevents dans les boucles

    ensuite il faut savoir que office est assez gourmand quand même surtout quand il y a des grands codes dans les fichiers

    j'ai moi même essayer 2010 je suis vite revenu a 2007 mais ça c'est une question d'opinion

    ensuite
    si ton ordi commence a dater il y a de fortes chances qu'il manque de memoire graphique ou system

    des piste il y en a il faut les éliminer les unes apres les autres

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Citation Envoyé par patricktoulon Voir le message
    j'ai moi même essayer 2010 je suis vite revenu a 2007 mais ça c'est une question d'opinion
    moi qui pense que 2007 n'est que le brouillon de 2010

    cordialement,

    Didier

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    encore une fois c'a n'est qu'une histoire d'opinion

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    J'essaierai donc de voir avec les différentes options graphiques pour voir s'il y a du changement ! Même si sans les droits admin, ça risque être compliqué..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 20/05/2012, 17h55
  2. [XL-2007] Fichier de gestion Excel VBA - Userform
    Par Hilsen dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/07/2010, 11h24
  3. Gestion des évènements avec une superposition d'éléments
    Par Meardon dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/10/2008, 15h47
  4. Gestion d'évènement pour un Userform dynamique
    Par RemiT dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 18/12/2007, 16h34
  5. c# gestion de la superposition des rectangles
    Par TERRIBLE dans le forum C#
    Réponses: 1
    Dernier message: 27/08/2007, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo