VBA, suite du texte dans la cellule du dessous

  • Initiateur de la discussion Initiateur de la discussion atos01
  • Date de début Date de début

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 !

A

atos01

Guest
Bonjour la communauté.

Alors voilà mon problème.
Je voudrais construire un code qui me permettrai de:
Voir fichier joint.

j'espère que vous pourrais m'aider.
@+
 

Pièces jointes

Dernière modification par un modérateur:
Re : VBA, suite du texte dans la cellule du dessous

Bonsoir atos01, le fil, le forum,

Je vais vous parler franchement.

Cette méthode qui consiste à insérer des lignes j'en ai soupé 😡

Car elle n'est pas du tout logique pour un tableau et elle est bien trop compliquée.

Dans le fichier joint, en colonne A, on met (ou on efface) le format Renvoyer à la ligne automatiquement.

Les 2 macros sont très simples :

Code:
Private Sub CommandButton1_Click()
Dim t$, plage As Range
t = "Renvoi à la ligne"
Set plage = Range("A2:A" & [derlig])
With CommandButton1
  plage.WrapText = .Caption = t 'avec ou sans renvoi à la ligne
  plage.Rows.AutoFit 'ajustement des hauteurs de lignes
  .Caption = IIf(.Caption = t, "Sans " & LCase(t), t)
End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Names.Add "derlig", [A65536].End(xlUp).Row + 1
End Sub
Voyez aussi le nom défini derlig et les 4 MFC.

A+
 

Pièces jointes

Re : VBA, suite du texte dans la cellule du dessous

Re,

La 2ème macro était quand même un peu trop simple...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range
ThisWorkbook.Names.Add "derlig", [A65536].End(xlUp).Row + 1
Set plage = Range("A2:A" & [derlig])
If Intersect(Target, plage) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
[A2].Borders(xlEdgeTop).LineStyle = xlNone
[A2].AutoFill plage, xlFillFormats 'pour copier le renvoi à la ligne
[A2].Borders(xlEdgeTop).LineStyle = xlContinuous
End Sub
Fichier(2).

A+
 

Pièces jointes

Re : VBA, suite du texte dans la cellule du dessous

Bonjour atos01, le forum,

J'avais compliqué inutilement, voici la bonne solution.

On notera que le CommandButton a été remplacé par un Label :

Code:
Private Sub Label1_Click()
Dim t$
t = "Renvoi à la ligne"
Range("A2:A" & Rows.Count).WrapText = Label1 = t '(sans) renvoi à la ligne
Label1 = IIf(Label1 = t, "Sans " & LCase(t), t)
Label1.BackColor = [A1].Interior.Color
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Names.Add "derlig", [A65536].End(xlUp).Row + 1 'pour les MFC
Application.ScreenUpdating = False 'rafraîchissement de l'écran...
End Sub
Finalement derlig ne sert que pour les MFC.

Edit : j'avais utilisé AutoFit, ça ne semble pas nécessaire...

Fichier (3).

A+
 

Pièces jointes

Dernière édition:
Re : VBA, suite du texte dans la cellule du dessous

Re encore...

Pour éviter une mise à jour inutile de l'écran :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d&
d = [A65536].End(xlUp).Row + 1
If d = [derlig] Then Exit Sub
ThisWorkbook.Names.Add "derlig", d 'pour les MFC
Application.ScreenUpdating = True 'rafraîchissement de l'écran...
End Sub
Fichier (4)

Edit : ah la barbe, j'avais mis False pour l'écran, pas réveillé !

A+
 

Pièces jointes

Dernière édition:
Re : VBA, suite du texte dans la cellule du dessous

Bonjour Job, le fil, le forum,

Job merci pour ton dévouement que j'apprécie beaucoup.
Encore à bosser sur mon problème à 0h35 et reprendre ce matin assez tôt, je crois çà n'en vaut pas la peine.

Pour en revenir à nos moutons.

En ce qui concerne l'ajout de ligne je crois que c'est ok.
Maintenant, je ne sais chez toi.

Mais chez moi, le retour à la ligne dans cellule inférieur lorsque la phrase est trop longue, ne fonctionne pas.
je ne sais pas si j'ai loupé quelque chose.
Si c'est le cas j'aimerais STP que tu m'explique.

Merci.
@+
 
Re : VBA, suite du texte dans la cellule du dessous

Re,

De quel fichier parlez-vous ???

Comme je l'ai dit, pour moi les versions avec ajouts de lignes c'est fi-ni 😛

Le dernier fichier, je l'ai testé OK sur Excel 2003 et 2010. Je ne peux rien faire de plus.

Mais je sais que sous Mac on a souvent des problèmes avec Excel.

A+
 
Re : VBA, suite du texte dans la cellule du dessous

Re,

C'est justement le dernier fichier.
C'est vrai que j'ai souvent remarqué des bizarreries avec excel MAC.

Ce qui est vraiment dommage, car l'utilisation finale du fichier que j'assei de mettre au point, se fera sous Excel windows.

Désolé de vous avoir embêté à ce point.

@+
 
Re : VBA, suite du texte dans la cellule du dessous

Re,

Comme je l'ai dit j'avais enlevé les Autofit, pas nécessaires chez moi.

Je les ai remis dans le fichier joint, essayez.

Edit : si vous testez les macros sur un autre fichier que le mien, déposez-le sur le fil svp.

A+
 

Pièces jointes

Dernière édition:
Re : VBA, suite du texte dans la cellule du dessous

Bonjour atos01, le forum,

J'ai retesté le fichier (4) du post #19 en faisant ceci :

- mis la hauteur de toutes les lignes de la feuille à 12

- cliqué sur Renvoi à la ligne.

Et effectivement rien ne se passe, le retour à la ligne n'est pas visible.

Par contre avec le fichier (5)+Autofit, plus de problème.

Donc Autofit est indispensable pour un fonctionnement dans tous les cas de figure.

Edit : ici les macros à utiliser, au cas où :

Code:
Private Sub Label1_Click()
Dim t$
t = "Renvoi à la ligne"
With Range("A2:A" & Rows.Count)
  .WrapText = Label1 = t '(sans) renvoi à la ligne
  .EntireRow.AutoFit 'ajuste les hauteurs des lignes
End With
Label1 = IIf(Label1 = t, "Sans " & LCase(t), t)
Label1.BackColor = [A1].Interior.Color
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range("A2:A" & Rows.Count))
If Target Is Nothing Then Exit Sub
ThisWorkbook.Names.Add "derlig", [A65536].End(xlUp).Row + 1 'pour les MFC
Target.EntireRow.AutoFit
Application.ScreenUpdating = True 'rafraîchissement de l'écran...
End Sub
A+
 
Dernière édition:
Re : VBA, suite du texte dans la cellule du dessous

Bonjour JOB, le fil, le forum,

Désolé, mais chez moi, cela ne fonctionne toujours pas.
C'est certainement du à cette version d'Excel, qui de toute évidence n'est pas très aboutie.

Je crois que je vais laisser tomber cette possibilité (à moins, que quelqu'un trouve une solution).
Car je ne voudrais pas abuser des bonnes volontés de ce forum (comme vous entre autres).

Je vais encore avoir besoin de vos services pour d'autres problèmes dans le même projet.
Et je ne voudrais pas que vous soyez lassés par mes demandes incessantes.

Je vais m'en tenir au forçage du retour à la ligne.

En tous cas, merci à tout ceux qui ont participé à ce fil et plus particulièrement à vous Job qui m'avais suivi jusqu'au bout.

@+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
469
Réponses
1
Affichages
236
Réponses
3
Affichages
267
Retour