[Base] automatiser un champ

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 !
gregory
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 18 mai 2008 13:04
Localisation : Savoie

[Base] automatiser un champ

Message par gregory »

Le Modérateur a écrit : :alerte: Merci de ne pas inventer et de respecter la syntaxe des balises : http://user.services.openoffice.org/fr/ ... c1369.html
Le balisage doit bien sûr être correctement orthographié (première lettre en majuscule puis le reste en minuscules).
Bonjour,
Précision du sujet :
Automatiser le résultat d'un champs en fonction du remplissage (ou non) d'un autre champs.

Voilà le topo :
Ce fil fait suite à celui-ci : http://user.services.openoffice.org/fr/ ... 80#p193725
Voici la base sur laquelle je travail
TPS_v3 Macro.odb
c'est Piaf qui à retourné ma base en y ajoutant une macro. pour automatiser dans le formulaire la "cellule" "bénévoles" sur la ligne "réalisé en".
En fait, grâce à la macro cette cellule indique automatiquement le nombre de bénévoles dans la ligne "réalisé en" lorsqu'on ajoute un nom de bénévole dans le tableau bénévole.

Mon souhait :
avant tout je précise que je part du niveau 0 en macro. Depuis le fil cité ci-dessus, j'ai lu quelques tutoriel et forum. On va dire que maintenant j'en suis au niveau 0,1 :oops: et je vais investir dans le livre programmation Openoffice des éditions Eyrolle. :mrgreen: mais en simultané je souhaiterais :
1/comprendre plus précisément le fonctionnement de la macro de Piaf
2/aller plus loin dans cette macro. C'est à dire faire en sorte que lorsqu'on supprime un nom dans le tableau "bénévole cela diminue automatiquement le nompbre de bénévole dans la "cellule" "bénévoles" sur la ligne "réalisé en".

Question :
- dans cette base
TPS_v3 Macro.odb
Pouvez-vous explicité dans la macro ce que font les différentes lignes de code? :?:

Ceci me permettra de mieux comprendre et de mettre en application en cas pratique en faisant le point 2/ de mes souhait.

PS :
Ceci est plus une "demande d'aide" à la compréhension qu'une réelle question. J'espère être donc dans le bon endroit pour formuler une telle demande et ne pas abuser de votre disponibilté :oops:

Merci d'avance
Greg
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 3.5.6.2 sous Windows XP pack3
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [base]automatiser un champs

Message par Piaf »

Bonjour
gregory a écrit :Question :
Réponse.

Code : Tout sélectionner

Sub aMAJBene(oEv as Object)
'oEv est l’événement qui a déclenché la macro, dans ce cas c'est l’événement Après Actualisation de la liste IDBéné du sous formulaire fExec (Bénévoles)
'Les deux lignes Dim sont les déclarations des variables
Dim Grille as Object, oForm as Object, MonControl as Object, oFormDiff as Object
Dim intBene as Long
'oEv.Source le contrôle qui qui à déclenché l'évènement, .parent l'échelon au dessus du contrôle
'Dans ce cas le contrôle de table
	Grille = oEv.Source.Parent
'intBené va compter le le nombre d’enregistrements dans la ligne le + 1 est là car quand la macro s'exécute	l’enregistrement en cours n'est pas pris en compte
	intBene = Grille.Rowset.RowCount + 1
'oForm est l'échelon au dessus de la grille (premier parent (le sous formulaire fExec)), et l'échelon encore au dessus (deuxième parent (le sous formulaire fPHisto)) 
	oForm = Grille.Parent.Parent
'MonControl est le contrôle NbBéné du formulaire préalablement défini (Sur la ligne Réalisé en )	
	MonControl = oForm.getByName("NbBéné")
'on donne à ce contrôle la valeur de intBene	
	MonControl.Value = intBene
'on enregistre la valeur du contrôle	
	MonControl.Commit
'on enregistre l'enregistrement complet	
	oForm.updateRow
'on défini le sous formulaire fDiff du sous formulaire	fPHisto (la ligne différentiel)
	oFormDiff = oForm.getByName("fDiff")
'on le recharge ce qui force les calculs dans la requête	
	oFormDiff.Reload	
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [base]automatiser un champs

Message par Churay »

Bonsoir
gregory a écrit :je vais investir dans le livre programmation Openoffice des éditions Eyrolle. :mrgreen: mais en simultané je souhaiterais :
1/comprendre plus précisément le fonctionnement de la macro de Piaf
2/aller plus loin dans cette macro.
Piaf sera le plus à même d'expliquer son code qui est déjà bien commenté.

Je réponds juste sur l'investissement : La Bible, parfait
comprendre plus précisément le fonctionnement de la macro de Piaf, des macros en général : d'autres investissements gratuits en complément :
- télécharger le SDK, l'installer
- télécharger XRay que nous a offert bm en plus de son savoir dans la Bible (avec LG),
- l'installer et paramétrer l'accès au SDK (soit en ligne, soit sur l'install)

Précisions :
- pénétrer les arcanes de AOO/LO, donc de l'API, demande du temps et de la patience,
- attaquer les macros pour le module Base, n'est certainement pas la voie la plus simple
- XRay (ou MRI) est incontournable, le SDK difficilement contournable même s'il n'existe que la version en anglais
- le Developper's Guide est aussi un bonne lecture en anglais ( :roll: :oops: mais la version fr finira bien par voir le jour : à ce que j'en sais, tout n'est pas encore traduit, mais ce qui l'est est en cours de reformatage pour avoir la même présentation que la version site, ce qui donnera à terme une version odt / pdf / html).
Faut juste de la patience...
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...
gregory
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 18 mai 2008 13:04
Localisation : Savoie

Re: [Base] automatiser un champ

Message par gregory »

Merci de ta réponse Piaf et d'avoir pris le temps d'explicité :bravo: :super: :D

Merci à Churay pour tes précisions : J'avais lu effectivement l'intérêt de Xray et SDK mais cela me paraissait compliqué (installation et utilisation).
Toutefois, suite à tés propos, je vais m'y attarder et les installer et évidemment les utiliser :lol:
Quant au Developper's Guide en anglais, je pense que je ne vais pas m'en rajouter et je vais attendre la version french :oops:

Encore merci à tout les deux et je ne manquerai pas de vous informer de l'évolution de mon "exercice pratique".
Par contre il va sans doute falloir être un peu patient...

En attendant je ne met pas résolu.
Affaire à suivre

Greg
LibreOffice 3.5.6.2 sous Windows XP pack3