limiter le nombre de caractères.

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 !

vince51

XLDnaute Nouveau
bonjour à tous,

après avoir visité le forum en long, en large et en travers, j ai décidé de prendre les devants pour trouver une réponse.
j'ai un fichier qui me sert à faire du publipostage. les normes de la poste limitant à 38 caractères par ligne, je souhaitera :

-limiter ne nombre de caractères à 38 par cellule (données/validation ne me convient pas)
-que lorsque je dépasse les 38 caractères ca passe dans la colonne suivante
-et dernière contrainte que les mots ne soient pas coupés et que le mot passe donc dans la colonne suivante plutôt que d'être coupé au 38eme caractère.

le problème c'est que je n'y connais rien aux macros. donc j'apprecierai si quelqu'un a un peu de temps à me consacrer. merci d'avance.
 
Re : limiter le nombre de caractères.

bonjour et bienvenu,

voici un code liée à la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim maxLen As Integer
maxLen = 38
If Len(Target.Value) > maxLen Then
    Target.Offset(0, 1).Value = Mid(Target.Value, maxLen + 1, Len(Target.Value) - maxLen) & Target.Offset(0, 1).Value
    Target.Value = Mid(Target.Value, 1, maxLen)
End If
End Sub

à tester...

a+
 
Re : limiter le nombre de caractères.

je te remercie, c est déjà un bon début...
bon je reussi pas a le faire par moi même mais en reprenant ton fichier c'est bon...
et est ce que tu sais si c est possible de faire en sorte que les mots ne soient pas coupés? et commen faire pour ne l appliquer qu'à certaines colonnes?
je sais j'en demande beaucoup...
 
Re : limiter le nombre de caractères.

re,

voici un code qui à l'air de marcher, mais à tester :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
Dim maxLen As Integer, tabStr, i As Integer, tempStr
maxLen = 38

tabStr = Split(Target.Value, " ")
tempStr = ""
For i = LBound(tabStr) To UBound(tabStr)
    If Len(tempStr & " " & tabStr(i)) < maxLen Then
        If tabStr(i) <> "" Then tempStr = tempStr & " " & tabStr(i)
    Else
        If tempStr = "" Then tempStr = tabStr(i)
        tempStr = Right(tempStr, Len(tempStr) - 1)
        Target.Offset(0, 1).Value = Mid(Target.Value, Len(tempStr) + 2, Len(Target.Value) - Len(tempStr)) & " " & Target.Offset(0, 1).Value
        Target.Value = tempStr
        i = UBound(tabStr) + 1
    End If
Next i
End Sub

a+
 
Dernière édition:
Re : limiter le nombre de caractères.

re,

pour limiter à certaines colonnes, il faut rajouter une ligne :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
[B]If Not (Target.Column = [COLOR="Red"][I]n°Col 1[/I][/COLOR] Or Target.Column = [COLOR="Red"][I]n°Col 2[/I][/COLOR] Or Target.Column = [COLOR="Red"][I]n°Col 3 ...[/I][/COLOR]) Then Exit Sub[/B]
Dim maxLen As Integer, tabStr, i As Integer, tempStr
maxLen = 38

tabStr = Split(Target.Value, " ")
tempStr = ""
For i = LBound(tabStr) To UBound(tabStr)
    If Len(tempStr & " " & tabStr(i)) < maxLen Then
        If tabStr(i) <> "" Then tempStr = tempStr & " " & tabStr(i)
    Else
        If tempStr = "" Then tempStr = tabStr(i)
        tempStr = Right(tempStr, Len(tempStr) - 1)
        Target.Offset(0, 1).Value = Mid(Target.Value, Len(tempStr) + 2, Len(Target.Value) - Len(tempStr)) & " " & Target.Offset(0, 1).Value
        Target.Value = tempStr
        i = UBound(tabStr) + 1
    End If
Next i
End Sub

je n'ai pas testé le code.

a+
 
- 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