[Résolu] [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

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 !
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

[Résolu] [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par Eric99 »

Bonjour,
J'utilise la macro suivante pour modifier "Avant l'actualisation" l'écriture d'un prénom avec une majuscule en premier puis les suivantes en minuscule

Code : Tout sélectionner

sub PysCapPremiereLettre(PysEvent)	'Met la 1ère lettre d'un champ en majuscule et les suivantes en minuscule
PysEvent.source.Text= Ucase(left(PysEvent.source.Text, 1)) & Lcase(mid(PysEvent.source.Text, 2))
end sub
Cela fonctionne bien. Cependant je voudrais améliorer le résultat pour les prénoms composés c'est à dire :
- si j'ai un tiret ou un espace dans le prénom que la lettre suivante soit en majuscule
ainsi Jean-pierre deviendrait Jean-Pierre et Jean pierre deviendrait Jean Pierre à la sortie du champ

Sauriez-vous m'aider dans la réalisation de la macro ?

Merci
Éric
Dernière modification par Eric99 le 01 mai 2024 10:10, modifié 1 fois.
LibO 24.2.1 UbuntuMATE 22.04
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par Dude »

Salut,

Image
viewtopic.php?p=379640&hilit=1ere+lettr ... le#p379640
Avec l'appel de la fonction Calc NOMPROPRE
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

Re: [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par Eric99 »

Dude a écrit : 22 avr. 2024 08:25 viewtopic.php?p=379640&hilit=1ere+lettr ... le#p379640
Avec l'appel de la fonction Calc NOMPROPRE
Bonjour,
Merci pour ce lien et ton aide.
Bien que je ne sois pas sûr que cela réponde totalement à ma question j'ai essayé la macro dans mon formulaire "FormAdherentCreation" et le champ "Prénom Adhérent.e *" avec la fonction "propre" de la macro et j'obtiens l'erreur suivante. (Pour info j'ai essayé les autres fonctions de la macro et j'ai aussi des erreurs).
Erreur_execution.png
Ne maîtrisant pas bien la notion de fonction je n'ai peut-être pas compris ce à quoi tu faisais allusion en m'indiquant de faire appel à la fonction Calc NOMPROPRE ce qui expliquerait l'erreur. Je joins ma base pour plus de facilité. Comme tu pourras voir j'utilise déjà des macros pour le champ "Nom Adhérent.e *" (passage en majuscule pour le nom complet), "Courriel **" modification de l'adresse en remplaçant différent caractère indésirable... et jusqu'à présent j'utilisais la fonction PysCapPremiereLettre pour mon champ "Prénom Adhérent.e *"

Éric
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 24.2.1 UbuntuMATE 22.04
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par Dude »

Eric99 a écrit : 25 avr. 2024 09:32 Ne maîtrisant pas bien la notion de fonction
Ca fonctionne mais comme tu ne lui passes pas une chaîne, il est évident que tu auras une erreur.
Regarde la copie écran, tu vois bien qu'en déboguant, ta variable Texte est d'un type particulier.
Tu devrais te servir de XRay pour comprendre les méthodes et propriétés des objets manipulés.

.
capture.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
arverne73
Membre OOrganisé
Membre OOrganisé
Messages : 73
Inscription : 30 mars 2012 16:13
Localisation : Savoie, France

Re: [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par arverne73 »

Bonjour,

Tu y étais vraiment presque. Il faut repasser à une instruction Sub et récupérer ton texte comme tu l'avais fait avec ta propre procédure.
(les fonctions MAJUSCULE, PPCM et l'instruction nom sont bien-sûr inutiles et à supprimer ici).

Code : Tout sélectionner

Sub propre(PysEvent As Variant) As variant
	Dim acceder As Object
	acceder = CreateUnoService("com.sun.star.sheet.FunctionAccess")
	PysEvent.source.Text = acceder.callFunction("PROPER",Array(PysEvent.source.Text))
End sub
Cordialement.
LibreOffice 24.2.2.2 sur Ubuntu 24.04 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par Dude »

arverne73 a écrit : 29 avr. 2024 17:15Il faut repasser à une instruction Sub
Si c'est une Sub, il n'y a pas à renvoyer de valeur.
Sinon, il faut faire une fonction.
Ce n'est pas parce que Basic tolère la syntaxe qu'il faut l'employer.
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

Re: [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par Eric99 »

Bonjour,
Merci c'est tout à fait ce dont j'avais besoin.
arverne73 a écrit : 29 avr. 2024 17:15

Code : Tout sélectionner

Sub propre(PysEvent As Variant) As variant
	Dim acceder As Object
	acceder = CreateUnoService("com.sun.star.sheet.FunctionAccess")
	PysEvent.source.Text = acceder.callFunction("PROPER",Array(PysEvent.source.Text))
End sub
Éric
LibO 24.2.1 UbuntuMATE 22.04
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

Re: [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par Eric99 »

Dude a écrit : 25 avr. 2024 09:51 Tu devrais te servir de XRay pour comprendre les méthodes et propriétés des objets manipulés.
J'ai chargé XRay et commencé à lire la doc. Pour l'instant je n'y comprends pas grand chose mais je ne désespère pas.

Merci pour tes conseils.
Éric
LibO 24.2.1 UbuntuMATE 22.04
Avatar de l’utilisateur
arverne73
Membre OOrganisé
Membre OOrganisé
Messages : 73
Inscription : 30 mars 2012 16:13
Localisation : Savoie, France

Re: [Résolu] [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par arverne73 »

@Dude : pour ma compréhension personnelle…
Je comprends ta remarque : une instruction permet une ou des actions tandis qu'une fonction donne une valeur y pour une autre valeur x qu'on lui a fournie ; c'est la conception que j'ai dans ma tête de non-informaticien, qui n'a donc pas intégré certains principes théoriques.
Je ne savais donc pas que cette manière de faire, manipuler des valeurs dans une instruction, est un dévoiement.

Mais pour répondre à notre interlocuteur donc l'objectif était :
  1. Récupérer une valeur
  2. la modifier
  3. renvoyer la nouvelle valeur dans le contrôle
Quelle aurait dû être la bonne formulation ?
La macro déclenchée par l'évènement est forcément une instruction ; et cette instruction peut récupérer la variable à modifier. Et c'est aussi une instruction qui peut écrire la valeur modifiée dans le contrôle.
Cette instruction aurait-elle dû appeler une fonction et lui transmettre la variable pour faire la conversion ?
Merci pour ton approche.
LibreOffice 24.2.2.2 sur Ubuntu 24.04 GNOME (version officielle). Base en frontale d'une base MySQL ; échec liaison directe => liaison JDBC.
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25201
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu] [Base] Saisie d'un champ Prénom composé en Majuscule et minuscule

Message par Dude »

arverne73 a écrit : 02 mai 2024 16:22 Quelle aurait dû être la bonne formulation ?
Bis repetitae :
Dude a écrit : 25 avr. 2024 09:51 Tu devrais te servir de XRay pour comprendre les méthodes et propriétés des objets manipulés.