Passer une cellule en taille 7 si retour à la ligne manuel

Bonjour Forum !

Tout est dans le titre : dans une feuille donnée, j’aimerais qu’Excel passe automatiquement en taille 7 toute cellule qui comprend un retour à la ligne manuel (alt+ENTREE). Mais je ne sais pas comment m’y prendre…

Quelqu'un pourrait-il m'aider ?

Merci !

Bonjour,

Code à insérer dans le code de la feuille (plage à adapter, ou ne pas définir de plage.....)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then 'plage à adapter
    If InStr(1, Target, Chr(10)) > 0 Then Target.Font.Size = 7
End If
End Sub

Bonne soirée

Merci pour ton aide.

Je ne sais pas quoi mettre à la place de "plage à adapter"...

Si ça peut aider : en fait, j'ai besoin que la taille de police change quand on valide la cellule, pas de détecter s'il y a déjà des sauts de ligne manuels dans le reste de la feuille.

Re-,

Ben, "plage à adapter", c'est la zone dans laquelle tu veux que la cellule obéisse à ce changement de police....

Dans mon code, si la cellule que tu modifies se situe dans la plage "A1:A10", celle-ci passera automatiquement en police 7

Si tu désires que ce soit valable pour toute la feuille, tu mets ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
   If InStr(1, Target, Chr(10)) > 0 Then Target.Font.Size = 7
End Sub

PS, lorsque tu cliques sur un mot dans le code, puis sur la touche F1, tu as l'aide associée....(très utile pour essayer de comprendre les codes....)

Bonne soirée

La version 2 me va très bien, merci !!!!

(en revanche, j'ai essayé d'adapter la 1ère en changeant la 2ème ligne comme ça :

If Not Intersect(Target, Range("A1:A10")) Is Nothing Then ("B1: B10")

...mais Excel me retourne une erreur de syntaxe. Il faut dire qu'en VBA, je suis débutant moins)

Re-,

La première ligne :

If Not Intersect(Target, Range("A1:A10")) Is Nothing Then 

veut dire que si tu modifies une cellule incluse dans la plage de cellule "A1:A10", la commande "Taille de la police : 7" va s'exécuter...

Si tu veux modifier la plage de cellules dans laquelle tu veux faire modifier la taille de la police, tu modifies "A1:A10" par "B1:B10", par exemple....

"Target" est la cellule que tu modifies

Bonne soirée

Tout compris, merci !!!!!


...euh, question complémentaire :

est-ce que c'est possible de passer en taille 7 aussi s'il y a un retour à la ligne automatique.

Càd : si le texte est plus long que la largeur de la cellule, Excel renvoie à la ligne. Et là, hop, le texte passe en taille 7 ?

Merci !


Je relance ce fil à propos de la question complémentaire que je posais dans mon dernier post :

est-ce que c'est possible de passer en taille 7 aussi s'il y a un retour à la ligne automatique.

Càd : si le texte est plus long que la largeur de la cellule, Excel renvoie à la ligne. Et là, hop, le texte passe en taille 7 ?

J'en ajoute une seconde :

serait-il possible de passer en taille 5 s'il y a 3 sauts de ligne manuels ?

Mes connaissances en VBA sont trop limitées pour y arriver sans aide.


...je relance à nouveau...

A l'aide !

Merci.

...je relance à nouveau le sujet, en espérant qu'il remontera dans le Forum...

A l'aide !!!

Bonsoir

Quand c'est Excel c'est que tu as sélectionné dans "format de cellule" -->onglet "Alignement" --> "Renvoyer à la ligne automatiquement"

dans ce cas je n'ai aucune idée

A part tu décoches cette case et tu coches "Ajuster"

Pour 3 sauts de lignes

Essayes (valable pour toute la feuille)

Code à placer dans le code de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    Select Case Len(.Value) - Len(Replace(.Value, Chr(10), ""))
    Case 1
      .Font.Size = 7
    Case 3
      .Font.Size = 5
    End Select
  End With
End Sub

Merci, c'est super !

J'ai tenté une petite modif pour que la cellule repasse en corps 7 quand on supprime le saut de ligne manuel qui l'avait fait en corps 5, mais je n'obtiens pas l'effet escompté...

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    Select Case Len(.Value) - Len(Replace(.Value, Chr(10), ""))
    Case 3
      .Font.Size = 5
    Case 1
      .Font.Size = 7
    End Select
  End With
End Sub

Dommage, je pensais que je faisais des progrès en VBA !

Bonsoir

C'est dans l'idée mais entre 3 et 1 il y a 2 et dans la macro on ne fait rien quand il n'y a que 2 retours

Alors quand tu es en taille 5 supprimes 2 retours

J'ai compris 2 trucs :

  • ton explication
  • c'est pas en VBA que je dois faire des progrès, mais en logique !

Merci encore.

Rechercher des sujets similaires à "passer taille retour ligne manuel"