Problème avec un champ dans windev

emilepetit31 Messages postés 6 Date d'inscription vendredi 14 mai 2021 Statut Membre Dernière intervention 5 septembre 2024 - Modifié le 27 août 2024 à 14:15
luckydu43 Messages postés 3730 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 11 septembre 2024 - 30 août 2024 à 09:21

Bonjour,

Afin d'éviter, d'avoir un champ "Nom" et un autre champ "Prénom" comment faire pour avoir un seul champ  " Sai_nomcomplet" mais de sorte que je puisse afficher le nom en Majuscule et la première lettre du prénom en Majuscule.

Deuxième souci, le nom peut être un nom composé comme LEDRU-ROLIN, là ça ce complique... 

Merci vous penchez sur ce cas particulier.

Salutations


Windows / Chrome 128.0.0.0

2 réponses

luckydu43 Messages postés 3730 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 11 septembre 2024 917
Modifié le 27 août 2024 à 14:01

Bonjour,

A lire, le cas me parait simple :

  1. Transformer la casse des 2 valeurs
  2. Concaténer
  3. Stocker dans une variable "Sai_nomcomplet"

Voici un code en Windev: 

// Variables pour le nom et le prénom, remplace par tes variables nom et prénom de base
sNom est une chaîne = "LEDRU-ROLIN"
sPrenom est une chaîne = "jean-baptiste"

// Mets le nom en majuscules
sNom = Majuscule(sNom)

// Mets la première lettre du prénom en majuscule et le reste en minuscule
sPrenom = PremièreLettreMajuscule(sPrenom)

// Concatène le nom et le prénom avec un espace entre les deux
Sai_nomcomplet = sNom + " " + sPrenom

// Ici ça affiche le résultat, modifie pour l'afficher à l'écran
Info(Sai_nomcomplet)

Dans le cas où cette fois on parle d'une SAISIE :

JE pars du principe que la saisie des nom et prénom est séparée par un espace.

Auquel cas, qu'importe les tirets, tant qu'il y a un espace je gère.

Le process est similaire à au-dessus :

  • Déconcaténer en utilisant la valeur espace
  • En l'absence d'espace, considérer qu'il ne s'agit que du nom
  • Transformer la casse des 2 valeurs
  • Reconcaténer ou utiliser ces 2 valeurs
// Récupérer la saisie
sSaisie est une chaîne = Sai_nomcomplet

// Déconcaténer en Nom et Prénom
sNom est une chaîne = ""
sPrenom est une chaîne = ""
iEspace est un entier = Position(sSaisie, " ")

SI iEspace> 0 ALORS
    sNom = ExtraitChaîne(sSaisie, 1, iEspace-1)
    sPrenom = ExtraitChaîne(sSaisie, iEspace+1, Longueur(sSaisie))
SINON
    sNom = sSaisie // Pas de prénom, juste le nom
FIN

// Mettre le nom en majuscules (gère les tirets)
sNom = MaJuscule(sNom, vrai)

// Si un prénom existe, mettre la première lettre du prénom en majuscule
SI sPrenom <> "" ALORS
    sPrenom = MaJuscule(PremièreLettre(sPrenom)) + Milieu(sPrenom, 2)
FIN

// reconcaténer si besoin
Sai_nomcomplet = sNom + " " + sPrenom

Tenez au jus !


0
emilepetit31 Messages postés 6 Date d'inscription vendredi 14 mai 2021 Statut Membre Dernière intervention 5 septembre 2024
29 août 2024 à 23:00

Bonjour, merci pour votre réactivité, malheureusement, " PremièreLettreMajuscule", n'existe pas dans la version 25 de Windev que j'utilise.

donc je bute toujours sur cet obstacle d'autant plus que je suis au tout début de mon initiation à la programmation et précisément ce langage.

Merci en tout cas pour main tendue. 

0
luckydu43 Messages postés 3730 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 11 septembre 2024 917
Modifié le 30 août 2024 à 09:51

Vous pouvez créer votre propre procédure.

PROCEDURE PremièreLettreMajuscule(sPrenom est une chaîne) : Chaîne
    sPrenomModifie est une chaîne = ""
    tabPrenoms est un tableau de chaînes = ExtraitChaîne(sPrenom, "-")
    
    POUR TOUT tabPrenom DE tabPrenoms
        SI sPrenomModifie <> "" ALORS
            sPrenomModifie += "-"
        FIN
        sPrenomModifie += Majuscule(Gauche(tabPrenom, 1)) + Milieu(tabPrenom, 2)
    FIN
    RENVOYER sPrenomModifie

En entrée, si sPrenom reçoit "jean-baptiste", sPrenomModifie renverra "Jean-Baptiste"

Sans faire de procédure, utilisez directement le code de la procédure à la place de "sPrenom = PremièreLettreMajuscule(sPrenom)" et remplacez la dernière ligne par "Sai_nomcomplet = sNom + " " + sPrenomModifie"

1