[Résolu][Basic] Exécuter une macro à plusieurs variables

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 !
auie
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 27 juil. 2016 19:15

[Résolu][Basic] Exécuter une macro à plusieurs variables

Message par auie »


La modération vous a écrit: Veillez à ne pas inventer votre propre syntaxe de balisage : 1ere lettre en majuscule.

Chers tous :-)

Je commence à programmer en ooo basic 10 ans après avoir arrêté le VBA.
Je sais qu'on peut associer des touches ou cliquer à certains endroits pour faire fonctionner une macro ; mais je ne sais pas exécuter une macro dépendant de plusieurs variables. Pourrait-on me l'écrire s'il vous plaît ?
Je voudrais qu'elle me retourne un contrat après avoir indiqué la personne, la date de signature et le prix.
Dernière modification par auie le 23 juin 2017 08:16, modifié 3 fois.
Libreoffice Version: 6.0.3.2
Build-ID: 1:6.0.3-0ubuntu1
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [basic]Comment exécuter une macro à plusieurs variables

Message par Churay »

Bonsoir

La boule de cristal restant silencieuse ce soir, tournons-nous vers les philosophes :
Confucius a écrit :Une image vaut mille mots.
La Team des Volontaires a écrit :Un fichier vaut plus de mille images.
Moralité : Un fichier vaut plus d'un million de mots...
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
auie
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 27 juil. 2016 19:15

Re: [basic]Comment exécuter une macro à plusieurs variables

Message par auie »

Merci Churay pour ta réponse.
Quand on appuie sur F5, la macro est exécutée. Comment exécuter une macro qui requiert des variables ou paramètres s'il vous plaît ?
(Je n'arrive pas à joindre une image. Après avoir cliqué sur Img, je ne sais pas quoi faire)
Libreoffice Version: 6.0.3.2
Build-ID: 1:6.0.3-0ubuntu1
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 07:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [basic]Comment exécuter une macro à plusieurs variables

Message par martinbrait »

Bonsoir auie,

Comment copier une vue de son écran ?

1) Ouvres d'abord le programme paint depuis la partie gauche de ton écran windows.
Windows offre toujours le logiciel Paint. Pour ouvrir Paint, tape paint dans la zone de recherche de la barre des tâches, puis sélectionne Paint dans la liste des résultats.
Sinon, depuis la saisie en bas à gauche de windows, écris dans la barre exécuter : mspaint,
et appuis sur la touche entrée.
2) Appuies sur la touche ImprimEcran, comme tu sais déjà le faire.
3) Réactives ton programme paint, en allant dessus
4) Fais [ctrl+v] dans paint pour que l'impression d'écran qui est en mémoire dans ton presse-papier, soit restituée comme une image sous paint.
Sinon explore le menu de paint, pour trouver l'action coller.

L'image de ton écran devrait maintenant apparaître.
5)Ensuite, enregistres ton image depuis paint, au format proposé par paint (.png .jpg) par exemple,
dans ton dossier image.

6)Enfin, depuis le forum, insères ton image à ce message, depuis le transfert de pièces jointes.
Tu as le droit à 3 pièces jointes par messages;

Merci et à bientôt !
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
auie
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 27 juil. 2016 19:15

Re: [basic]Comment exécuter une macro à plusieurs variables

Message par auie »

Merci beaucoup Martinbrait de m'avoir indiqué comment prendre une photo de l'écran.
Mon problème est que je ne sais pas comment accrocher une photo au message que j'envoie actuellement.

Mon problème fondamental est le suivant : F5 éxecute une macro tel que
Sub Main
Print "Hello World"
End
Sub

Comment effectuer une macro tel que
sub subSaveAs(oDoc, sFile, optional sType)
sURL = convertToURL(sFile)
if isMissing(sType) then
oDoc.storeAsURL(sURL, array())
else
dim mFileType(0)
mFileType(0) = createUnoStruct("com.sun.star.beans.PropertyValue")
mFileType(0).Name = "FilterName"
mFileType(0).Value = sType
oDoc.storeAsURL(sURL, mFileType())
end if
end sub

Par quel moyen fournir les arguments pour effectuer cette dernière macro svp ?
Vous remerciant par avance :-)
Libreoffice Version: 6.0.3.2
Build-ID: 1:6.0.3-0ubuntu1
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 07:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [basic]Comment exécuter une macro à plusieurs variables

Message par martinbrait »

'1) Vérifie que le dossier c:\temp existe bien
'2)Teste F5 sur cette macro.
'3)Il ressortira bien une sauvegarde lisible sous c:\temp parmi les 3 enregistrements.

Code : Tout sélectionner

Sub LancerEnregistrer()
 subSaveAs(ThisComponent,"c:\temp\monfichier.odt")
 subSaveAs(ThisComponent,"c:\temp\monfichier.ods")
 subSaveAs(ThisComponent,"c:\temp\monfichier.odg")
End Sub

sub subSaveAs(oDoc, sFile, optional sType)
sURL = convertToURL(sFile)
if isMissing(sType) then
oDoc.storeAsURL(sURL, array())
else
dim mFileType(0)
mFileType(0) = createUnoStruct("com.sun.star.beans.PropertyValue")
mFileType(0).Name = "FilterName"
mFileType(0).Value = sType
oDoc.storeAsURL(sURL, mFileType())
end if
end sub
@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [basic]Comment exécuter une macro à plusieurs variables

Message par Churay »

auie a écrit :Comment effectuer une macro tel que

Code : Tout sélectionner

sub subSaveAs(oDoc, sFile, optional sType)
	sURL = convertToURL(sFile)
	if isMissing(sType) then
		oDoc.storeAsURL(sURL, array())
	else
		dim mFileType(0)
		mFileType(0) = createUnoStruct("com.sun.star.beans.PropertyValue")
		mFileType(0).Name = "FilterName"
		mFileType(0).Value = sType
		oDoc.storeAsURL(sURL, mFileType())
	end if
end sub
L'EDI ne passe pas de paramètre(s), donc il te faut écrire un sub qui appelle subSaveAS en lui passant les paramètres. Comme, par exemple :

Code : Tout sélectionner

sub main
	oDoc = thisComponent
	sfile = "C:\Sauvegarde\LeBonNom.ods"
	sType = ""
	
	subSaveAs(oDoc, sFile, sType)
end sub
Tu peux maintenant appeler le sub main qui n'attend aucun paramètre, main se chargeras de passer les paramètres au sub subSaveAs(
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
auie
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 27 juil. 2016 19:15

Re: [basic]Comment exécuter une macro à plusieurs variables

Message par auie »

Merci infiniment martinbrait et Churay. Vous m'avez aidé à programmer une partie de ma future macro :-) C'est super !

Néanmoins, comme je l'ai indiqué plus haut, je souhaite faire une macro qui fournira un texte incluant des variables qui seront données lors de l'exécation de la macro. Par exemple, je voudrais que la macro fournisse un fichier Writer contenant « M. Martin achète 3 sièges à 5 euros l'unité, soit pour 15 euros, le 7 janvier 2017 ». Cela se ferait après que j'ai exécuté ladite macro en ayant précisé « M. Martin, 3, siège, 5, 7 janvier 2017 ». Je crois que la Macro commencera par

Code : Tout sélectionner

Sub achat(nom, quantité, objet, prix, date)
Et je ne crois pas que F5 puisse faire marcher cette macro.
Vous remerciant par avance pour votre aide :-)

PS : J'ai honte. Je viens de voir que pour joindre une pièce, il suffit de cliquer en bas sur « Transférer une pièce jointe ». Mea culpa...
Libreoffice Version: 6.0.3.2
Build-ID: 1:6.0.3-0ubuntu1
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 07:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [Basic] Exécuter une macro à plusieurs variables

Message par martinbrait »

Bonjour auie,

Teste :

Code : Tout sélectionner


'Cas d'utilisation :
'gérer des arguments multiples en cours de programme

Sub achat()
'Tu peux lancer cette macro non paramétrée, avec F5
'les arguments seront demandés à l'utilisateur
'via une inputbox en cours de programme.
Dim Launch As Variant


Dim sText As String
Dim sNom As String,sObjet As String
Dim vPrix As Variant
Dim iQuantite As integer
Dim dDate As Date

sNom = InputBox ("Veuillez entrer un nom : ","Chère utilisatrice, cher utilisateur")

MsgBox ( sNom , 64, "Confirmation de saisie du nom")

iQuantite = InputBox ("Veuillez entrer une quantité : ","Chère utilisatrice, cher utilisateur")

MsgBox ( iQuantite, 64, "Confirmation de saisie de la quantité")


sObjet = InputBox ("Veuillez entrer un objet : ","Chère utilisatrice, cher utilisateur")

MsgBox ( sObjet , 64, "Confirmation de saisie de l'objet")


'j'encadre de guillemets pour conserver les valeurs après la virgule
'je dois convertir en double si mon prix est une valeur décimale
vPrix = InputBox ("Veuillez entrer un prix : ","Chère utilisatrice, cher utilisateur")

MsgBox (  CDbl(vPrix), 64, "Confirmation de saisie du prix")

dDate = InputBox ("Veuillez entrer une date : ","Chère utilisatrice, cher utilisateur")

MsgBox ( dDate, 64, "Confirmation de saisie de la date")


'Tu fais ce que tu veux dans ton programme
'avec les informations personnalisées dont tu
'disposes maintenant.
'.....
'......
Launch = MsgBox("je connais les arguments " & Chr(10) &  sNom & " " & iQuantite & " " & sObjet & " " & CDbl(vPrix) & " " & dDAte,48+32,"ARGUMENTS DE MON PROGRAMME")
End sub
J'espère que c'est dans l'esprit de ce que tu attends ?

Merci et à bientôt !
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
auie
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 27 juil. 2016 19:15

Re: [Basic] Exécuter une macro à plusieurs variables

Message par auie »

Merci beaucoup martinbrait, c'est super et t'es super !!! :-) :-) :-)
Libreoffice Version: 6.0.3.2
Build-ID: 1:6.0.3-0ubuntu1