Renvoi à la ligne automatique après un nombre de caractère défini

Bonjour à toutes et à tous,

Je viens de m'inscrire et j'espère que l'on pourra échanger nos savoir faire et nos besoins mutuellement.

Je poste ici mon premier post.

Donc voici ma demande:

J'ai besoin qu'une cellule Excel me fasse un saut de ligne automatiquement (tel que l'on fait avec les touches alt+entrée) tous les 60 caractères.

Le top du top serait que le saut de ligne ne se fasse pas en plein milieu d'un mot mais juste avant si c'est le cas.

Auriez-vous une idée?

Merci

Bonjour,

J'ai un essai à proposer, s'il s'agit de saisie (pour l'exemple en colonne A). Le code est à saisir dans le module de la feuille visée :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A:A")) Is Nothing Then
    Call Renvoi(Target)
End If

End Sub

Sub Renvoi(cible As Range)

With cible
    .VerticalAlignment = xlTop
    .HorizontalAlignment = xlJustify
    .RowHeight = Application.max(13.5, Application.RoundUp(Len(.Value) / 60, 0) * 13.5)
    .WrapText = True
End With

End Sub

Cdlt,

Merci pour vos réponses.

Au risque de passer pour un ignorant, pourriez-vous me dire ou je dois coller le code VBA pour que cela fonctionne?

Il faut :

- enregistrer le fichier au format .xlsm,
- activer le volet "Développeur" (si ce n'est pas déjà fait) : Volet "Fichier" / Options / Personnaliser le ruban  > cocher "développeur",
- sur le volet "Développeur", ouvrir l'éditeur "Visual Basic" (raccourci Alt + F11),
- aller sur le module Feuil1 (exemple si ce renvoi concerne la feuille 1) et y copier le code

Les valeurs sont bien des saisies ? ou elles sont obtenues par formules ?

Merci, j'ai réussi la manip.

Merci pour vos réponses, je sens que l'on approche du but :)

Le résultat est presque bon. J'aimerais que le retour à la ligne se fasse dans la même cellule est non dans la cellule du dessous.

Est-ce possible d'avoir le même résultat que la case C1 ?

capture

Normalement, c'est dans la même cellule. Il faut bien choisir la colonne concernée :

If Not Intersect(Target, Range("A:A")) Is Nothing Then '<<<<<

Si ça ne marche toujours pas, essayez avec une zone définie :

If Not Intersect(Target, Range("A1:A100")) Is Nothing Then 'par exemple

C'est bizarre, sur votre image, le texte n'est pas justifié. Remplacez ainsi les lignes correspondantes :

    .VerticalAlignment = xlVAlignTop
    .HorizontalAlignment = xlHAlignJustify

Cdlt,

Rechercher des sujets similaires à "renvoi ligne automatique nombre caractere defini"