Posez votre question Signaler

Macros : débutant [Résolu]

Verveine - Dernière réponse le 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
Lire la suite 

Macros : débutant »

33 réponses
Réponse
+0
moins plus
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 :-)
verveine - 4 mars 2008 à 20:12
bonsoir fxbrg,
Merci pour ton aide !
J'ai enfin su affecter une macro à un bouton - avec ta petite commande.
Maintenant un pb : comment faire pour que mon bouton ne s'imprime pas sur le document ? J'ai essayé de le mettre sur la marge droite par ex. en dehors de la zone du texte. Peut-on masquer un bouton ? et peut-on aussi mettre en forme le texte qu'on met dans le bouton (si l'on en met un) ?

Encore peut-être une macro ?
Merci d'avance fxbrg !
verveine
verveine - 4 mars 2008 à 20:49
En fait, je viens de trouver la solution !
J'ai masqué le paragraphe où j'ai mis le bouton et le tour est joué ! j'ai même mis un fond bien fluo pour inviter les étourdis de vérifier.

Merci et bonne soirée à tous,
cordialement,
et merci spécial à fxbrg :) (c'est bien ce signe le sourire smiley ?)
Fxbrg - 4 mars 2008 à 21:34
Non, non le smiley c'est :-)

lol

Content que tu aies trouvé... :-)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Assia, crée ton propre message...

:-)
Ajouter un commentaire
Réponse
+0
moins plus
Super tutorial sur les boites de dialogue :

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

Bonne lecture!!

:-)
verveine - 7 mars 2008 à 00:11
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
Ajouter un commentaire
Réponse
+0
moins plus
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,

:-)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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!
verveine - 7 mars 2008 à 16:47
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...)
Ajouter un commentaire
Réponse
+0
moins plus
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
verveine - 26 mars 2008 à 22:46
salut, fxbrg !
C'est sympa de revenir ici me répondre ! merci !
Enfin, j'ai trouvé la solution mais qui ne s'applique qu'à mon fichier calc. Dès l'instant où je passe à excel, ma macro ne marche plus. Elle a disparu tout bonnement.

Pour une application plus durable de ma macro, ce serait intéressant de coder par un langage accepté par excel.
On peut reprendre l'exemple simple du précédent code :

Sub Test_compatibilite
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 = "N'oubliez pas de suivre les instructions !"
oRetourOui = oPDialog.getControl("CommandButton1")
oRetourOui.Label = "OUI"
'
oRetourNon = oPDialog.getControl("CommandButton2")
oRetourNon.Label = "NON"
'
oPDialog.setTitle("Petit test")
'
oPDialog.Execute()
End Sub

merci,
verveine
(ps : afin de respecter les règles du forum, ce serait peut-être mieux de créer un nouveau sujet ?)
Fxbrg - 27 mars 2008 à 12:44
Salut Verveine!

Effectivement ce serait mieux de créer un nouveau fil... mais il n'existe pas, à ma connaissance, de possibilité de lire une macro oOo avec Excel (VBA donc) ni l'inverse, les deux langages sont trop différents... C'est, hélas, une limite du passage de MSOffice à oOo... Ton fichier doit être lu par les deux logiciels impérativement?

verveine - 27 mars 2008 à 22:55
salut fxbrg !
Non pas forcément, car j'espère et conseille les utilisateurs de télécharger tjours le modèle pour préparer leur doc. Partant d'un fichier calc ils me le rendront en xls. De cette façon, ils auront à chq fois vu mes macros s'exécuter.
J'ai été voir dans développez.com, il semble y avoir des moyens (assez lourds pour les initiés) de coder de façon à ce que la conversion soit faite (un exécutable qui scan les code à télécharger -je te passerai les liens).
J'ai su que c'est normal mon pb après avoir posté ma quesion et vu qu'il y en avait déjà d'autres semblables de posées ici même.

voir les explications du site dans le :

"V. Déclencher une macro Open Office depuis Excel"
http://silkyroad.developpez.com/VBA/PiloterOpenOffice/#LV

Il faut que je retrouve le site où j'ai vu qu'on peut télécharger un exécutable pour passer du langage vba ooo vers excel (ou vise versa)
A +
merci fxbrg ! :-)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « macros : débutant » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook