Concaténation

emilepetit31 Messages postés 6 Date d'inscription vendredi 14 mai 2021 Statut Membre Dernière intervention 5 septembre 2024 - 5 sept. 2024 à 19:29
Bruno83200_6929 Messages postés 129 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 6 septembre 2024 - 6 sept. 2024 à 08:26

Bonjour, 

Je fais du sur place avec ce code

sNumdoc est une chaîne
sNumdoc="CERTV" + DateDuJour()
nMafinId est un entier
HLitDernier(sNumdoc,LIB_IDperso2)
SI Gauche(Presence.IDperso,13)= sNumdoc ALORS
    nMafinId=Taille(Presence.IDperso)-13
    nMafinId= Droite(Presence.IDperso,nMafinId)
    nMafinId+=1
    Presence.IDperso=sNumdoc+nMafinId
SINON
    Presence.IDperso=sNumdoc+1
    FIN

Ça me renvoi ceci

Help me, merci

1 réponse

Bruno83200_6929 Messages postés 129 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 6 septembre 2024 19
6 sept. 2024 à 08:26

Bonjour, 

Personnellement, je choisirai d'autres arguments pour arriver à ton but :

DateVersChaine : J'utilise DateVersChaine pour formater la date en YYYYMMDD. Si tu veux un autre format, modifie ce paramètre.


Longueur de sNumdoc : J'utilise Longueur(sNumdoc) pour être sûr que la comparaison avec Gauche prend bien le nombre exact de caractères.


Conversion en entier : Après avoir extrait la partie numérique avec Droite, je l'ai convertie en entier avant l'incrémentation.


Concaténation avec un entier : Lors de la concaténation avec sNumdoc, j'ai veillé à ce que la partie numérique soit bien sous forme de chaîne de caractères.

Ce qui donnerait quelque chose  comme :

sNumdoc est une chaîne
sNumdoc = "CERTV" + DateVersChaine(DateDuJour(), "YYYYMMDD")  // Utilisation de la date formatée

nMafinId est un entier
HLitDernier(sNumdoc, LIB_IDperso2)

// Vérifie si les 13 premiers caractères de IDperso correspondent à sNumdoc
SI Gauche(Presence.IDperso, Longueur(sNumdoc)) = sNumdoc ALORS
    // Calcul du nombre de caractères restants après le préfixe
    nMafinId = Taille(Presence.IDperso) - Longueur(sNumdoc)
    // Extraction de la partie numérique et conversion en entier
    nMafinId = Entier(Droite(Presence.IDperso, nMafinId))
    nMafinId += 1  // Incrémentation de l'ID
    // Construction du nouvel IDperso
    Presence.IDperso = sNumdoc + nMafinId
SINON
    // Premier numéro généré
    Presence.IDperso = sNumdoc + "1"
FIN
 


0