Word Afficher texte au km

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 !

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Est-il possible, sous Word, d'avoir un affichage "brut" du texte saisi au km ?

Word essaye d'être intelligent et de passer à la ligne suivante sans découper les mots. 🙁
Moi, je voudrais au contraire qu'il remplisse chaque ligne jusqu'au bout et coupe les mots en deux sans ajouter de trait d'union.

Est-ce possible ?
Si oui, comment faire ?


Merci
 
Solution
Merci ! It's perfect ! (ou presque... lol)

Sur ta capture d'écran on voit un caractère de moins sur la première ligne, mais chez moi j'obtiens un caractère de plus sur la première ligne. 😉
j'avais oublié un espace avant d'insérer ta formule 🤒.
Avec l'ajout du saut de ligne, tu ne peux plus faire de recherche dans ta formule si le saut est à l'intérieur de la chaine recherchée 😡 :
Voici une nouvelle proposition qui permet de revenir en arrière car bizarrement, impossible par Recherche - Remplacer de supprimer les sauts de ligne ajoutés par la macro.
2 macros
- CouperLignesSelection les sauts de ligne ne sont que sur ta sélection (donc il faut sélectionner préalablement ta formule)
-...
Bonsoir le fil

@TooFatBoy
Suggestion en passant
Aucune des options ci-dessous ne donnent le résultat que tu souhaites ?
toofatboy.PNG

==> Paragraphe/Enchainements
 
Bonjour le fil
@TooFatBoy , rien trouvé 😔
Comme tu l'as écrit, avec la coupure de mots automatique, il est ajouté un tiret au niveau du mot coupé.
1739201281556.png

Je ne vois pas de solution.
La coupure doit-elle être effective en cours de saisie ou bien peut-elle être fait par macro par exemple en fin de saisie ?
 
Bonjour le fil
@TooFatBoy , rien trouvé 😔
Comme tu l'as écrit, avec la coupure de mots automatique, il est ajouté un tiret au niveau du mot coupé.
Regarde la pièce jointe 1212779
Je ne vois pas de solution.
La coupure doit-elle être effective en cours de saisie ou bien peut-elle être fait par macro par exemple en fin de saisie ?
Merci de t'être penché sur mon problème.

En fait, c'est une formule Excel que j'ai écrite dans Word, mais elle fait plusieurs lignes (même en format A3 paysage, Courrier taille 7), et je voudrais qu'il y ait le même nombre de caractères sur chaque ligne et que Word n'ajoute pas d'espace insécable ou autres trucs parasites.

Si c'est avec un bouton associé à une macro, ça me va.
Actuellement je fais les sauts de ligne à la main... 🙁
 
Merci de t'être penché sur mon problème.

En fait, c'est une formule Excel que j'ai écrite dans Word, mais elle fait plusieurs lignes (même en format A3 paysage, Courrier taille 7), et je voudrais qu'il y ait le même nombre de caractères sur chaque ligne et que Word n'ajoute pas d'espace insécable ou autres trucs parasites.

Si c'est avec un bouton associé à une macro, ça me va.
Actuellement je fais les sauts de ligne à la main... 🙁
Si ta formule n'est pas Secret Défense, donne-là pour voir ce qu'on peut en faire.
Tu l'as écrite directement dans Word ou tu l'as copiée depuis Excel ?
Si comme tu l'a écrit, elle doit être en courrier dans Word, tous les caractères ont la même largeur, çà parait facile à ajuster.
Mais ta formule réserve peut être des surprises ♻️
 
Bonjour à tous. Je n'ai pas compris si la solution de Staple1600 répondait ou pas au besoin de TooFatBoy.

On peut exécuter les macros si après au chargement d'un document ,
- pour supprimer les césures : DisableHyphenation
- pour supprimer les sauts de paragraphes : removelinebreak

VB:
Sub DisableHyphenation()
    Dim para As Paragraph
    For Each para In ActiveDocument.Paragraphs
        para.Range.ParagraphFormat.Hyphenation = False
    Next para
End Sub
VB:
Pour selectionner un document
Sub SelectFullDocument() 
 Dim rngParagraphs As Range 
 Set rngParagraphs = ActiveDocument.Range( _ 
 Start:=ActiveDocument.Paragraphs(1).Range.Start, _ 
 End:=ActiveDocument.Paragraphs(ActiveDocument.Paragraphs.Count).Range.End) 
 rngParagraphs.Select 
End Sub


VB:
Sub removelinebreak()
    Dim rng As Range
    Dim para As paragraph
   
    Set rng = Selection.Range
   
    ' Loop through each paragraph in the range
    For Each para In rng.Paragraphs
        Debug.Print para.Range.text
        If Right(para.Range.text, 1) = vbCr Or Right(para.Range.text, 1) = vbLf Then
            para.Range.Collapse Direction:=wdCollapseEnd
            para.Range.MoveStart Unit: wdCharacter , Count:=-1
            para.Range.Delete
        End If
    Next para
End Sub
 
Je n'ai pas compris si la solution de Staple1600 répondait ou pas au besoin de TooFatBoy.
Merci. Je regarderais sa réponse tout à l'heure.


On peut exécuter les macros si après au chargement d'un document ,
- pour supprimer les césures : DisableHyphenation
- pour supprimer les sauts de paragraphes : removelinebreak
Intéressant !
Il faut que je trouve comment on saisie une macro et comment on la lance...
 
Merci. Je regarderais sa réponse tout à l'heure.



Intéressant !
Il faut que je trouve comment on saisie une macro et comment on la lance...
Et pour minimiser le nombre de pages à imprimer (cela a été passé un moment mon objectif d'économies environnementales), je liste les styles utilisés , je réduis les marges, la taille des polices tout en gardant les sauts de paragraphes, je diminue les interlignes qui toutefois augmente la lisibilité, .... Cependant, ces macros redéfinissent les styles Word dans le document et cela sans passer par un texte brut.
 
rebonjour
@scraper, j'ai testé votre code
VB:
Sub DisableHyphenation()
    Dim para As Paragraph
    For Each para In ActiveDocument.Paragraphs
        para.Range.ParagraphFormat.Hyphenation = False
    Next para
End Sub
il supprime les césures mais il annule la coupure des mots automatique
1739280596646.png

et repasse donc le mot scindé à la ligne.
Mais peut-être n'ai-je pas bien compris
AVANT DisableHyphenation
1739280717611.png


APRES
1739280746082.png
 
En fait il faudrait juste arriver à passer Word en mode éditeur de texte, mais je ne suis pas certain que ce soit faisable.
J'abandonne l'idée et vais continuer avec les sauts de ligne manuels. Merci à tous ceux qui ont essayé de trouver une solution. 👍


Je donne tout de même, comme demandé, ladite formule au cas où... 😉
Si ta formule n'est pas Secret Défense, donne-là pour voir ce qu'on peut en faire.
Code:
=SI(SOMMEPROD((($AS$31:$AS$244<=DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3))*1)*(($AT$31:$AT$244>=DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3))*1)*($AU$31:$AU$244=SI(ESTERREUR(RECHERCHEV(DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3);jours_ferie;2;FAUX));SI(ESTVIDE(INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));"";INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));""))*(SI(OU($AW$31:$AW$244="matin";$AW$31:$AW$244="après midi");$AW$31:$AW$244=$B5;1)))>0;INDEX($AS$31:$AV$244;SOMMEPROD((($AS$31:$AS$244<=DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3))*1)*(($AT$31:$AT$244>=DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3))*1)*($AU$31:$AU$244=SI(ESTERREUR(RECHERCHEV(DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3);jours_ferie;2;FAUX));SI(ESTVIDE(INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));"";INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));""))*LIGNE($AS$31:$AS$244))-30;4;1);SI(ESTERREUR(RECHERCHEV(DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3);jours_ferie;2;FAUX));SI(ESTVIDE(INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));"";INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));""))

Formule.png
 
En fait il faudrait juste arriver à passer Word en mode éditeur de texte, mais je ne suis pas certain que ce soit faisable.
J'abandonne l'idée et vais continuer avec les sauts de ligne manuels. Merci à tous ceux qui ont essayé de trouver une solution. 👍


Je donne tout de même, comme demandé, ladite formule au cas où... 😉

Code:
=SI(SOMMEPROD((($AS$31:$AS$244<=DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3))*1)*(($AT$31:$AT$244>=DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3))*1)*($AU$31:$AU$244=SI(ESTERREUR(RECHERCHEV(DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3);jours_ferie;2;FAUX));SI(ESTVIDE(INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));"";INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));""))*(SI(OU($AW$31:$AW$244="matin";$AW$31:$AW$244="après midi");$AW$31:$AW$244=$B5;1)))>0;INDEX($AS$31:$AV$244;SOMMEPROD((($AS$31:$AS$244<=DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3))*1)*(($AT$31:$AT$244>=DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3))*1)*($AU$31:$AU$244=SI(ESTERREUR(RECHERCHEV(DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3);jours_ferie;2;FAUX));SI(ESTVIDE(INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));"";INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));""))*LIGNE($AS$31:$AS$244))-30;4;1);SI(ESTERREUR(RECHERCHEV(DATE(Saisir_Année;RECHERCHEV($B$2;correspondance_mois;2;FAUX);C$3);jours_ferie;2;FAUX));SI(ESTVIDE(INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));"";INDEX(DECALER(SI(format_planning="numéros de planning";$C$248;$Q$248);LIGNE(INDEX($A:$A;EQUIV(SI(C$19="";"normal";C$19);$A:$A;0);1))-LIGNE($C$248)+1;SI(EST.IMPAIR(C$1);0;7);14;7);LIGNE($B5)-LIGNE($B$4);EQUIV(C$2;$C$245:$I$245;0);1));""))

Regarde la pièce jointe 1212862
une proposition :
Tu mets ton texte en Courrier New police 11 par exemple.
Tu exécutes cette macro qui va découper ton texte par ligne de NbParLigne caractères, NbParLigne que tu as renseigné dans l'inputBox.

Avec ta formule et 50 caractères par ligne
1739307017859.png



VB:
Sub CouperMots()
Dim NbCar As Integer
Dim NbDansLigne As Integer
Dim NbParLigne As String
    NbParLigne = InputBox("Nombre de caractères de chaque ligne")
    NbDansLigne = 0
    Selection.HomeKey wdStory
    For NbCar = 1 To ActiveDocument.Characters.Count
        NbDansLigne = NbDansLigne + 1
        If NbDansLigne = NbParLigne Then
            ActiveDocument.Characters(NbCar).InsertAfter Text:=vbLf
            NbDansLigne = 0
        End If
    Next NbCar
End Sub
 
Merci ! It's perfect ! (ou presque... lol)

Sur ta capture d'écran on voit un caractère de moins sur la première ligne, mais chez moi j'obtiens un caractère de plus sur la première ligne. 😉
j'avais oublié un espace avant d'insérer ta formule 🤒.
Avec l'ajout du saut de ligne, tu ne peux plus faire de recherche dans ta formule si le saut est à l'intérieur de la chaine recherchée 😡 :
Voici une nouvelle proposition qui permet de revenir en arrière car bizarrement, impossible par Recherche - Remplacer de supprimer les sauts de ligne ajoutés par la macro.
2 macros
- CouperLignesSelection les sauts de ligne ne sont que sur ta sélection (donc il faut sélectionner préalablement ta formule)
- RéinitCouperLignesSelection qu suppriment les sauts de ligne positionnés par CouperLignesSelection
Tu peux alors faire tes recherches puis relancer la macro CouperLignesSelection


VB:
Sub CouperLignesSelection()
Dim NbCar As Integer
Dim NbDansLigne As Integer
Dim NbParLigne As String
    NbParLigne = InputBox("Nombre de caractères de chaque ligne")
    NbDansLigne = 0
    For NbCar = 1 To Selection.Characters.Count
        NbDansLigne = NbDansLigne + 1
        If NbDansLigne = NbParLigne Then
            Selection.Characters(NbCar).InsertAfter Text:=vbNewLine
            NbDansLigne = 0
        End If
    Next NbCar
End Sub
Sub RéinitCouperLignesSelection()

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = vbCr
        .Replacement.Text = ""
        .Forward = True
        .Wrap = False
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
 
Dernière édition:
- 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

Discussions similaires

Réponses
12
Affichages
3 K
Compte Supprimé 979
C
C
Réponses
16
Affichages
4 K
@+Thierry
@
Retour