decoper le contenu d'une cellule (chaine de caractere)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hicham28

XLDnaute Occasionnel
bonjour, je vous joint ci apres le code pour decouper une phrase en deux, ma question c 'est comment faire en utilisant ce code pour arrivé a décoper une phrase en deux si la phrase depasse un certaine nombre de caractere au lieu de tester par le nombre de mots et faire introduire "-" si il y'as eu une copure d'un mot.
merci pour votre aide


Function PremiersMots(Phrase As String)
Application.Volatile
Dim I As Integer, Compteur As Integer, Longueur As Integer
For I = 1 To Len(Phrase)
If Mid(Phrase, I, 1) = " " Then
Compteur = Compteur + 1
End If
If Compteur = 5 Then ' Nombre de mots à garder
Longueur = I - 1
Exit For
End If
Next I
If Longueur = 0 Then
PremiersMots = Phrase
Else
PremiersMots = Mid(Phrase, 1, Longueur)
End If
End Function
Function DerniersMots(Phrase As String)
Application.Volatile
Dim I As Integer, Compteur As Integer, Longueur As Integer
For I = 1 To Len(Phrase)
If Mid(Phrase, I, 1) = " " Then
Compteur = Compteur + 1
End If
If Compteur = 5 Then ' Nombre de mots à effacer
Longueur = I + 1
Exit For
End If
Next I
If Longueur = 0 Then
DerniersMots = ""
Else
DerniersMots = Mid(Phrase, Longueur, Len(Phrase) - Longueur + 1)
End If
End Function
 
Re : decoper le contenu d'une cellule (chaine de caractere)

Bonsoir Hicham,

Voici un fonction qui renvoie la phrase coupées en ligne de 25 caractères ou moins (pour ne pas couper les mots) et rajoute un tiret entre les morceau de phrase

Code:
Function couperPhrase(Phrase As String, Optional LongueurCoupure As Single = 25)
    Const Separateur As String = "-" & vbLf     'Tiret et saut de ligne
 
    Dim i As Integer, cpt As Integer
    Dim lgPhrase As Integer
    Dim Morceau As String, reste As String
 
 
    lgPhrase = Len(Phrase)
    If lgPhrase <= LongueurCoupure Then Exit Function
 
    reste = Phrase
    Phrase = ""
    Do While Len(reste) > LongueurCoupure + 1
          'On extrait un morceau de la pharse à la longueur voulue+1 caratère
          Morceau = Left(reste, LongueurCoupure + 1)
          'La boucle for va chercher le premier espace en partant de la fin
          'du morceau
          For i = Len(Morceau) To 1 Step -1
            If Mid(Morceau, i, 1) = " " Then
                Morceau = Left(Morceau, i - 1)
                Exit For
            End If
          Next i
          'Retenir le reste de la phrase à découper
          reste = Trim(Right(reste, Len(reste) - Len(Morceau)))
 
          'construire le resultat avec le séparteur
          Phrase = Phrase & Morceau & Separateur
    Loop
 
    If Len(reste) > 0 Then
       'S'il reste un morceau < à la longueur en sortie de boucle on le rajoute
       'Sans séparateur
       Phrase = Phrase & reste
    Else
       'Sinon on enlève le séparateur final
       Phrase = Left(Phrase, Len(Phrase) - Len(Separateur))
    End If
    couperPhrase = Phrase
 
End Function

en espérant que cela correspond à ce que tu désire. (J'ai pas bien compris pour le tiret).

A bientôt
 
Re : decoper le contenu d'une cellule (chaine de caractere)

merci pour vos réponses,
puisque j'utilise une fonction pour convertir les chiffres en lettres, j'ai utiliser la formule suivante, c correcte, merci d'avance

pour la premiere cellule
=SI(NBCAR((ConvNumberLetter(E1;3;0;2;0)))<60;STXT(ConvNumberLetter(E1;3;0;2;0);1;60);STXT(ConvNumberLetter(E1;3;0;2;0);1;60)&"-")

pour la deuxieme cellule
=STXT(ConvNumberLetter(E1;3;0;2;0);61;NBCAR(ConvNumberLetter(E1;3;0;2;0)))


etant E1 une cellule qui contient un chiffre.
merci encord d'avance
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour