OVH Cloud OVH Cloud

NB CAR

10 réponses
Avatar
Jacquouille
Bonsoir
Au moyen d'un copié-collé, j'ai transcrit le texte de mes conversations MSN
dans Excel (plus facile à gérer les colonnes). Malheureusement, le texte de
certaines cel est trop long. Je voudrais donc forcer un retour à la ligne,
mais à une certaine distance du début de la phrase.
Voilà ce que je pensais:
For Each c in range ("C:C")
If Nbcar(c) > 110 Then
???? Goto au car 110 et tu recules jusqu'à ce que tu trouves un blanc
(séparation de deux mots), ensuite tu fais Alt+Enter pour forcer le retour à
la ligne.
---------
Prob : il ne comprend pas mon Français et ensuite, je suppose qu'il va
passer à la cel suivante dès qu'il aura fait un retour à la ligne, sans
mesurer ce qui reste. Or, si la phrase contient 250 car, on est baisé !
-----------
Pouvez-vous m'aiguillonner, svp
Un grand merci de la part de Jacques, qui revient au bercail car les
Wordiens ne veulent pas qu'il fasse des macros. ! -))
--
Bien amicalmement,
Vivement conseillé >> http://www.excelabo.net
Jacquouille.
j.thiernesseNOSPAM@skynet.be

10 réponses

Avatar
Starwing
Bonjour Jacqouille,

Une autre solution envisageable serait:

http://softchris.free.fr/softnote.htm

Un remarquable aide-mémoire.

--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
StarwingT

--
"Jacquouille" a écrit dans le message de
news:%
Bonsoir
Au moyen d'un copié-collé, j'ai transcrit le texte de mes conversations
MSN

dans Excel (plus facile à gérer les colonnes). Malheureusement, le texte
de

certaines cel est trop long. Je voudrais donc forcer un retour à la ligne,
mais à une certaine distance du début de la phrase.
Voilà ce que je pensais:
For Each c in range ("C:C")
If Nbcar(c) > 110 Then
???? Goto au car 110 et tu recules jusqu'à ce que tu trouves un blanc
(séparation de deux mots), ensuite tu fais Alt+Enter pour forcer le retour
à

la ligne.
---------
Prob : il ne comprend pas mon Français et ensuite, je suppose qu'il va
passer à la cel suivante dès qu'il aura fait un retour à la ligne, sans
mesurer ce qui reste. Or, si la phrase contient 250 car, on est baisé !
-----------
Pouvez-vous m'aiguillonner, svp
Un grand merci de la part de Jacques, qui revient au bercail car les
Wordiens ne veulent pas qu'il fasse des macros. ! -))
--
Bien amicalmement,
Vivement conseillé >> http://www.excelabo.net
Jacquouille.





Avatar
JpPradier
Bonsoir Jacquouille

Une petite fonction recursive ci-dessous.
j-p


Sub test2()
For Each cellu In Range("A1:A10")
If Len(cellu) > 150 Then cellu.Value = decoup(cellu.Value)
Next
End Sub

Function decoup(mot)
debut = Left(mot, 150) & Chr(10)
fin = Mid(mot, 151)
If Len(fin) > 150 Then fin = decoup(fin)
decoup = debut & fin
End Function
Avatar
GD
Bonsour ® mon Jacky
;o)))
avec des petites fonctions perso ça te va ???
passe à la ligne au premier espace trouvé avant la longueur souhaitée
pour trouver facilement la position de chr(32) en partant de la fin
j'utilise une fonction perso(Renverse) pour inverser une chaine
utilisation :
=Découpe(A1;80)

Function Decoupe(target, longueur)
Application.Volatile
fini = False
grandchaine = target.Value
petitchaine = ""
While Not fini
' on recherche la 1ere position de chr(32) a partir de l'extrémité
y = InStr(Renverse(Left(grandchaine, longueur)), Chr(32))
If y > 0 Then
' on a trouvé un espace, c'est pas fini
' on récupere la longueur - le morceau jusque chr(32)
petitchaine = petitchaine & Left(grandchaine, longueur - y) & Chr(10)
' on raccourci la chaine de départ
grandchaine = Trim(Mid(grandchaine, longueur - y + 1, 9 ^ 9))
Else
' c'est fini
fini = True
' on fini en mettant le bout restant
Decoupe = petitchaine & Trim(Left(grandchaine, longueur - y))
End If
Wend
End Function

Function Renverse(target)
' -----------pour inverser une chaine
res = ""
For nC = Len(target) To 1 Step -1
res = res & Mid(target, nC, 1)
Next nC
Renverse = res
End Function

@+


Bonsoir
Au moyen d'un copié-collé, j'ai transcrit le texte de mes
conversations MSN dans Excel (plus facile à gérer les colonnes).
Malheureusement, le texte de certaines cel est trop long. Je voudrais
donc forcer un retour à la ligne, mais à une certaine distance du
début de la phrase.
Voilà ce que je pensais:
For Each c in range ("C:C")
If Nbcar(c) > 110 Then
???? Goto au car 110 et tu recules jusqu'à ce que tu trouves un blanc
(séparation de deux mots), ensuite tu fais Alt+Enter pour forcer le
retour à la ligne.
---------
Prob : il ne comprend pas mon Français et ensuite, je suppose qu'il va
passer à la cel suivante dès qu'il aura fait un retour à la ligne,
sans mesurer ce qui reste. Or, si la phrase contient 250 car, on est
baisé ! -----------
Pouvez-vous m'aiguillonner, svp
Un grand merci de la part de Jacques, qui revient au bercail car les
Wordiens ne veulent pas qu'il fasse des macros. ! -))


Avatar
JpPradier
Bonsoir GD

En lisant ta réponse, je me rends compte que j'ai complètement zappé la partie recherche d'espace
:-(

j-p
Avatar
JièL Goubert
Bonjoir(c) Jacquouille

ma "non" macro sur Word ne t'allais pas ? ;-)
Tu aurais peut-être du porsuivre car en fait une fois ton tableau avec les
largeur que tu veux, tu enregistre en texte et c'est gagné

mais bon, c'est vrai que c'est sans macros superfétatoire ;-))))))))

--
JièL AMIS

Le 18/11/2004 21:55 vous avez écrit ceci :
Bonsoir
Au moyen d'un copié-collé, j'ai transcrit le texte de mes conversations MSN
dans Excel (plus facile à gérer les colonnes). Malheureusement, le texte de
certaines cel est trop long. Je voudrais donc forcer un retour à la ligne,
mais à une certaine distance du début de la phrase.
Voilà ce que je pensais:
For Each c in range ("C:C")
If Nbcar(c) > 110 Then
???? Goto au car 110 et tu recules jusqu'à ce que tu trouves un blanc
(séparation de deux mots), ensuite tu fais Alt+Enter pour forcer le retour à
la ligne.
---------
Prob : il ne comprend pas mon Français et ensuite, je suppose qu'il va
passer à la cel suivante dès qu'il aura fait un retour à la ligne, sans
mesurer ce qui reste. Or, si la phrase contient 250 car, on est baisé !
-----------
Pouvez-vous m'aiguillonner, svp
Un grand merci de la part de Jacques, qui revient au bercail car les
Wordiens ne veulent pas qu'il fasse des macros. ! -))


Avatar
JpPradier
Re Jacquouille

Re voici la macro en tenant compte des espaces. Fonctionne avec Excel 2000 minimum.

Sub test2()
For Each cellu In Range("A1:A10")
If Len(cellu) > 150 Then cellu.Value = decoup(cellu.Value)
Next
End Sub

Function decoup(mot)
coupe = InStrRev(Left(mot, 150), " ")
debut = Left(mot, coupe) & Chr(10)
fin = Mid(mot, coupe + 1)
If Len(fin) > 150 Then fin = decoup(fin)
decoup = debut & fin
End Function
Avatar
Clément Marcotte
Bonjour

pour trouver facilement la position de chr(32) en partant de la fin
j'utilise une fonction perso(Renverse) pour inverser une chaine


M'est avis que tu fais un détour inutile. ;-)

La fonction VBA InstrRev() donne la position d'un caractère dans une
chaîne en partant de la fin de la chaîne. Le résultat obtenu est
calculé à partir du début de la chaîne, mais la recherche débute par
la fin de la chaîne.

Avatar
Clément Marcotte
Bonjour,

pour trouver facilement la position de chr(32) en partant de la fin
j'utilise une fonction perso(Renverse) pour inverser une chaine


Va falloir que tu fasses brûler un lampion pour qu'aucun AMIS ne voit
cela :-)

Avatar
JièL Goubert
Bonjoir(c) Clément Marcotte

Le 19/11/2004 01:07 vous avez écrit ceci :
Va falloir que tu fasses brûler un lampion pour qu'aucun AMIS ne voit
cela :-)


raté, c'est vu ;-)))))))))

La prochaine fois il faudra penser à aller bruler un cierge à la Bonne Mère
plutot qu'un misérable lampion ;-)))
http://www.allmarseille.com/notredame.php3

--
JièL Lent Pion

Avatar
AV
Pour le fun ....
Couper la phrase en 2 (si elle contient plus de 80 caractères) à l'espace dont
la position est égale ou immédiatement inférieure à 80
Matricielle (validation par ctrl+maj+entrée)
(cellule formatée avec retour à la ligne auto)

=SI(NBCAR(A1)>80;GAUCHE(A1;(MAX(SI(ESTNUM(TROUVE("
";STXT(A1;LIGNE(1:200);1)))*LIGNE(1:200)<81;ESTNUM(TROUVE("
";STXT(A1;LIGNE(1:200);1)))*LIGNE(1:200);"")))-1)&CAR(10)
&STXT(A1;(MAX(SI(ESTNUM(TROUVE("
";STXT(A1;LIGNE(1:200);1)))*LIGNE(1:200)<81;ESTNUM(TROUVE("
";STXT(A1;LIGNE(1:200);1)))*LIGNE(1:200);"")))+1;9^9);A1)

PS : on pourrait aussi imaginer faire x coupures de phrase (x = ent(nbcar(la
Phrase)/80)
AV