[Résolu]-Position d' une MsgBox

Bonsoir,
Suite à des recherches infructueuses, sauriez-vous me dire s’ il est possible de positionnez une MsgBox. Il semblerait que non mais avant de me lancer dans un userform, donnez moi votre avis.
Par avance merci.
Cordialement

Bonsoir @el-catala

Regardez la macro dans ce billet : elle détaille toutes les options de Messagebox().

Pour montrer à la communauté que la question a trouvé sa réponse, cliquez sur ✓ à côté de la “bonne” réponse, et “votez” en cliquant sur la flèche ^ de toute réponse utile. Ce sont les mécanismes utilisés pour communiquer la qualité des questions et réponses sur ce site. Merci!

Pour tout complément d’information, **éditez** votre question ou simplement **ajouter un commentaire**. N’utilisez pas une réponse.

Cordialement, Michel

Bonjour @ElCatala, @mgl

La procédure donnée par @mgl est très complète… mais peut-être un peu rébarbative :slight_smile:

Si tu n’as besoin que de gérer la position tu peux réduire à ceci :

Sub Main

dim oWindow as object
dim oToolKit as object
dim oMessageBox as object
dim lMsgBoxType as long
dim lMsgBoxBtn as long
dim iRet as integer

oWindow = stardesktop.currentFrame.ContainerWindow
oToolKit = CreateUnoService("com.sun.star.awt.Toolkit")

lMsgBoxType = com.sun.star.awt.MessageBoxType.MESSAGEBOX

lMsgBoxBtn = 	com.sun.star.awt.MessageBoxButtons.BUTTONS_YES_NO_CANCEL + _
				com.sun.star.awt.MessageBoxButtons.DEFAULT_BUTTON_NO

oMessageBox = oToolKit.createMessageBox(oWindow, lMsgBoxType, lMsgBoxBtn, "Titre du dialogue", "Texte du message")
oMessageBox.setPosSize(0, 0, , , com.sun.star.awt.PosSize.POS)

iRet = oMessageBox.execute

end sub

Dans cet exemple le message s’affiche en haut à gauche de la fenêtre appelante : les deux 0 dans la ligne setPosSize sont les positions X et Y (par exemple si tu exécutes la procédure depuis ta fenêtre macro, et que cette dernière n’est pas en plein écran).

Si tu veux utiliser la procédure complète tu peux l’appeler ainsi :

sub testAsk
Dim strMsg As String : strMsg = "My name is " +chr(2)+ "John " +chr(2)+ "Roberts"
Dim aProps1(0) As New com.sun.star.beans.PropertyValue : aProps1(0).Name = "CharWeight" : aProps1(0).Value = 150.0
Dim aProps2(0) As New com.sun.star.beans.PropertyValue : aProps2(0).Name = "CharColor"  : aProps2(0).Value = rgb( 255, 10, 10 )
Dim aStyles() : aStyles = Array( Array(), aProps1, aProps2 )
dim fontdesc as new com.sun.star.awt.FontDescriptor
with fontdesc
	.Name = "Liberation Sans"
    .Weight = 200
    .Height = 22
end with    
MessageBox( strMsg, 2, "Family" , 1, aStyles, 600, 100,fontdesc, 0,0)

end sub

Ici, la position est déterminée par les deux derniers 0 de la ligne (600 et 100 sont largeur/hauteur)

MessageBox( strMsg, 2, "Family" , 1, aStyles, 600, 100,fontdesc, 0,0)

Cordialement

Bonsoir,
Merci de votre aide. Je vais tester votre solution avant de fermer cette discussion. Je vous donnerai le résultat demain soir.
Bon week-end