[macro openoffice] programmation d'un msgbox

Résolu/Fermé
Didier61 Messages postés 7 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 5 décembre 2006 - 26 oct. 2006 à 19:11
Didier61 Messages postés 7 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 5 décembre 2006 - 5 déc. 2006 à 22:59
<ccm>bonjour à tous
Je me lance dans les macos sous OOo 2.0.4 mais je débute. Dans Calc sur la 1ere feuille j'ai positionné des boutons qui me peremettent d'afficher l'une des dix autres feuilles une fois sur la feuille désirée j'ai plusieurs boutons qui me permettent d'imprimer une sélection. je ne trouve pas les solutions pour les problèmes suivants :
1) L'enregistreur prend en compte dans la macro le numéro de la feuille pour la faire apparaître mais je voudrais utiliser le nom de la feuille.

2) Je n'arrive pas insérer un msgbox avec deux boutons ok et annule afin de poser une question et confirmer l'impression ou l'annuler.
merci de votre aide
Didier

5 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
26 oct. 2006 à 19:45
Salut,

voilà pour msgbox
REM  *****  BASIC  *****

Sub Main
	dim repMsgBox as String
	'0 - seulement ok
	'1 - ok + annuler
	'2 - interromptre + réessayer + annuler
	'3 - oui + non + annuler
	'4 - oui + non
	'5 - réessayer + annuler
	'6 - ok
	
	'les icônes
	' 0 aucune
	' 16 message critique X
	' 32 Question ?
	' 48 Avertissement !
	' 64 Information i
	
	' choix du bouton par défaut
	' 0 le premier
	' 256 le 2ème
	' 512 le dernier
	
	' le type du message c'est la somme de 3 valeurs au choix
	
	'Ex : le type 3 avec question et le 2ème par défaut
	' 3 + 32 + 256 = 291
	repMsgBox=msgbox("Hello, je suis MsgBox",291)
	
	' ici je récupere le retour de msgbox
	msgbox repMsgBox


End Sub
lami20j
5
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
26 oct. 2006 à 21:15
Re,

REM  *****  BASIC  *****

Sub Main
' le msgbox retourne une valeur en fonction du bouton que tu utilises
' 1 pour ok
' 2 pour annuler
' à toi de découvrir le reste

	dim repMsgBox as String

	repMsgBox=msgbox("Hello, je suis MsgBox",1)
	
	
	'maintenant on va utiliser le retour du msgbox
	'donc en fonction du bouton utilisé on exécute quelque chose
	if repMsgBox=1 then
	   msgbox "Vous avez cliquez sur OK"
	elseif repMsgBox=2 then
	   msgbox "Vous avez cliques sur ANNULER"
	end If
End Sub
Et dans ton cas
REM  *****  BASIC  *****

Sub Main
' le msgbox retourne une valeur en fonction du bouton que tu utilises
' 1 pour ok
' 2 pour annuler
' à toi de découvrir le reste

	dim repMsgBox as String

	repMsgBox=msgbox("Voulez-vous continuer?",1,"Didier61 Macro")
	
	
	'maintenant on va utiliser le retour du msgbox
	'donc en fonction du bouton utilisé on exécute quelque chose
	if repMsgBox=1 then
	   oDocument = ThisComponent.CurrentController.Frame
		dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
		dim args1(0) as new com.sun.star.beans.PropertyValue
		args1(0).Name = "ToPoint"
		args1(0).Value = "$B$26:$R$43"
		dispatcher.executeDispatch(oDocument, ".uno:GoToCell", "", 0, args1())
		dim args2(2) as new com.sun.star.beans.PropertyValue
		args2(0).Name = "Copies"
		args2(0).Value = 1
		args2(1).Name = "Selection"
		args2(1).Value = true
		args2(2).Name = "Collate"
		args2(2).Value = false
		dispatcher.executeDispatch(oDocument, ".uno:Print", "", 0, args2()) 
	elseif repMsgBox=2 then
	   	msgbox "L'exécution a été annulée.",64,"Didier61 Macro"
	   	exit sub
	end If
End Sub
lami20j
2
Didier61 Messages postés 7 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 5 décembre 2006 5
26 oct. 2006 à 20:29
Merci lami20j d'avoir épondu aussi rapidement mais mon problème n'est pas entièrement résolu ceci est le début de ma macro

sub Imp1
dim repMsgBox as string
repMsgBox=msgbox("Voulez-vous imprimer cet état ?",289)

mais quelles sont les fonctions qui doivent suivre de manière à ce que lorsque je clic sur le bouton annuler il sorte de la macro et si je clic sur ok il poursuive ma macro ci dessous

oDocument = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$26:$R$43"
dispatcher.executeDispatch(oDocument, ".uno:GoToCell", "", 0, args1())
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Copies"
args2(0).Value = 1
args2(1).Name = "Selection"
args2(1).Value = true
args2(2).Name = "Collate"
args2(2).Value = false
dispatcher.executeDispatch(oDocument, ".uno:Print", "", 0, args2())
End sub

merci
0
Didier61 Messages postés 7 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 5 décembre 2006 5
27 oct. 2006 à 00:21
Encore merci à lami20j ça fonctionne bien et la macro est la suivante :

sub Imp1
dim repMsgBox as string
repMsgBox=msgbox("texte désiré",somme des 3 chiffre de choix, "éventuellement non de msgbox")
if repMsgBox=1 then

(texte de la macro que l'on veut voir exécuter ou non)

elseif repMsgBox=2 then
exit sub
end If
end sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,
j'aimerais savoir comment tu programmes les boutons pour naviguer entre les différentes feuilles du classeur. je migre de lotus 123 vers calc et ne trouve pas cette fonctionnalité.
Merci
-pyer
0
Didier61 Messages postés 7 Date d'inscription jeudi 26 octobre 2006 Statut Membre Dernière intervention 5 décembre 2006 5
5 déc. 2006 à 22:59
Bonsoir -pyer
Sur une feuille de calc tu positionne un bouton pour chacune des feuilles sur lesquels tu veux avoir accès et tu associes chaque bouton à une macro comme indiqué ci-dessous :

dim monDocument As Object, lesFeuilles As Object, maFeuille As Object, maCellule As Object

Sub choix1 'choix 1 correspond au nom de ta macro
monDocument = thisComponent
lesFeuilles = monDocument.Sheets
mafeuille = lesFeuilles.getByName("feuille1") 'entre guillemets le nom de la feuille que tu désire obtenir
maCellule = maFeuille.getCellRangeByName("D5") ' l'adresse de la cellule que tu veux sélectionner enventuellement
monDocument.currentController.Select(maCellule)
End sub
Didier61
0