Pourquoi les sauts de ligne Excel ne sont-ils pas transférés dans le Bloc-notes?

31

Lorsque vous copiez une cellule avec des sauts de ligne dans Excel et la collez dans le Bloc-notes, le texte est collé sur une ligne. Pourquoi donc?

Kyle Dixon
la source
2
Bonjour bienvenue au superutilisateur! Essayez de fournir autant de détails que possible afin d'obtenir une réponse plus détaillée à votre question. Rendez-vous sur pour poser votre propre page de questions et obtenir des conseils pratiques pour vous aider à poser les meilleures questions. J'ai testé cela avec Excel 2013 et Notepad ++ et cela fonctionne bien, mais j'ai pu répliquer le problème décrit avec l'application Notepad standard fournie avec Windows OS et qui ne fonctionne pas.
angelofdev
Notez que le presse-papiers peut prendre en charge plusieurs versions du même extrait (texte brut jusqu'à de nombreuses métadonnées sur son origine). C'est au programme récepteur de déterminer celui qu'il préfère. Le bloc-notes n'est pas très intelligent.
Thorbjørn Ravn Andersen

Réponses:

27

C'est dû à la nature du fonctionnement des feuilles de calcul. Imaginez que vous ayez une feuille de calcul remplie de données. Si vous deviez copier une ligne entière de données, puis la coller dans le Bloc-notes, toutes ces données doivent être sur une seule ligne. En effet, si vous copiez une autre ligne de données et la collez, la ligne de données suivante doit être sur une seule ligne. S'il y avait des sauts de ligne dans la première ligne que vous avez copiée, les données ne seraient plus sur deux lignes linéaires. Si vous deviez copier les données du Bloc-notes et les remettre dans la feuille de calcul, elles ne seraient pas collées correctement.

Keltari
la source
6
Cette réponse est fausse. Essayez d'enregistrer votre bloc-notes après avoir collé le texte avec un saut de ligne. Ouvrez ensuite le fichier avec Wordpad à la place. Juste un bug dans les anciennes versions du bloc-notes . Vous devez marquer l' autre réponse comme correcte.
Zak
@Zak vous vous trompez. C'est ainsi que le collage à partir d'Excel fonctionne dans n'importe quel éditeur de texte simple. L'article que vous avez lié n'a rien à voir avec un bogue, mais concerne le Bloc-notes ajoutant la prise en charge du retour chariot et des sauts de ligne Unix.
Keltari
4
@Keltari En fait non, @Zak est correct. Pour une raison quelconque, lorsque vous ajoutez un saut de ligne dans Excel (en utilisant Alt+Enter), seul 0xA est entré, pas le 0xD 0xA complet, ce qui signifie LF, au lieu de CR/LF. Excel interprète cela et affiche le saut de ligne, contrairement au bloc-notes simple, car il attend CR/LF. C'est une différence dans les formats détectés plus qu'un bug, mais c'est quand même la bonne raison.
ChatterOne
4
@Keltari Il n'y a rien à discuter. Utilisez un éditeur binaire et voyez ce qui est écrit dans le fichier.
ChatterOne
1
@Keltari Honnêtement, ces votes positifs sont principalement l'effet d'être la réponse acceptée sur un HNQ. Vous pouvez voir combien de personnes supplémentaires sont d'accord avec les autres réponses.
kapex
45

Cela est vrai lorsque vous utilisez le Bloc-notes, qui est l'éditeur de texte de base de Microsoft qui est déjà préinstallé dans Windows.

Cependant, vous pouvez utiliser un éditeur de texte plus avancé tel que PSPad ou Notepad ++ (à la fois excellent et gratuit), et vous obtenez vos sauts de ligne transférés.

Excel :

Exceller

Cellule marquée, puis copier-coller dans le Bloc - notes ++ :

Bloc-notes ++

Même contenu collé dans le Bloc-notes (l'éditeur par défaut de Windows):

WindowsNotpad

Notez que dans les deux cas, des guillemets ont été ajoutés automatiquement!

Les meilleurs éditeurs vous donnent également la possibilité d'afficher les caractères de contrôle tels que LineFeed (LF) et CarriageReturn (CR). Dans Notepad ++, cela ressemble à ceci:

Notepad ++ withcontrochars

En conclusion: choisissez votre outil en fonction de vos besoins. Si vous avez besoin que les limites des cellules soient préservées dans l'éditeur, mais que le contenu des cellules puisse être légèrement modifié, utilisez le Bloc-notes. Si vous avez besoin que le contenu des cellules reste intact, y compris les sauts de ligne, et que la reproductibilité 1: 1 des limites des cellules ne soit pas cruciale, utilisez un autre éditeur.

Traitement en masse de ces données

Si vous avez besoin à la fois de bordures de cellule et de contenu de cellule préservé 1: 1, vous pouvez rencontrer des problèmes.

Il pourrait y avoir des solutions plus intelligentes, mais ce que j'ai fait dans de tels cas, c'était d'écrire un petit programme dans n'importe quel langage (VBA, Python, ou ce que vous aimez le plus) qui lit le contenu et ajoute des chaînes d'espace réservé pour les sauts de ligne (quelque chose d'aussi simple que "### Linebreak ###", qui peut ensuite être remplacé par des caractères de contrôle CR et LF. Bien sûr, cela est fastidieux et n'a de sens que si vous devez traiter de grandes quantités de données.

Vous pouvez également rencontrer des problèmes avec les guillemets ajoutés. Celles-ci peuvent à première vue être utiles pour préserver les limites des cellules même lorsque des sauts de ligne sont inclus. Cependant, votre cellule peut avoir des guillemets une partie du contenu d'origine, puis vous rencontrez de nouveaux problèmes. Il existe donc diverses solutions à cela, mais cela nécessite votre attention.

Christian Geiselmann
la source
12
Notepad ++ montrant CRLFqu'il y en a en fait parce qu'il voit le LFet suppose qu'il est censé être complet CRLFet le convertit.
3D1T0R
@ 3D1T0R Je soupçonne que c'est parce qu'un retour chariot sans saut de ligne souffrirait de la lisibilité. Ce serait délicieusement efficace en termes d'espace.
Stian Yttervik
4
@ 3D1T0R: cela dépend du paramètre de fin de ligne Notepad ++. Il est possible de "coller binaire" pour conserver la mise en forme Excel d'origine, qui est en effet un LF uniquement.
Thomas Weller
1
Cela devrait être la réponse acceptée
ChatterOne
1
Notez que le Bloc-notes sous Windows 10 version 1809 a la possibilité d'utiliser LF comme saut de ligne (au lieu de CR-LF). Si vous utilisez cela, il n'y a pas de conversion mais les sauts de ligne sont toujours affichés correctement.
Erik A
34

La réponse de Keltari donne le raisonnement logique, tandis que cette réponse se concentre sur la différence technique.

Il existe trois formes différentes de sauts de ligne utilisés dans l'informatique:

  • Les fins de ligne Unix et macOS 10.0+ utilisent un caractère de saut de ligne ( LF)
  • Les fins de ligne Macintosh (avant macOS 10.0) utilisent un caractère de retour chariot ( CR)
  • Les fins de ligne Windows utilisent une combinaison de caractères de retour chariot et de saut de ligne ( CRLF)

Ceci est un maintien de la façon dont les rédacteurs de texte fonctionnent.

Excel utilise une combinaison de ces sauts de ligne pour représenter les cellules avec plusieurs lignes:

  • Les cellules sont séparées par le Tabcaractère.
  • Les lignes sont séparées par les CRLFcaractères.
  • Les cellules multilignes séparent chaque ligne en utilisant uniquement le LFcaractère.

Cela devient évident lorsque vous enregistrez votre classeur en tant que .txtfichier et l'ouvrez avec un éditeur de texte qui prend en charge l'affichage de ces caractères.

Exceller

Bloc-notes ++

Le bloc-notes ne traite CRLFque les sauts de ligne et ignore LFou CRpar eux-mêmes. Ils sont toujours dans le document, mais ne sont en aucun cas visibles.

Remarque: Vous ne le verrez pas lorsque vous collerez d'avant en arrière, car Notepad ++ ajuste automatiquement les fins de ligne pour vous, contrairement au Bloc-notes normal.

Worthwelle
la source
3
Vous devez également mentionner que le LF est toujours présent lorsqu'il est collé dans le bloc-notes, le bloc-notes ne l'affiche tout simplement pas de manière visible. (Il est effectivement identique à un espace de largeur nulle.) C'est pourquoi la copie des données collées hors du bloc-notes dans Excel inclut ces sauts de ligne (bien qu'Excel ne leur redimensionne pas automatiquement les lignes).
3D1T0R
3
Notez que c'est uniquement ainsi qu'Excel exporte des classeurs vers des fichiers texte. Pour les fichiers xlsx, les sauts de ligne dans une chaîne sont en fait représentés par CRLF.
kapex
3
Fait intéressant, il est tout à fait possible de construire une cellule qui contient "vraiment" un CRLF - ="A"&CHAR(13)&CHAR(10)&"B". Les sauts de ligne produits par les formules ne sont pas visibles dans Excel, mais fonctionnent correctement s'ils sont copiés puis collés via des "valeurs de collage". Une valeur collée en tapant manuellement "A<CRLF>B"dans le bloc-notes et en copiant conservera également le CRLF.
Random832
3
@ 3D1T0R a raison. Essayez de copier une seule cellule Excel avec le texte «a \ nb» (où «\ n» représente une nouvelle ligne) dans le bloc-notes. Vous verrez "ab" dans le Bloc-notes (avec les guillemets). Mais si vous placez le curseur devant "a" et appuyez trois fois sur la touche Flèche droite de votre clavier, vous constaterez qu'il y a un caractère invisible de largeur nulle entre "a" et "b"! En effet, vous pouvez également utiliser la touche Maj pour la sélectionner et la copier dans le presse-papiers!
Andreas Rejbrand
2
@AndreasRejbrand: J'ai utilisé cette technique plusieurs fois pour rendre les fichiers texte avec LFEOL lisibles rapidement. Trouver par exemple un LFcaractère, sélectionnez - le, Ctrl+ C, Ctrl+ Home, Ctrl+ F, Ctrl+ V, Enter, Esc, Enter. Puis à plusieurs reprises F3, Enterjusqu'à la fin. [Modifier: <kbd> ne fonctionne pas dans les commentaires?]
3D1T0R
1

Excel utilise LF pour désigner de nouvelles lignes dans une cellule. Le Bloc-notes ne considère pas qu'il s'agit d'une nouvelle ligne car Windows utilise généralement CRLF pour les nouvelles lignes.

Notepad ++ est plus intelligent que le bloc-notes relativement simple et interprète donc LF comme une nouvelle ligne également.

Benjamin Goodacre
la source
Je n'utilise pas Notepad ++, mais par curiosité: que se passe-t-il si vous avez un tableau Excel composé d'au moins deux lignes contenant une cellule multiligne et copiez-collez cela dans Notepad ++?
Andreas Rejbrand
1
@AndreasRejbrand Les cellules multilignes seront encapsulées "et Notepad ++ normalisera toutes les fins de ligne pour correspondre. Voir ici . Si vous enregistrez à la place sous .txtet ouvrez dans Notepad ++, les cellules multilignes n'en auront LFque. Voir ici .
Worthwelle