Renvoie à la ligne à l'espace avant le 20eme carractères

Bonjour à tous,

Je dois effectuer la mise en forme d'étiquettes avant impression.

Ma problématique est que je ne peux pas avoir plus de 20 caractères par ligne sur l'étiquette.

Pour cela, je dois insérer un retour à la ligne afin d'avoir, non plus une ligne mais deux.

J'arrive à insérer un retour à la ligne après le 20eme caractère mais comme chaque étiquette ne possède pas le même texte, ni la même longueur, cela me coupe le mot en deux, ce qui est logique.

Exemple : aaaaa bbbbb cc ddddddd eee me donne après le retour à la ligne :

aaaaa bbbbb cc ddddddd

dd eee

Je souhaiterais avoir le retour à la ligne au première espace avant le 20eme caractère :

aaaaa bbbbb cc

ddddddddd eee

Est-ce que quelqu'un serait comment faire?

Cette opération est effectuée sur plusieurs ligne de la feuille. Je joint le code que j'ai déjà effectué.

Merci

    Dim i As Long

    For i = 1 To 6000

        If Len(Cells(i, 9)) > 20 Then

        T = Left(Cells(i, 9), 20) & Chr(10) & Mid(Cells(i, 9), 21, 30)

        Cells(i, 9) = T

        End If

    Next i

sous forme de fonction ...

Function etiquette(cellule As Range) As String
Dim tableau
Dim nbcar
nbcar = 0
etiquette = ""

    tableau = Split(cellule.Value, " ")
    For j = 0 To UBound(tableau)
        nbcar = nbcar + Len(tableau(j)) + 1
        If nbcar > 20 Then
            etiquette = etiquette & Chr(10) & tableau(j)
            nbcar = Len(tableau(j))
        Else
            etiquette = etiquette & " " & tableau(j)
        End If
    Next j

End Function

déclarer la zone "renvoyer à la ligne automatiquement"

20etiquettes.xlsm (14.02 Ko)

Merci c'est parfait.

N'ayant jamais utilisé de Function, est-ce comme ça que l'on y fait appel?

Merci

    Dim c As Long

    For c = 1 To 6000

        Cells(c, 3).FormulaR1C1 = "=etiquette(RC[-1])"

    Next c

End Sub

Désolé, une question un peut trop attive de ma part.

J'ai trouvé la solution.

En tout cas merci pour ton aide.

    Dim c As Long

    For c = 1 To 6000

        Cells(c, 3) = etiquette(Cells(c, 3))

    Next c

End Sub

Tu peux aussi utiliser cette focntion directement dans ta feuille excel comme dans l'exemple

Si en Z34 tu as le texte, tu peux mettre partout où tu veux :

=etiquette(Z34)

Ok, merci.

Mais le fonctionnement de mon application ne me le permet pas,

car je vais chercher des données dans une autre feuille puis je les effaces en fonction du nombre indentique d'étiquette, soit 1 à 4.

Rechercher des sujets similaires à "renvoie ligne espace 20eme carracteres"