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 : Macro aller à la Cellule

Bonjour le fil 🙂,
Sans garantie sous Mac 😱, essaie le fichier ICI en modifiant simplement
Code:
Cells(Selection.Row, Selection.Column + I - 1) = Controls("TextBox" & I).Text
dans Private Sub CommandButton1_Click().
Bon courage 😎
 
Re : VBA, suite du texte dans la cellule du dessous

Bonjour chalet et JNP,
Merci pour vos réponses

Grace toi JNP, j'ai trouvé ce fichier:
Lien supprimé

De BANZAI, c'est ce que je cherche à faire.
Mais je me suis aperçu, que parfois le(s) derniers caractères étaient cachés.
Et que le seul moyen de les afficher, c'est d'élargir la colonne, ce que je ne peut pas faire.

N'y a-t-il pas moyen de remédier à çà en mettant un contrôle en cours de saisie.

Contrôle, qui ferai un test de comparaison, entre la longueur de la phrase et la somme des largeurs des colonnes (A,B,C,D,E,F dans mon fichier) qu'elle traverse jusqu'au bord gauche de la colonne à ne pas déborder (G).

Si, le test s'avère positif, alors on passe dans la cellule du dessous, avant que les derniers caractères ne se trouvent cachés.
Si non on inscrit les derniers caractères dans la cellule en cours.

J'espère avoir été clair.

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

Bonjour atos01, salut CHALET53, Jean-Noël 🙂

Mettez la macro ci-dessous dans le code de la feuille (clic droit sur l'onglet et Visualiser le code).

Puis testez-la en revalidant par exemple la cellule A3.

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1:A25]) Is Nothing Or Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
Dim txt$, L#, pos#, s, i%
Application.ScreenUpdating = False
Application.EnableEvents = False
txt = Target
L = Target.ColumnWidth
pos = [G1].Left
s = Split(Application.Trim(txt))
Target = s(0)
For i = 1 To UBound(s)
  Target = Target & " " & s(i)
  Target.Columns.AutoFit
  If [B1].Left > pos Then Exit For
Next
Target.ColumnWidth = L
If i <= UBound(s) Then
  Target.Offset(1).EntireRow.Insert
  Target = Left(Target, InStrRev(Target, " ") - 1)
  txt = s(i)
  For i = i + 1 To UBound(s)
    txt = txt & " " & s(i)
  Next
  Application.EnableEvents = True
  Target.Offset(1) = txt
End If
Application.EnableEvents = True
End Sub
A+
 
Re : VBA, suite du texte dans la cellule du dessous

Re 🙂,
N'y a-t-il pas moyen de remédier à çà en mettant un contrôle en cours de saisie.
Non, comme indiqué sur le fil que je t'ai cité, il n'y a pas d'évènement associé à la saisie dans une cellule. Par contre, tu peux modifier dans le code de Banzaï
Code:
If Len(Target.Offset(Pos, 0) & " " & Tbl(I)) <= 20 Then
le 20 pour modifier le nombre de caractère, et utiliser une police à caractères constants type Courrier 🙄...
Bon courage 😎
Ajout : Bonjour Gérard 🙂
 
Dernière édition:
Re : VBA, suite du texte dans la cellule du dessous

Re,

Evidemment comme ma macro ajoute des lignes, il faut prévoir une plage "extensible".

Le plus simple est de nommer Plage la plage A1:A25 au départ.

Puis modifiez la 2ème ligne de la macro ainsi :

Code:
If Intersect(Target, [Plage]) Is Nothing Or Target.Count > 1 Then Exit Sub
A+
 
Re : VBA, suite du texte dans la cellule du dessous

Bonjour atos01

Salut CHALET53
Salut job 🙂 🙂
Salut JNP 🙂 🙂

Un essai à tester et retester
NB: certains retours à la ligne (dans la cellule ) peuvent etre conservés

Edit: Je n'ai pas trop de succes avec ton fichier job: je n'ai surement pas bien compris la manip
 

Pièces jointes

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

Bonjour pierrejean 🙂

Edit: Je n'ai pas trop de succes avec ton fichier job: je n'ai surement pas bien compris la manip

Oui, je ne sais pas qui de toi ou moi n'est pas sur la bonne longueur d'onde 😕

Enfin je continue avec 2 améliorations de ma macro.

1) Application.ScreenUpdating = True est nécessaire en fin de macro si l'on entre du texte par Copier/Coller.

2) J'ai ajouté ce code pour qu'il y ait toujours une ligne vide en fin de tableau :

Code:
'---traitement de la dernière ligne de la plage---
If Target.Row = [Plage].Row + [Plage].Count - 1 Then
  With Target.EntireRow
    .Insert
    .Offset(-1) = .Value
    .ClearContents
    Target.Offset(-1) = Target.Offset(-1) 'relance la macro
  End With
  Exit Sub
End If
Fichier (2) joint.

A+
 

Pièces jointes

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

Re

@ job 🙂

OK j'ai mieux saisi ce que tu as fait

pour ma part j'ai modifié afin de cadrer avec les colonnes de A à F (la limite du nbre de caracteres est peut-etre à peaufiner)
 

Pièces jointes

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

Bonjour Jean Nöel, Chalet, JOB et Pierrejean,🙂

Bravo et merci à tous pour votre aide , vous êtes trop cool.😉
Cà fait vraiment plaisir de pouvoir compter sur des gens comme vous.

Job, j'ai testé ton code et il me convient "presque" (dernier fichier).😱

Pour ce qui est du retour dans la cellule inf çà me semble OK.
En ce qui concerne l'insertion de ligne çà n'est tout a fait ce que je souhaite.

Je m'explique, dans l'état actuel si la phrase tient dans une seule ligne, il n'y à pas d'ajout de ligne, jusque là c'est OK.
Mais si elle dépasse la limite (colonne G) alors la il y à insertion d'une ligne supplémentaire et çà n'est pas ce que m'interesse.

Par contre l'idé de la ligne vide en fin de tableau me convient tout à fait.
Le seul problème c'est que la mise en forme ne paraît pas être respectée.
C'est à dire que le cadre disparait.

Pour le remplissage, il n'est pas utile, je l'avais mis seulement pour mettre en évidence la plage de cellules concernée.
Mais çà je ne vous l'avais pas explicité.

Dernière chose, enfin pour le moment.😱
Dans la colonne "Prix" il y aura une formule qu'il faudra recopier vers le bas en cas d'insertion de ligne.

Je m'excuse si par hasard je vous en demande un peut trop. 😱
@+
 
Re : VBA, suite du texte dans la cellule du dessous

J'ai omis de préciser, que c'est le bord gauche de la cellule insérée, qui pose problème.

Je reviens sur ce que j'ai dit.
Après vérification, c'est quand je fais un copier coller d'un texte se trouvant dans une autre cellule que le problème se pose.
C'est à dire que la mise en forme de la cellule copié est reproduite sans possibilité de choisir le mode de recopie.
@+
 
- 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