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 :

Formulaire qui se ferme intempestivement [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    utilisateur
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : utilisateur

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Par défaut Formulaire qui se ferme intempestivement
    Bonjour à tous,
    Encore une fois, je vais avoir besoin de vos lumières ! je souhaite, sur une feuille de calcul, afficher grâce à un bouton de commande un chronomètre et une série de boutons. Pour le chronomètre, j'ai trouvé mon bonheur, il fonctionne parfaitement (à vrai dire j'aurais bien été incapable de créer ce formulaire par moi-même) MAIS, si le formulaire-chronomètre s'affiche sans problème, il disparaît dès que j'insère la moindre forme (checkbox, bouton de contrôle ou autre). Auriez-vous une explication pour ce qui demeure pour moi un grand mystère ? Merci par avance pour vos réponses.Classeur2.xlsm

  2. #2
    Invité
    Invité(e)
    Par défaut
    Ce problème ne se produit pas avec les contrôles de formulaire simples

    remplacez le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set Obj = Worksheets("Test").OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
        DisplayAsIcon:=False, Left:=240, Top:=151, _
        Width:=85, Height:=20)
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Obj = Worksheets("Test").CheckBoxes.Add(139.5, 100.5, 53.25, 36)

  3. #3
    Membre averti
    Femme Profil pro
    utilisateur
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : utilisateur

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Par défaut
    Merci Volid pour cette réponse rapide ; je pense que vous me suggérez de remplacer tous mes contrôles ActiveX par des contrôles de formulaire n'est-ce pas ? cela semble effectivement fonctionner mais dans la macro "réelle" il y a également des boutons de commande alors le temps que je code tout cela, avec les mises en forme qui vont avec, cela risque de durer un peu d'autant que je sais que les syntaxes diffèrent pour la mise en forme (style et taille de police notamment) et j'ai tendance à les mélanger. Alors je teste tout cela mais, en attendant, je vous remercie encore.

  4. #4
    Membre averti
    Femme Profil pro
    utilisateur
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : utilisateur

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Par défaut
    Bon, je reprends cette discussion après avoir effectuer plusieurs tests. En fait, j'ai réussi à faire tourner ma macro autant avec des contrôles de formulaire qu'avec des ActiveX mais, dans les 2 cas, mon problème reste le même dès lors que j'insère dans ma feuille de calcul une macro créée dynamiquement. Je souhaite en effet copier une feuille A vers une feuille B puis, sur cette feuille B, ajouter mon formulaire Chrono, divers contrôles (de formulaire ou ActiveX) puis, de façon dynamique, une macro worksheet_SelectionChange (ainsi que les macros liées aux boutons ActiveX). Et c'est lors de la mise en place de ces macros sur la feuille B que mon formulaire Chrono disparaît. Même si je réduis le problème avec les contrôles de formulaire, il me reste quand même la macro Worksheet_SelectionChange à insérer. J'ai essayé de placer l'appel du formulaire avant l'insertion de la macro ou après et même par l'appel d'un autre module mais rien n'y fait. Auriez-vous une explication ou (encore mieux !) une solution ? Merci à Volid et à tous ceux qui voudront bien me répondre.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 511
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 511
    Par défaut
    Salut,

    Tu ajoutes "des macros créées dynamiquement", heu ... tu veux dire par injection de code ?
    Dans ce cas, il n'y a pas de surprises:
    Dès que tu touches à la structure du projet (ajout / suppression de fonction / variables globale / constantes globale ou modification de la signature de ces dernières), le projet s'effondre.

    Il y a d'autres moyens de créer du contenu dynamique, celle que je connait passe par les classes.
    J'espères que tu as de bonnes notions de POO.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je souhaite en effet copier une feuille A vers une feuille B puis, sur cette feuille B, ajouter mon formulaire Chrono,
    La forme chrono appartient au projet VBA et a aucun moment elle n'a été inséré dans une feuille, c'est un dialogue et il n'est pas possible de l'insérer, tout ce qui s"est produit avec votre code c'est que la forme est affichée au-dessus de la feuille mais dès on tente ajouter un contrôle ActiveX, Excel entre en mode création et désactive la forme.

    Utiliser plutôt Frame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       ActiveSheet.OLEObjects.Add ClassType:="Forms.Frame.1", Link:=False, _
            DisplayAsIcon:=False, Left:=203.25, Top:=26.25, Width:=157.5, Height _
            :=114
    il me reste quand même la macro Worksheet_SelectionChange à insérer. J'ai essayé de placer l'appel du formulaire avant l'insertion de la macro ou après et même par l'appel d'un autre module mais rien n'y fait
    Pour gérer les événements que ce soit pour la feuille ou les contrôles utiliser un module de Class mais le défi eet comment faire fonctionner simultanément le code du chrono avec deux formulaires a moins qu'il ait un seul qui est activé a la fois

  7. #7
    Membre averti
    Femme Profil pro
    utilisateur
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : utilisateur

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Par défaut
    Citation Envoyé par deedolith Voir le message

    Il y a d'autres moyens de créer du contenu dynamique, celle que je connait passe par les classes.
    J'espères que tu as de bonnes notions de POO.
    Euh non, pas vraiment ! mais Volid me suggère également de passer par un module de Class. J'ai du faire cela 1 ou 2 fois mais je ne maîtrise pas du tout. Je vais quand même chercher mais une marche à suivre, même sommaire, m'aiderait bien. En tout cas, merci pour vos suggestions.

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

Discussions similaires

  1. formulaire qui s'ouvre, se ferme et .. se réouvre
    Par emulamateur dans le forum IHM
    Réponses: 4
    Dernier message: 18/08/2012, 16h16
  2. [AC-2003] Probleme Formulaire qui ce ferme lors de clic
    Par scado dans le forum IHM
    Réponses: 1
    Dernier message: 21/01/2010, 17h02
  3. Réponses: 1
    Dernier message: 05/10/2007, 15h03
  4. Formulaire qui ferme la base
    Par ade94 dans le forum IHM
    Réponses: 1
    Dernier message: 07/09/2007, 18h23
  5. Formulaire qui ne se ferme pas.
    Par Smint dans le forum Access
    Réponses: 7
    Dernier message: 02/06/2006, 10h34

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