Code pour un bouton "annuler"

Pives -  
pives Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis sur un formulaire sous excel et je voudrais que mon bouton "annuler" ferme le formulaire et renvoit à la première page du workbook (comme un retour)... Seulement voila j'ai essayé quelques codes et je n'y arrive pas...
Quelqu'un peut-il m'aider ?

ps: le formulaire se lance quand on ferme excel, peut-être que le pb vient de là!
Configuration: Windows XP
Firefox 2.0.0.13

19 réponses

Résumé de la discussion

Un formulaire Excel est au cœur de la question, visant à fermer le dialogue avec le bouton Annuler et à renvoyer à la première feuille du classeur. Plusieurs échanges distinguent entre feuilles de dialogue et userforms, avec des solutions fondées sur la propriété Faire Disparaitre ou sur des contrôles en mode création. Des propositions incluent faire disparaître le formulaire via le bouton, ou créer deux boutons distincts : quitter et sauvegarder, et quitter sans sauvegarder, afin de renvoyer sur la feuille Edito. En cas de solutions, la discussion note aussi des effets instables et des ajustements de comportement selon les versions d’Excel et l’environnement, avec une préférence émergente pour une approche pratique et robuste.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. amigo
     
    Bonjour,

    Non ce n'est pas ça,

    C'est bien des feuilles de dialogues et non des userform que tu utilises, n'est-ce-pas? Car sinon, le fonction Me.Hide fonctionne à coup sur.

    C'est sur la feuille de dialogue qu'il faut agir, selectionnes la feuille et mets toi en mode création, c'est le bouton avec une regle et une equerre, ensuite suis les instructions.

    Click droit sur le bouton, Format du controle , onglet Controle, Cocher la case Faire Disparaitre ou annuler

    Salut
    1
    1. pives
       
      Salu Amigo,

      j'utilise un userform qui se trouve sur une feuille...
      J'ai essayé la modif que tu m'as dit (clic droit bouton, Format du contrôle , onglet Contrôle, Cocher la case Faire Disparaitre ou annuler ), rien de concluant, mais je m'y prend peut-être mal !
      J'envois le doc par mail...
      0
  2. Sandriine Messages postés 1400 Statut Membre 283
     
    le code pour fermer le forumulaire est Me.close je crois...
    0
    1. Pives
       
      J'ai essayer, ça fait un message d'erreur:

      erreur de compilation, utilisation incorrecte du mot clé ME
      0
  3. Sandriine Messages postés 1400 Statut Membre 283
     
    essaye Nomdetonformulaire.close ou Unload(Me)
    0
    1. Pives
       
      quelques essais:

      Sub Nom
      Formulaire.Close
      End Sub réponse: erreur d'éxécution 424

      Sub Nom
      Unload (Me)
      End Sub réponse: utilisation incorrecte du mot Me

      hum hum ... J'en suis tout chose!
      0
      1. Pives > Pives
         
        De même j'ai éssayé:

        Sub Nom
        DialogSheets("Formulaire").Close
        End Sub réponse: erreur d'éxécution 438
        0
  4. Sandriine Messages postés 1400 Statut Membre 283
     
    le code que tu as essayé du l'as bien fait sur l'évenement click du bouton???
    0
    1. Pives
       
      Oui! fait et même refait pour être sur...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. amigo
     
    bonjour,

    essaye ça , à coller dans le code de ton bouton annuler

    private sub Annuler_click() ' nom du bouton

    Sheets("Feuil1").Select ' nom de la feuille de retour à modifier éventuellement
    Me.Hide

    end sub
    0
    1. Pives
       
      j'ai essayé il me répond encore "utilisation incorrecte du mot Me"
      0
      1. SyGEN Messages postés 62 Statut Membre 8 > Pives
         
        Et si tu mets correctement les parenthèses a la fonction hide vu que c'est une fonction et pas une propriété

        Me.Hide()

        ca dit quoi ?
        0
      2. Pives > SyGEN Messages postés 62 Statut Membre
         
        Désolé j'étais parti mangé! J'ai essayé:

        Private Sub Annuler_close()
        Sheets("Fermeture").Select
        Me.Hide ()
        End Sub

        Où "Annuler_close" est le nom de la macro
        et "fermeture" le nom de la feuille contenant le formulaire

        Réponse:
        erreur de compilation
        attendu: =
        la ligne Me.Hide() est en rouge...
        0
    2. Pives
       
      Amigo a dit:
      "Sheets("Feuil1").Select ' nom de la feuille de retour à modifier éventuellement "

      Qu'es-ce que tu appel la feuille de retour ?
      0
  7. amigo
     
    Re,

    J'ai essayé chez moi Me.Hide et ça fonctionne, peux-tu nous montrer ta macro pour voir?

    A+.
    0
  8. Pives
     
    J'ai beau réessayer y a rien qui marche... si quelqu'un a une idée elle sera la bienvenue!
    0
  9. Pives
     
    Par hasard j'ai lancé:

    Private Sub Annuler_close
    DialogSheets ("Fermeture").hide
    End Sub

    le résultat est que l'application se ferme, pour faire ça il y avait plus
    simple, mais c'est peut-être une piste. Maintenant il faudrait empêcher
    exel de se fermer.
    Un truc du style: enable Application.Quit (ça ne marche pas)

    Comment empecher excel de se fermer ?
    Et comment attérir par la suite sur la première page de mon workbook... ?

    Pas toujours facile pour un newbie, mais c'est ce qui fait le charme de VB.
    Quelqu'un peut-il m'aider?
    0
  10. amigo
     
    Bonjour,

    "fermeture" le nom de la feuille contenant le formulaire

    Tu travailles avec qu'elle version d'Excel? Si je me souviens bien c'est avec Excel 5 que je faisais de feuilles de Dialogues.

    Alors c'est pas tout a fait pareil. Le bouton qui fait fermer le dialogue doit avoir la propriété Faire Disparaitre ou Annuler.

    En mode Création, clic droit sur le bouton, Propriétés onglet Controle, Cocher la case Faire Disparaitre.

    En plus si tu doit afficher une autre boite de dialogue après la fermeture de celle-ci, il faut faire une procedure qui gère les affichages des dialogues dans une boucle...

    A+.
    0
    1. pives
       
      Salu Amigo

      J'utilise excel 2002.
      Quand tu parle de faire disparaître, c'est la fonction Hide je pense, mais ce qui pose pb
      c'est le "Me" je n'ai réussit à en passer aucun...j'ai cherché dans l'aide j'ai pas trouvé grand chose.

      J'ai essayé "faire disparaître", effectivement le formulaire se ferme mais l'application aussi...
      Comment empêcher excel de se fermer ? Il me faudrait un code en +.

      Sinon je n'ai pas de boite de fermeture à afficher après, mais je voudrais juste retomber sur la
      première page de mon workbook, si quelqu'un à des idées...
      0
  11. pives
     
    Finalement j'ai contourné le pb en editant 2 boutons:

    - QUITTER ET SAUVEGARDER

    Sub OK_close()
    ActiveWorkbook.Save
    ActiveWorkbook.Saved = True
    Application.Quit
    End Sub

    - QUITTER SANS SAUVEGARDER

    Sub Annuler_close()
    Application.Quit
    Application.DisplayAlerts = False
    End Sub

    C'est pas exactement ce que je voulais, car ce n'est pas
    un bouton "Annuler" en tant que tel, mais ça fera l'affaire!
    0
  12. amigo
     
    Tu as oublié de coller le lien vers le fichier? Je ne le vois pas.

    A+.
    0
    1. pives
       
      Excuse j'avais oublié en effet!
      0
      1. pives > pives
         
        http://www.cijoint.fr/cjlink.php?file=cj200804/cijxnOBmew.xls.
        0
  13. amigo
     
    J'ai le fichier

    Il y a une feuille "Ouverture" avec un bouton OK, Qu'est que tu veux faire qand on click dessus?

    PS: il va falloir que je sorte, je regarderais à mon retour.

    A+.
    0
    1. pives
       
      La feuille "ouverture" contient un userform qui se lance lorsque l'on quitte excel.
      Le bouton OK permet de sauvegarder et de quitter, mais pour celui là c'était bon.

      Ce qu'il me faut c'est le bouton Annuler qui permettrai de fermer le formulaire
      et de retomber sur la première page (nommée "Edito") du workbook... un peu comme les boutons retour
      que l'on trouve partout...
      exemple: tu fermes un doc, l'application te demande: voulez-vous enregistrer ? oui,non,annuler
      Si tu fais annuler tu reviens en arrière et la procédure de fermeture est avortée.
      Sinon ça veut dire que une fois le formulaire ouvert il n'y aurait aucun retour possible et l'application se fermera
      quoiqu'il se passe !

      Je ne sais pas si je me suis fait comprendre ?
      Si je ne suis pas clair dis-moi, ou si tu as d'autres idées je suis preneur.

      ps: T'inquiètes tu peux sortir je ne t'en voudrais pas, c'est déjà cool de m'aider.
      0
  14. amigo
     
    Re,

    Voila ce qu'on peut faire. En quittant Excel, la feuille "Fermeture" s'affiche. Le bouton 'Quitter et Sauvegarger' enregistre le document et quitte Excel. Le bouton 'Quitter sans sauvegarder' lance la procédure classique de fermeture d'Excel qui pose la question 'Voulez-vous enregistrer ... Oui Non Annuler'
    Reponse Oui > Enregistre et Quitte
    Reponse Non > Quitte sans enregistrer
    Reponse Annuler > Revient a la feuille Edito

    Est ce que ça répond à ton problème?

    A+.
    0
    1. pives
       
      C'est vrai que je peux profiter de la fenêtre de fermeture pour le bouton annuler...
      Je pense faire comme ça, ça sera plus simple tout compte fait.
      Encore merci a toi Amigo !
      0
  15. amigo
     
    Re,

    En attendant ta réponse, j'ai trouvé mieux, c'est à dire que le bouton 'Quitter sans sauvegarder' peut etre renommé 'Annuler' et aurait pour effet de revenir à la feuille 'Edito' sans poser aucune question.

    Est ce bien cela que tu cherchais?

    A+.
    0
    1. pives
       
      Je m'étais résigné, mais là c'est exactement ce qu'il me faudrait!
      0
  16. amigo
     
    Bonsoir, me revoila

    Est ce que je te renvoie le fichier modifié, ou bien tu préfères les explications et faire les modifications toi-même?

    A+.
    0
  17. amigo
     
    Re

    Tout compte fait, je ne vais te laisser languir, je te renvoie le fichier par le même canal

    http://www.cijoint.fr/cjlink.php?file=cj200804/cijbDtzSVf.xls

    Si tu as besoin d'explications , fais signe.

    Ciao.
    0
    1. pives
       
      Merci Amigo!
      Là vraimen je ne sai pa quoi dire ... tou simplement MERCI !
      J'ai regardé vite fait et ya plein de trucs que je comprend pas,
      mai çà marche au poil !

      Je connaissais pas "option explicit" et le 'if...'
      en memê temps j'ai découvert VBA lundi...

      Et bien encore merci Monsieur Amigo,
      ca donne envie de continuer...


      Tchô !
      _________________________________

      ---La résignation est un sucide quotidien---
      0
    2. pives Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   32
       
      Salut,

      Me revoilà!! je suis toujours sur le même document qu'avant et j'ai un petit soucis:
      J'ai créer un userform dans lequel j'ai mis une zone de saisie de texte (comme un cadre dans lequel on peut écrire),
      mais problème lors de la saisie... quand on tape du texte et que l'on fait "entrée" pour aller à la ligne la fenêtre se valide et se ferme aussitôt ! Et le texte s'écrit sur une seule et même ligne par défaut, c'est plutôt génant! Il faudrait annuler le bouton entrée sur cette fenêtre ou quelquechose comme ça...

      Si quelqu'un à une idée pour remédier a ce problème je suis preneur!
      0
  18. amigo
     
    Bonjour,

    Pour ne pas fermer la fenetre en appuyant sur Entrée, dans format du controle, tu dois décocher la propriéte 'par défaut' du bouton Fermer ou Quitter ou Annuler (suivant ce que tu as sur ta fenêtre).

    La zone de texte , Format du controle , cocher 'Retour à la ligne' et 'Barre de défilement verticale'

    A+.
    0
    1. pives Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   32
       
      Merci Amigo,

      ça marche au poil...J'en profite pour demander autre chose:
      J'ai créer un bouton "envoyer par mail" qui lance la boite de messagerie, le seul problème c'est que d'un pc à l'autre les configurations ne sont pas les mêmes, et du coup parfois cela plante, y a t-il un moyen d'y remédier ?

      Voila le code

      Sub Mail()

      ActiveWorkbook.Save
      Application.Dialogs(xlDialogSendMail).Show
      End Sub
      0
    2. pives Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   32
       
      Re

      je viens de me rendre compte que dans la zone de texte la saisie est limitée, au bout d'un moment on ne peut pas ecrire partout!
      0
    3. pives Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   32
       
      Autant pour moi ça marche de nouveau, ça à l'air d'être un peu instable!
      0
  19. amigo
     
    Re,

    Pour la zone de texte, je pense que les fonctionnalités doivent etre limités, ce n'est pas un véritable éditeur de texte.

    En ce qui concerne la messagerie, J'ai essayé chez moi et ça marche. Je pense que ça plante si la messagerie n'est pas correctement configurée, ou alors peut-etre que ce n'est pas Outlook...?

    A+.
    0
    1. pives Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   32
       
      Ok merci

      A+
      0