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 :

bouton cancel dans userform [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Par défaut bouton cancel dans userform
    Bonjour,

    voici la situation, j'ai un fichier ppt qui lance un fichier excel et lance un macro du fichier excel, grace a ces lignes de codes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    ' Ouverture d'Excel
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Set xlApp = CreateObject("Excel.Application")
     
    Dim Nom_Fichier As Variant
     
     
    ' Ouverture du fichier Excel devant recevoir les informations
    Nom_Fichier = ActivePresentation.Path & "\CinematiquePSA.xls"
    Set xlBook = xlApp.Workbooks.Open(Nom_Fichier)
     
    xlApp.Run "import_lengths"
     
    xlApp.Quit
    Set xlApp = Nothing
    dans ma macro excel "import_lengths" je lance un progressbar qui se trouve dans mon fichier excel avec les lignes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim frm As New Progress_Bar
    frm.Show vbModeless
    dans cette progressbar, j'ai un bouton cancel.

    ce bouton cancel est utilse si l'utilisateur veut stoper la macro en route.

    la macro associé au bouton cancel est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ThisWorkbook.Close SaveChanges:=False
    ce qui permet de quitter la macro excel, le fichier excel sans sauvegarder et pouvoir relancer le calcul plus tard car plus aucune application excel est ouverte en arrière plan.

    tout ceci marche très bien lorsque ma macro powerpoint principale est dans un module mais pour certaines raison j'ai du ecrire la meme macro dans un slide et non un module.

    et là un pb se pose:

    quand je clique sur le bouton cancel j'ai un message d'erreur :

    erreur d'execution '440':

    la méthode "run" de "-Application" a échouer.
    est ce que quelqu'un pourrait donc me dire ce qu'il faut que je change pour ce bouton cancel?

    Merci

    Yves

  2. #2
    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 heuh!!!
    bonjour


    Dim frm As New Progress_Bar
    frm.Show vbModeless
    la je t avoue je ne comprend pas tres bien

    a mon avis c'est pas ca ou il manque pas mal sde code dans ton post


    tu declare un control et tu lui demande de s'afficher la deja ya pas bon

    ensuite pour afficher un control il lui faut un support soit une feuille soit un usf

    enfin la en l'etat tu ne le fera jamais marcher


    il faudrais que tu crée un usf et que tu y memte ton progressbar et un bouton
    pour annuler et que tu mette un "doevents" dans la boucle qui modifie la progressbar pour pouvoir garder la main sur ton fichier quand la boucle tourne




    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

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Par défaut
    oui en effet la progressbar est sur une userform

    j'ai bien mis les doevents dans mes boucle, tout marche très bien (sauf le cancel bien sur!).

    et dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim frm As New Progress_Bar
    frm.Show vbModeless
    progress_bar est le nom de la userform qui contient la progressbar... jai sais c'est peu etre un peu maladroit mais je m'y retrouve.

    j'espère avoir été plus clair

    Merci

    Yves

  4. #4
    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
    ok
    dis moi ou tu a placer le "doevents" car tres souvent il n'est poas a ca place

    parfois apres la boucle suffi mais des fois selon le type de boucles il faut qu'il soit a l'interieur

    fait un essai simple

    met a l'evenement du clic du bouton cancel

    msgbox" la boucle devrait etre aretéé"
    si tu vois le message c'est bon sinon c'est que ca ne l'est pas

    il faut aussi ajouter un variable de type boolean
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim stope as boolean' en haut de nimporte quel module standard
    dans la macro qui enclenche la boucle et non pas la boucle elle memme 'fait attention a ca

    tu met stope=true 'en debut de macro avant l'apel a la boucle


    et dans le clic du bouton en premiere ligne
    stope =false

    dans le initialise de l'usf ou le thisworbook.open tu met
    stope=false


    dans ta boucle
    en dessous de "do" ou for blablablab,ou toute autre forme de boucle tu met
    if stope=true then exit sub'

    conclusion:

    tu demare le classeur
    la variable "stope" prend la valeur "false "

    tu apel la macro qui apelle la boucle
    et la en premier ligne la variable "stope" passe a true

    une fois que la boucle demarre la boucle a chaque boucle elle verifie que stope est a true ou false et si elle st a false elle s'arretera

    le doevents est la pour te permetre de pouvoir apuyer sur le bouton cancel
    et en apuyant sur le bouton ,stope va passer a false
    et des que tu va relacher la souris la boucle continu et a la verification elle va s'arretyer puisque stope est maintenant a false

    voila jespere avoir eté clair moi aussi


    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

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Par défaut
    bonjour,

    j'ai bien essayé ce que tu m'as dis de faire hier mais jai encore des pb:

    dans mon fichier excel, j'ai une macro dans la quelle il y a des boucles.
    est ce c'est bien dans cette macro que je dois mettre en debut?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim stope as boolean
    stope = true
    ensuite tu me dis de mettre sur le clik du bouton cancel de l'usf:

    stope = false

    mais est ce que je dois declarer cette variable "stope" aussi dans cette macro du click du bouton. et je ne vois pas comment est ce la macro principale (qui test la variable stope) peut connaitre la nouvelle valeur de stope vu que je la modifie dans une autre macro... je ne sais pas si je suis très clair, mais en gros je ne vois pas comment en mettant stope = false sur le click du bouton de l'usf, la macro principale peu voir ce changement de valeur dde la variable stope...?

    et sinon en faisant le test des msgbox pour voir si les doevents etait bien placcé a marché, ils sont donc bien placé.

    je doi finir ce truc avant demain...

    merci

    Yves

  6. #6
    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
    bonjour


    ok

    je vair repeter pour que tu comprenne mieux


    la variable stope est declarée en public tout en haut de nimporte quel module standard avant toute ligne de code

    tu n'a plus a la declarer apres ca ,elle est memorisé tant que le classeur est ouvert

    ainsi tu pourra t'en servir dans tout les modules meme les userform sans la redeclarer


    pour le reste ca ne change pas tu la met a true dans la macro qui apel la boucle

    tu la met a false sur l'evenement click du bouton

    et dans la boucle ellememe tu met if stope =true then exit sub juste en dessous du "do" ou du "for blablabla"

    je ne peut pas etre plus clair


    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

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

Discussions similaires

  1. Bouton impression dans userform
    Par jackborogar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/06/2012, 15h22
  2. Obtenir le dernier bouton cliqué dans userform
    Par modenofx dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/11/2011, 19h35
  3. [XL-2007] Bouton toupie dans userform
    Par dodo28 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 04/01/2010, 17h35
  4. vba ajout de bouton dynamique dans userform + action sur bouton ajouté
    Par choupette_64 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/07/2009, 15h04
  5. [VBA-E] Evenement associé au bouton crée dans une userform
    Par AH... dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/02/2007, 14h06

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