[Résolu][Calc] If msgbox + 3 actions

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
cedric86fr
Membre OOrganisé
Membre OOrganisé
Messages : 85
Inscription : 22 avr. 2022 13:28

[Résolu][Calc] If msgbox + 3 actions

Message par cedric86fr »

Salut,

Je souhaite mettre en place une msgbox avec 3 boutons qui activent 3 actions différentes.

Avec le code ci-dessous, je n'arrive à en gérer que 2.

Comment faudrait-il s'y prendre pour gérer la 3ème action ??

Code : Tout sélectionner

Sub Main
SL = +chr(13) + chr(13)

If msgbox ("Voulez-vous pousuivre l'exécution du programme ?" & _
		SL + "Réessayer = continuer l'exécution du programme erreur par erreur" & _
		SL + "Ignorer= continuer l'exécution du programme en ignorant toutes les erreurs" & _
		SL + "Interrompre = sortir du programme", MB_ABORTRETRYIGNORE + MB_ICONQUESTION, "Gestion des erreurs") = 4 Then
			Print "on continue en traitant les erreurs une par une !"
		Else if 3 Then
			Print "on continue sans tenir compte des erreurs !"	
		Else if 5 Then
			print "on s'arrête ici !"
		End if
		End if
		End if
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par cedric86fr le 03 juil. 2023 21:13, modifié 1 fois.
Libreoffice 7.2.7.2.M7 (x64) (obligation de version) sur Windows 10
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1047
Inscription : 19 août 2018 05:20

Re: [Calc] If msgbox + 3 actions

Message par Dolev »

Bonsoir,

Avez-vous recherché un peu dans ce forum ?
XMessageBoxFactory permet d'avoir des boîtes de dialogue étendues
La section Suprême de code donne un exemple : viewtopic.php?p=248734#p248734

Et sinon, l'exemple fourni par Dude dans votre précédente question gère ça également : viewtopic.php?t=67437
Pourquoi reposter la même question ? :roll:
Open Office 4.1.15 sous Windows 11
cedric86fr
Membre OOrganisé
Membre OOrganisé
Messages : 85
Inscription : 22 avr. 2022 13:28

Re: [Calc] If msgbox + 3 actions

Message par cedric86fr »

Dolev a écrit : 03 juil. 2023 20:01 Bonsoir,

Avez-vous recherché un peu dans ce forum ?
XMessageBoxFactory permet d'avoir des boîtes de dialogue étendues
La section Suprême de code donne un exemple : viewtopic.php?p=248734#p248734
Merci pour l'info, j'ai regardé le suprême de code mais je n'arrive pas à intégrer les renvois à la ligne avec & _
Dolev a écrit : 03 juil. 2023 20:01 Et sinon, l'exemple fourni par Dude dans votre précédente question gère ça également : viewtopic.php?t=67437
Pourquoi reposter la même question ? :roll:
Parce que je n'ai pas posé cette question et le lien avec mon problème ne me semble pas évident :roll:

Code : Tout sélectionner

Sub Main
Dim Reponse as long

SL = +chr(13) + chr(13)

reponse = msgbox ("Voulez-vous poursuivre l'exécution du programme ?" & _
		SL + "Réessayer = continuer l'exécution du programme erreur par erreur" & _
		SL + "Ignorer= continuer l'exécution du programme en ignorant toutes les erreurs" & _
		SL + "Interrompre = sortir du programme", MB_ABORTRETRYIGNORE + MB_ICONQUESTION, "Gestion des erreurs") 
		

If reponse = 4 Then
	Print "on continue en traitant les erreurs une par une !"
Else if reponse = 5 Then
	Print "on continue sans tenir compte des erreurs !"	
Else if reponse = 3 Then
	print "on s'arrête ici !"
End if
End if
End if

End Sub
Je passe en résolu.
 Ajout : 
J'avais oublié de reprendre la variable SL = +chr(13) + chr(13)

Autre solution avec le supreme de code (les boutons ne sont pas dans le même ordre et interrompre renvoie 0 et pas 3)

Code : Tout sélectionner

Sub Main
SL = +chr(13) + chr(13)

	App = StarDesktop().getFrames().getByIndex(0)
	Window = App.getContainerWindow()
	Kit = Window.getToolkit()
	BoxType = com.sun.star.awt.MessageBoxType.QUERYBOX
	BoxButtons = com.sun.star.awt.MessageBoxButtons.BUTTONS_ABORT_IGNORE_RETRY
	
	MessageBox = Kit.createMessageBox(Window, BoxType, BoxButtons, "Gestion des erreurs", "Voulez-vous pousuivre l'exécution du programme ?" & _
		SL + "Réessayer = continuer l'exécution du programme erreur par erreur" & _
		SL + "Ignorer= continuer l'exécution du programme en ignorant toutes les erreurs" & _
		SL + "Interrompre = sortir du programme")
	
	Selection = MessageBox.execute() ' renvoie la constante du bouton sélectionné

	MessageBox.dispose()
	Print Selection
	
	If selection = 4 Then
		Print "on continue en traitant les erreurs une par une !"
	Else if selection = 5 Then
		Print "on continue sans tenir compte des erreurs !"	
	Else if selection = 0 Then
		print "on s'arrête ici !"
End if
End if
End if
	
End Sub
 
Libreoffice 7.2.7.2.M7 (x64) (obligation de version) sur Windows 10