Césure d'un texte selon conditions
Résolu
Nospam54
Messages postés
152
Date d'inscription
Statut
Membre
Dernière intervention
-
Nospam54 Messages postés 152 Date d'inscription Statut Membre Dernière intervention -
Nospam54 Messages postés 152 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà le souci auquel je suis confronté :
Dans une application comptable je convertis un nombre en texte, par ex. : "1 998,28" devient "Mille neuf cents quatre-vingt-dix-huit € et vingt-huit centimes".
D'aucun aura compris que cette application est destinée à remplir automatiquement des chèques pré-imprimés... ;)
Tout ce qui concerne la conversion d'un nombre en lettres, pas de problème, ça fonctionne nickel !
Là où je butte maintenant, c'est de réaliser la césure de mon texte s'il dépasse un certain nombre de caractères, sachant que :
- le nombre maximum de caractères pouvant s'afficher sur la ligne est de 66,
- que la césure ne doit se faire que si le caractère rencontré est un espace " " ou un tiret "-"
- donc, par déduction et pour ne pas couper un mot, il ne faut pas faire de césure si le caractère rencontré est une lettre entre a et z. Dans ce cas, il convient d'aller au caractère précédent pour vérifier s'il s'agit d'une lettre entre a et z ou d'un espace ou d'un tiret...
- enfin, une fois la césure réalisée, compléter la seconde ligne du chèque avec le reste du texte !
J'ai cherché un peu partout sans trouver, j'ai fait des essais mais ne suis pas assez (encore) calé en VBA pour coder cela de façon rapide et aisée...
Quelqu'un/e pourrait me donner une piste ?
Merci d'avance !
Voilà le souci auquel je suis confronté :
Dans une application comptable je convertis un nombre en texte, par ex. : "1 998,28" devient "Mille neuf cents quatre-vingt-dix-huit € et vingt-huit centimes".
D'aucun aura compris que cette application est destinée à remplir automatiquement des chèques pré-imprimés... ;)
Tout ce qui concerne la conversion d'un nombre en lettres, pas de problème, ça fonctionne nickel !
Là où je butte maintenant, c'est de réaliser la césure de mon texte s'il dépasse un certain nombre de caractères, sachant que :
- le nombre maximum de caractères pouvant s'afficher sur la ligne est de 66,
- que la césure ne doit se faire que si le caractère rencontré est un espace " " ou un tiret "-"
- donc, par déduction et pour ne pas couper un mot, il ne faut pas faire de césure si le caractère rencontré est une lettre entre a et z. Dans ce cas, il convient d'aller au caractère précédent pour vérifier s'il s'agit d'une lettre entre a et z ou d'un espace ou d'un tiret...
- enfin, une fois la césure réalisée, compléter la seconde ligne du chèque avec le reste du texte !
J'ai cherché un peu partout sans trouver, j'ai fait des essais mais ne suis pas assez (encore) calé en VBA pour coder cela de façon rapide et aisée...
Quelqu'un/e pourrait me donner une piste ?
Merci d'avance !
A voir également:
- Césure d'un texte selon conditions
- Excel cellule couleur si condition texte - Guide
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Transcription audio en texte word gratuit - Guide
- Mettre un texte en majuscule - Guide
- Texte barré whatsapp - Guide
1 réponse
Bonjour,
Cette fonction peut convenir s'il n'y a pas de majuscules en milieu de phrase
pour essayer
Cette fonction peut convenir s'il n'y a pas de majuscules en milieu de phrase
Function cesure(txt As String, n As Integer) As Integer
If n > Len(txt) Then
cesure = Len(txt)
Else
cesure = n
While Mid(txt, cesure, 1) >= "a" And Mid(txt, cesure, 1) <= "z"
cesure = cesure - 1
Wend
End If
End Function
pour essayer
Sub test()
Dim texte As String
Dim cs As Integer, L1 As String, L2 As String
texte = "Mille neuf cents quatre-vingt-dix-huit € et vingt-huit centimes"
'appel à la fonction césure
cs = cesure(texte, 62) 'ici réglé à 62 maxi
MsgBox "césure à " & cs
L1 = Mid(texte, 1, cs)
L2 = Mid(texte, cs + 1, Len(texte) - cs)
MsgBox L1 & Chr(10) & L2
End Sub
Merci pour ce code, il fonctionne parfaitement ! J'avais bien saisi qu'il conviendrait de créer une fonction, mais entre l'idée et la réalisation... :)
Mon appli va pouvoir être utilisée à 100% !