Se connecter avec
S'enregistrer | Connectez-vous

Passage de variable de "forms" vers "vba" sous excel

Dernière réponse : dans Programmation

Sous excel :
comment recuperer une variable créer dans un formulaire - ex : public cancel_creation - dans un module vba - ex : if cancel_creation = false then ... ??

J'ai créé un formulaire avec un bouton cancel
J'associe au bouton cancel une variable cancel_creation

  1. Private Sub CommandButton2_Click()
  2. '
  3. ' cancel the execution : close the sheet
  4. '
  5. Unload TicketCreation
  6. cancel_creation = True
  7. End Sub

Ensuite, je veux tester dans un script "general" cette valeur, mais elle n'est pas initialisée.

  1. Private Sub Workbook_Open()
  2. '
  3. ' open the window command
  4. '
  5. TicketCreation.Show
  6. '
  7. If cancel_creation = False Then
  8. '
  9. ' create ticket
  10. '
  11. create_ticket
  12. '
  13. End If
  14. '
  15. End Sub

le test se plante car cancel_creation est vide, alors qu'il est bien initialisé par le formulaire.


Comment passer cette variable sans aller l'écrire dans une cellule d'un coté pour la relire de l'autre ?

Merci
Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

Euh, tu as trouvé une solution palliative et tu veux faire mieux ?
Ben c'est bien ça. Alors sûr qu'on a des idées et qu'on va t'en proposer.
A toi de faire le tri.

Alors moi, je te propose de créer une variable public dans ton module d'où tu appelles ton "form", donc je suppose dans la partie "Microsoft Excel Objects" et dans ton form, tu renseignes cette variable :

  1. ' // Dans Microsoft Excel Objects, dans la feuille 1
  2. Public cancelle As Boolean
  3.  
  4. ' // Dans Form
  5. Feuil1.cancelle = True

merci pour l'info mais bien sur ça ne fonctionne pas pour moi car je n'ai qu'un seul projet ...

Tu dis dans le topic
Citation :
Mais certainement pas en mémoire, sauf si je n'ai pas compris ton histoire de "projet

et je pense que c'est cela qui m'intéresse justement.

J'ai mis le résultat de mon clic "cancel_creation" dans une cellule que je peux récupérer dans la suite du script. J'aurais juste aimé pouvoir me passer de cette écriture / lecture pour une variable qui se trouve dans le même projet mais pas au même endroit ( initialisée dans la partie "Forms" et utilisée dans la partie "Microsoft Excel Objects" )

Si tu as une autre idée je suis preneur bien sur, sinon tant pis je continuerais de passer par une cellule.


Bonne nouvelle j'ai trouvé. Il faut que je cache mon formulaire, que j'utilise les variables qui sont toujours intialisées puis que je décharge le formulaire.

Merci de ton aide zeb, tes topics m'ont fait un brainstorming et voila !


code corrigé

si appuis sur cancel on cache le formulaire
  1. private Sub cancelcreation_Click()
  2. '
  3. ' cancel the execution : hide the sheet
  4. '
  5. TicketCreation.Hide
  6. cancel_creation = "yes"
  7. End Sub


on récupère la variable car le contexte du formulaire existe toujours, il est juste caché
  1. Private Sub Workbook_Open()
  2. '
  3. ' open the window command
  4. '
  5. TicketCreation.Show
  6. '
  7. If cancel_creation = yes Then
  8. '
  9. ' unload the form
  10. '
  11. Unload TicketCreation
  12. '
  13. ' create the ticket
  14. '
  15. create_ticket
  16. '
  17. End If
  18. '
  19. End Sub
Expert Programmation

Ben t'es plein de bonne volonté : quand on te demande de respecter le forum, parce que tu n'aurais pas observé une obscure clause de publication, tu t'exécutes sans me raconter que je suis un immonde salopard d'oser sous-entendre les pires choses à ton endroits. Tes explications sont claires, tu ne fais que peu de fautes de français (si, si, il y en a :D  ), tu dis bonjour, s'il vous plaît, merci. Quand on te donne un lien, tu le lis, tu fais l'effort de comprendre. Si ça ne te convient pas, tu le dis en expliquant pourquoi, et tu redonnes des informations supplémentaires pour que ton problème soit encore mieux cerné.

Bref, tu fais tout pour que ce soit agréable de te rendre service. Du coup, tu obtiens rapidement et précisément ce dont tu avais besoin. T'as tout compris aux forums, toi ! :D 
Lassé par la pub ? Créez un compte