Problème avec un champ dans windev

emilepetit31 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
luckydu43 Messages postés 4497 Date d'inscription   Statut Membre Dernière intervention   -

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

  1. luckydu43 Messages postés 4497 Date d'inscription   Statut Membre Dernière intervention   1 177
     

    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
  2. emilepetit31 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
     

    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
    1. luckydu43 Messages postés 4497 Date d'inscription   Statut Membre Dernière intervention   1 177
       

      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