Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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.
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)
-...
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é.
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 ?
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... 🙁
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
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
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.
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
et repasse donc le mot scindé à la ligne.
Mais peut-être n'ai-je pas bien compris
AVANT DisableHyphenation
Merci @scraper mais les macros ne semblent pas convenir, et j'ai une erreur de compilation sur la troisième (Utilisation incorrecte de la propriété sur wdCharacter).
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(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));""))
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));""))
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
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
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
- 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