Macros : débutant

Résolu/Fermé
Verveine - 1 mars 2008 à 19:49
 verveine - 27 mars 2008 à 22:55
Bonjour,
Merci de m'aider pour ma première macro dans un document writer .odt, où j'ai inséré un certain nombre de cellules numériques avec des formules. A présent, je voudrais passer à un formulaire ou macro si possible avec des boutons à cocher.
Mes documents sont des modèles à compléter et il m'arrive souvent de les voir rendus mal complétés avec des erreurs diverses. Je souhaite pouvoir intégrer une boîte de message vers la fin style "Avez vous tout vérifié si tels points avec des boutons à cocher - sont bons". Pour ce dernier rappel de contrôle qualité, e voudrai le laisser en masqué comme mes instructions pour guider les utilisateurs.
Je connais uniquement la formule recherchev. J'ai téléchargé les tutos pour vba ou macros mais ai besoin de qq infos pour les 1ères étapes en détail.

Comment faire un programme qui puisse alerter l'utilisateur qu'à tel endroit il a oublié de compléter (si est vide) - et s'il acomplété est-ce bon (par exemple une zone date mmmm/aaaa - s'il m'a mis que le mmm sans aaaa).

merci d'avance,
cordialement,
verveine

10 réponses

Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198
1 mars 2008 à 19:56
Bonjour,

Tu as deux solutions :
- soit tu crées un formulaire qui s'ouvre à l'ouverture du modèle, dont tu ne laisses pas sortir l'utilisateur si il n'a pas rentré les données idoines et au bon format, puis si tout est bon, tu te sers des champs du formulaire pour remplir ton document,
- soit en fin de saisie du document, tu "scannes" le dit document et vérifies, puis tu balances un message box ou un formulaire pour que l'utilisateur recommence, etc...

Bref, la première solution est la plus simple, si ton document n'est pas trop important...tu formates tes champs, tu utilises des listes non modifiables pour être sûr que les users ne rentrent pas n'importe quoi, etc...

Bon courage :-)
0
Bonjour !
Merci pour ta réponse rapide.
Mon document est assez complexe et je ne peux pas me substiuer à mes rédacteurs, car ils gèrent eux-même leurs dossiers à partir de mes modèles mis à disposition. Je suis le destinataire final des docs signés. C'est à ce moment là que je les reçois pour saisie et le contrôle s'opère forcément, ayant à consulter les éléments à rentrer.

Je souhaite créer une boîte de message vers la fin de la rédaction (phase pré-signature) pour que l'utilisateur jette un dernier coup d'oeil sur ce qu'il vient de renseigner.
J'ai été voir dans le net tout sur le b à ba des syntaxe de vba - des macros etc. - dois donc les étudier moi-même pour augmenter la qualité de mes modèles par un petit prog. En attendant de savoir ce qu'est un "sub main - end if" etc. et que mon autoformation soit valable pour une première application :

comment faire pour commencer par une simple boîte à message vers la fin du doc modèle ? (un formulaire serait trop abstrait pour ces rédaceurs qui ont déjà du mal à bien faire à partir du "visible" ou visuel où tout est guidé par mes instructions masquées et voire clignotantes !)
Merci de me donner la démarche pour un doc .odt.

D'avance merci et bon dimanche,
verveine
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198 > verveine
2 mars 2008 à 21:24
Salut :-)

Juste pour te mettre le pied à l'étrier clique sur affichage, barre d'outils, choisis Conception formulaires et contrôles formulaires. Clique sur l'icone avec une equerre et un crayon (passe en mode conception), sur la barre de contrôle, choisis Bouton, dessine le sur ton document, puis double clique dessus et choisi la macro qui te plait... (genre wordcount, juste pour le fun... :-) Reclique sur l'icone equerre, sélectionne ton texte et clique sur le bouton...

Et c'est parti :-)
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198 > verveine
2 mars 2008 à 23:23
Encore moi... :-)

Je viens de m'amuser avec deux trois trucs, mais je persiste à croire que faire un contrôle à postériori d'un document rempli, (si je comprends bien), sans contrainte, ça va être coton... Il va falloir faire des analyses de texte du parsing, bref, c'est pas cool...

Si ce n'est pas confidentiel défense, tu pourrais mettre un exemple en ligne, on serait de meilleur conseil :-)
0
verveine > Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013
4 mars 2008 à 00:40
salut,
Bizarre, j'ai cru poster un message de réponse à ton dernier post et je ne vois rien aujourd'hui.

Pour le document, je ne vois que cette façon d'améliorer la qualité.
Est-ce que tu pourras me dire comment faire 1 boîte de dialogue avec comme message ?

titre : "Un rappel pour la qualité de votre document"
Contenu : "Avez-vous vérifié si tous les éléments sont complétés correctement sans oubli ?"
pour le destinataire "OK" "FERMER"

J'ai trouvé les macros pour les boîtes de dialogue, mais aucune ne correspond à ce que je voulais faire.
Il ne reste plus qu'à faire à partir d'une boîte vide.
J'ai trouvé un tuto pour access, mais c'est du sql. J'ai testé et çà a marché sur Access.
Mais mon doc est fait ailleurs...

Merci de m'aider.
cordialement,
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198 > verveine
4 mars 2008 à 08:42
Crée cette petite macro, puis tu l'affectes à un bouton en bas de ta page...

Sub kikou
msgbox "Avez-vous vérifié si tous les éléments sont complétés correctement sans oubli ?",1,"Un rappel pour la qualité de vos documents"
End Sub

Désolé, les boutons sont ce qu'ils sont (annuler et non pas fermer), mais ça devrait le faire :-)
0
Bonsoir

je voudrais que vous m'aidez a faire une macro ou autre formul qui me facilite la tache dans mon travail
car en feson la situation monsuel de la tresorerie j'ai pas pu trouvè l'astuse pour le cumul des depenses et recette de chaque moi car ma base de donnes contiens plusieur info lier avec collage special avec lieson car chaque fois les donné se change alor je serai obliger de copier manuellement les donnèes dons la case cumul apres j'ajoute les donnès du mois qui vient
aide moi svp a trv la solution
merci
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198
1 mars 2008 à 23:30
Assia, crée ton propre message...

:-)
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198
4 mars 2008 à 09:06
Super tutorial sur les boites de dialogue :

http://christianwtd.free.fr/index.php?rubrique=BasDialog01

Bonne lecture!!

:-)
0
bonsoir fxbrg !
Merci encore pour ton tuyau. J'y suis allée voir et ai fait un exo ce soir en suivant le tuto. J'ai adapté un peu le contenu et la présentation pour améliorer encore ce j'ai pu faire suite à ton aide.
Voici ce que j'ai rencontré comme pb en copiant le prog du site que tu m'as indiqué :

Sub ControleSaisie
Dim oDialog As Object, oPDialog As Object
Dim oRetourOui As Object, oRetourNon As Object
Dim oTxt As Object
DialogLibraries.LoadLibrary("Standard")
oDialog = DialogLibraries.Standard.Dialog1
oPDialog = CreateUnoDialog(oDialog)
'
oTxt = oPDialog.getControl("Label1")
oTxt.Text = "Avez-vous opéré un dernier contrôle ?"
oRetourOui = oPDialog.getControl("CommandButton1")
oRetourOui.Label = "OK"
'
oRetourNon = oPDialog.getControl("CommandButton2")

'
oPDialog.setTitle("Une dernière vérification pour la qualité de nos documents")
'
oPDialog.Execute()

End Sub

J'ai dû couper juste au dessous de oRetourNon = oPDialog.getControl("CommandButton2") par que j'ai eu un message d'erreur de codage m'avertissant que lla méthode n'existerait pas -alors que j'ai recopié le prog du site. Une fois cette partie coupée, ma macro a marché mais les touches "ok" et annuler ne sont plus actives. J'ai essayé de modifié en mettant oRetourLabel2 au lieu de Label1 pour = "Annuler" mais rien à faire...

Peux-tu stp, me dire pourquoi ce pb ?
Merci !
(j'ai fait une belle boîte avec des choses à cocher et celà va améliorer vachement mon pense-bête (enfin, je suis fière d'avoir su suivre ce tuto jusqu'à cet endroit...)
verveine
0

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

Posez votre question
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198
7 mars 2008 à 09:11
Salut Verveine! :-)

Dim oDialog As Object, oPDialog As Object
Dim oRetourOui As Object
dim oRetourNon As Object
Dim oTxt As Object
DialogLibraries.LoadLibrary("Standard")
oDialog = DialogLibraries.Standard.Dialog1
oPDialog = CreateUnoDialog(oDialog)
'
oTxt = oPDialog.getControl("Label1")
oTxt.Text = "Avez-vous opéré un dernier contrôle ?"

oRetourOui = oPDialog.getControl("CommandButton1")
oRetourOui.Label = "OK"
oRetourNon = oPDialog.getControl("CommandButton2")
oRetourNon.Label = "Non"
'
oPDialog.setTitle("Une dernière vérification pour la qualité de nos documents")
'
oPDialog.Execute()



Ici, ça marche (oOo 2.3)


J'ai essayé de modifié en mettant oRetourLabel2 au lieu de Label1 pour = "Annuler" mais rien à faire...
Là je crois qu'il y a confusion :-) . Pour affecter un nom à l'objet oRetourNon, qui est le petit nom du deuxième bouton (CommandButton2), tu affectes à sa propriété Label la valeur "Non". Il ne s'agit pas de changer Label par Label1 ou Label2...

Dis-moi si ça marche chez toi,

:-)
0
Salut fxbrg !
En fait, après mon post j'ai tout simplement copier la ligne dessus et coller sur la ligne vide puis modifier la commande... (je crois que j'avais réécrit la commande avec un "o" et çà n'a pas marché !) - et çà a marché.

En revanche, j'ai pas pu retrouver tout ce que j'avais contruit avec le tuto une fois tout refermé. J'ai pas compris pourquoi ? J'ai recommencé ce matin et pareil... (ctd ni la macro ni la boîte de dialogue). J'avais voulu affecter la boîte de dialogue à un bouton et idem rien ne se passe.

J'ai rééessayé à l'instant et j'ai pu exécuter la macro après l'avoir déclaré dans la bibliothèque sous odialog après standard. C'est tout ce que je peux faire. Je n'ai pas pu affecter cette macro à un bouton, et à chq fois que je le faisais, elle ne prenait pas...

J'ai du sauter des étapes ou alors si tu peux m'expliquer comment faire après avoir créer ma boite de dialogue de pouvoir l'utiliser comme macro sur un bouton ? et non pas comme une simple macro qui s'exécute sur commande seulement ?
J'espère que je suis compréhensible...
Voici ma macro :
REM ***** BASIC *****

Sub AutoControle_Saisie
Dim oDialog As Object, oPDialog As Object
Dim oRetourOui As Object, oRetourNon As Object
Dim oTxt As Object

DialogLibraries.LoadLibrary("Standard")
oDialog = DialogLibraries.Standard.Dialog1
oPDialog = CreateUnoDialog(oDialog)
'
oTxt = oPDialog.getControl("Label1")
oTxt.Text = "Les éléments à vérifier"
oRetourOui = oPDialog.getControl("CommandButton1")
oRetourOui.Label = "OUI"
'
oRetourNon = oPDialog.getControl("CommandButton2")
oRetourNon.Label = "NON"
'
oPDialog.setTitle("AUTO CONTROLE DE QUALITE")
'
oPDialog.Execute()
End Sub

qui marche.
merci,
verveine
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198
7 mars 2008 à 16:11
En fait, après mon post j'ai tout simplement copier la ligne dessus et coller sur la ligne vide puis modifier la commande... (je crois que j'avais réécrit la commande avec un "o" et çà n'a pas marché !) - et çà a marché.

Cool :-)

En revanche, j'ai pas pu retrouver tout ce que j'avais contruit avec le tuto une fois tout refermé. J'ai pas compris pourquoi ? J'ai recommencé ce matin et pareil... (ctd ni la macro ni la boîte de dialogue). J'avais voulu affecter la boîte de dialogue à un bouton et idem rien ne se passe.

Euh... as-tu enregistré ton document? et la macro? C'est vrai que la procédure d'enregistrement n'est pas très intuitive...

J'ai rééessayé à l'instant et j'ai pu exécuter la macro après l'avoir déclaré dans la bibliothèque sous odialog après standard. C'est tout ce que je peux faire. Je n'ai pas pu affecter cette macro à un bouton, et à chq fois que je le faisais, elle ne prenait pas...

Pour affecter ta macro à un bouton dans ta feuille (et non dans le formulaire) :
- Affichae/Barre d'outils, coche Contrôles Formulaires
- clique sur l'icone avec l'equerre (mode conception)
- clique sur l'icone bouton et dessine le sur ta feuille
- double clique sur le bouton
- onglet Evènements
- clique sur la petite icone avec les trois points à droite de la ligne "Lors du déclenchement"
- clic Macro
- clic le + devant le nom de ton doc puis devant standard puis le nom du module et choisis ta macro
- OK, OK et fermer la boite drd propriétés du bouton

Repasse en mode normal (icone equerre) et clique sur le bouton...
et hop!! :-)

Dans ton cas, tu pourrais affecter cette macro à l'action Enregistrement... POur ça, Outils/personnaliser, puis onglet évènements, clic sur enregistrement du document, puis sur macro et idem, choisis ta macro, referme le tout..

Modifie quo ique ce soit, clic sur l'icone d'enregistrement, et hop, voilà ta boite de dialogue...

C'est y pas cool?

lol


Bon week-end!
0
C'est très cool, fxbrg ! -:)

Tu viens de me donner une superbe idée ! je n'aurai même plus besoin de mettre des boutons de contrôle ; il suffira que j'affecte la macro à la fermeture du document par ex (ne sachant pas si mes utilisateurs vont "enregistrer" ou "enregistrer sous"... j'ai opté pour l'enclenchement de la macro à la fermeture du document. Et le tour est joué !

Il ne me reste plus qu'à bien préparer ma boîte de dialogue avec les éléments dedans de rappel, et à cocher. Je pourrai également ajouter comme dans le tuto une 2è boîte pour leur dire "Merci !" une fois que la 1ère sera fermée.

Encore merci fxbrg !
bon we !

(par contre, j'ai du mal à suivre certains tuto open office pour créer les btes de dialog...)
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198
7 mars 2008 à 16:55
Encore merci fxbrg !
bon we !</ita>

De rien, idem :-)

<Ita>(par contre, j'ai du mal à suivre certains tuto open office pour créer les btes de dialog...)

Sans peine, ce serait même pas drôle!! lol Ceci dit, regarde les versions de oOo utilisées dans les tutos, souvent ils sont faits avec une versioin 1.x, et les menus ont beaucoup changé (par exemple, pour affecter la macro à une action du document, avant c'était dans Outils/Adaptation, alors que maintenant c'est dans Outils/Personnaliser... si tu n'as pas été confronté au problème, tu risques pas de l'inventer!! lol

Bon week-end again, à bientôt si besoin,

JF
0
bonjour fxbrg !
J'ai cru bien faire de lancer un nouveau sujet sur le bouton "fermer" pour demander de l'aide concernant la commande "close" ou "exit" au bouton. N'ayant aucune réponse à mon post, je reviens là demander si tu pouvais m'aider pour celà.

Voilà, on est toujours dans ma macro contrôle qualité. Comme je me suis aperçu que les boutons "ok" "annuler" n'ont aucune fonction attachée à leur présence sur la boîte de dialogue, je les ai enlevés. En revanche, j'aurais voulu que le bouton "fermer" puisse servir à fermer la boîte de dialog au lieu de recourir à la croix. Et, je n'ai pas trouvé cette commande dans le tuto.

Toi ou qq pourrait-il m'aider à déclarer ce bouton dans ma macro et à écrire un ligne de commande ?
Merci d'avance,
verveine
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198 > verveine
13 mars 2008 à 14:33
Salut Verveine!

Tu peux remettre ici le code de ta macro?
0
verveine > Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013
13 mars 2008 à 16:27
voici le code tel que je l'ai posté :

Sub AutoControle_Saisie
Dim oDialog As Object, oPDialog As Object
Dim oRetourOui As Object, oRetourNon As Object
Dim oTxt As Object

DialogLibraries.LoadLibrary("Standard")
oDialog = DialogLibraries.Standard.Dialog1
oPDialog = CreateUnoDialog(oDialog)
'
oTxt = oPDialog.getControl("Label1")
oTxt.Text = "Les éléments à vérifier :"

'
oPDialog.setTitle("AUTO CONTROLE QUALITE")
'
oPDialog.Execute()
End Sub

et voici la commande d'origine du tuto que j'ai adaptée pour mon document :

1. Sub QuestionAugmentation
2. Dim oDialog As Object, oPDialog As Object
3. Dim oRetourOui As Object, oRetourNon As Object
4. Dim oTxt As Object
5.
6. DialogLibraries.LoadLibrary("Standard")
7. oDialog = DialogLibraries.Standard.Dialog1
8. oPDialog = CreateUnoDialog(oDialog)
9. '
10. oTxt = oPDialog.getControl("Label1")
11. oTxt.Text = "Voulez-vous être augmenté ?"
12. oRetourOui = oPDialog.getControl("CommandButton1")
13. oRetourOui.Label = "OUI"
14. '
15. oRetourNon = oPDialog.getControl("CommandButton2")
16. oRetourNon.Label = "NON"
17. '
18. oPDialog.setTitle("Petit test")
19. '
20. oPDialog.Execute()
21. End Sub


Comme vous avez pu constater, j'ai enlevé les lignes sur les deux boutons "oui" et "non pour le motif évoqué.
Merci d'avance pour ton aide.
Verveine
0
Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198 > verveine
13 mars 2008 à 16:39
Hello!

Il suffit qur ta boite de dialog, tu ajoutes un bouton, tu lui donnes le label "Fermer" et le type de bouton OK ou Annuler. En cliquant dessus, comme il n'y a rien d'associé, ça ferme la boite et c'est tout...
0
verveine > Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013
13 mars 2008 à 16:49
Merci fxbrg pour ta réponse rapide !
J'ai déjà fait l'essai de mettre un bouton "fermer" mais il ne m'a rien fermé du tout.
Voici l'un des tests pour la déclarer le bouton "fermer" sans résultat :

Sub AutoControle_Saisie
Dim oDialog As Object, oPDialog As Object
Dim oRetourOui As Object, oRetourNon As Object
Dim oRetourFERMER As Object
Dim oTxt As Object

DialogLibraries.LoadLibrary("Standard")
oDialog = DialogLibraries.Standard.Dialog1
oPDialog = CreateUnoDialog(oDialog)
'
oTxt = oPDialog.getControl("Label1")
oTxt.Text = "Les éléments à vérifier :"
oRetourFermer = oPDialog.getControl("CommandButton2")
oRetourFermer.Label = "FERMER"
'
oTxt = oPDialog.getControl("Label1")
oTxt.Text = "Les éléments à vérifier :"

'
oPDialog.setTitle("AUTO CONTROLE QUALITE")
'
oPDialog.Execute()

End Sub

Ne faut-il pas affecter une fonction à ce bouton comme celle pour oPDialog qui a pour fonction la création d'une boîte de dialog "CreateUnoDialog(oDialog)" ? Et la fonction fermer, en code c'est quoi ? (close ? exit ?)
verveine
0
JF !
A force de faire, j'ai enfin trouvé : j'ai pu affecté ma boîte de dialog à mon dernier bouton en la créant dans la liste des macros du fichier existant.
Si avant çà ne marchait pas c'ést parce que mon open office était paramétré avec une option sécurisée pour l'activation des macros extérieures... (j'ai donc appliqué la règle de me poser la question, si oui ou non j'active la macro).
Voilà, maintenant j'ai des docs super pro et je peux enfin te dire à + pour une autre macro (j'ai attrapé le virus !)

super cool comme tu dis ! lol
0
imedtac Messages postés 10 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 13 mars 2008
13 mars 2008 à 16:30
mais mon pb est purement informatique
je veux prog en java une connexion bluetooth via port série virtuel
je c pas comment ouvrir une connexion
0