Macro Excel retour à la ligne

Fermé
Slarche - 28 juil. 2009 à 09:58
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 31 juil. 2009 à 19:24
Bonjour,

Voici mon problème :

Je récupère un texte sur un site, je copie le coller sur wordpad, de celui-ci je le copie coller sur Excel. Le problème est que lorsque je copie le contenue du texte sur Excel j'ai des retours à la ligne et des lignes vide. Avant je me débrouiller pour régler le problème directement sur wordpad en enlevant tout les retour à la ligne inutile mais faire sa pour un texte de plus de 1000 lignes sa devient long ^^.

1) Pour régler ce problème j'avais penser faire une macro Excel qui ferait des retours à la ligne précédente en partant par le bas du texte.
exemple :

Bonjour
kikoo
hello

donc ici 1er retour à la ligne.

Bonjour
kikoohello

puis 2eme retour à la ligne

Bonjourkikoohello

Bon déjà ici ce pose le problème de l'espace après chaque mot.
Donc mon but serait d'avoir un texte sur une seul et même ligne en ayant aucun mots coller l’un à l’autre.

2) Ensuite je passe à la 2eme étape qui est de faire des retour à la ligne à un certain mot en locurence ici j’ai deux mots bien définit. Chacune de mes ligne ce finit toujours par 2 mots différents : « |interne| » ou « |externe| ».

D'après moi ceci devrait pouvoir régler mes problème mais étant un débutant en macro Excel je ne suis pas sur que sa soir réalisable ou même que sa soit la meilleur méthode pour résoudre mon problème. Si cela est envisageable pouvez-vous me fournir une macro pour régler mon problème s’il vous plaît. Merci d’avance pour le temps que vous allez me consacrer.

Ps : Désolé pour les fautes d’orthographe sûrement nombreuses. :’(

Cordialement,
Slarche
A voir également:

8 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
29 juil. 2009 à 00:03
Bonsoir,

Sélectionne ta cellule destination et colle ton texte dans la zone d'édition des formules (pas besoin de passer par wordpad).
Déjà tout ton texte sera dans la même cellule, avec les même retour à la ligne que ton copier.
Si tu dois toujours éliminer les retours à la ligne, avec ton texte en A1, en B1 tu mets :
=SUBSTITUE(A1;CAR(10);" ")
Pour remettre un retour à la ligne :
=SUBSTITUE(A1;" |interne| ";" |interne| "&CAR(10))
à recopier vers le bas si besoin

Tu peux imbriquer les 3 formules pour n'en faire qu'une.
et tu finis par un copier/collage spécial valeur sur la colonne B.

eric
2
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
29 juil. 2009 à 16:59
Re,

lors des retours à la ligne un espace ce créer avant le 1er mot de chaque ligne. Y a t-il un moyen d’éviter cela
Je pense qu'il ne se crée pas mais qu'il est existant. Ta chaine de fin de ligne doit être "|Interne| " (avec un espace) et non "|Interne|"

La compil' :
=SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;CAR(10);" ");"|Interne| ";"|Interne| "&CAR(10));"|Externe| ";"|Externe| "&CAR(10))

eric
1
Le Pingou Messages postés 12227 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 janvier 2025 1 454
28 juil. 2009 à 23:16
Bonjour,
Mettre votre exemple Excel sur https://www.cjoint.com/ et poster le lien.
L'exemple comprendra, la copie du contenue du texte sur Excel tel qu’il se présente et en-dessous se que vous voulez obtenir.

0
Bonjour,

Merci eric pour tas réponse qui m’a déjà beaucoup aidé.

Il me reste quand même toujours un petit problème.
Tes deux commandes marche bien la 1er "=SUBSTITUE(A1;CAR(10);" ")" mes tout sur une seul ligne, la 2éme : "=SUBSTITUE(A1;"|Interne|";"|Interne|"&CAR(10))" fait bien un retour à la ligne après le mot |Interne|. Voila ce qu'il me manque : chacune de mes ligne termine par deux mots "|Interne|" et "|Externe|" pour Interne le problème est résolu mais je voudrai pouvoir faire la même opération pour externe mais sur la même ligne de commande. Donc voila mon problème serait d'additionner toutes les commandes que tu vient de me donner:
=SUBSTITUE(A1;CAR(10);" "),
=SUBSTITUE(A1;"|Interne|";"|Interne|"&CAR(10)) et
=SUBSTITUE(A1;"|Externe|";"|Externe|"&CAR(10)) sur une seul ligne.

Sinon un problème un peut plus superficiel : lors des retours à la ligne un espace ce créer avant le 1er mot de chaque ligne. Y a t-il un moyen d’éviter cela.
Une dernière question lors du copier coller sur Excel je suis obliger de diviser mon texte en deux car la cellule n'accepte pas de prendre le texte en entier. Peut-on changer cela ?

J'envoie un petit exemple de ce que je peut faire en ce moment mais en fesant un grand nombres d'étapes.
https://www.cjoint.com/?hDlupZe2fD

Sinon merci de ton aide.

Cordialement,
Slarche
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Encore un grand merci ^^

Désolé de t’embêté encore mais de nouveaux problèmes ce présente encore devant moi :'(.
J'essaye de faire une macro avec toute les commande que tu vient de me donner.
Donc mon problème et de ne pas connaître la commande pour copier le contenue d’une cellule. Enfin je pense que pour le moment ces le seul problème mais si possible peut tu vérifier mon code vite fait pour savoir si il n’y à pas trop d’erreur.
Merci d’avance.

Sub test()

Range("A2").Select

ActiveCell.FormulaR1C1 = _
"=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(R[-1]C,CHAR(10),"" ""),""|Interne| "",""|Interne| ""&CHAR(10)),""|Externe| "",""|Externe| ""&CHAR(10)),""|Origine| "",""|Origine| ""&CHAR(10))"

Range("A2").Select
Selection.Copy // ici je copie la cellule A2

Range("A3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False // ici je fait un collage spécial / valeur

Bon bas la j'ai mon problème je voudrais copier tout le contenue de ma cellule A3 et le coller entre A1 et R6000.

Selection.Cut Destination:=Range("A1:R6000")

End Sub

Merci de m’accorder encore un peut de temps :).

Cordialement,
Slarche
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
30 juil. 2009 à 16:20
Re,

Heuuu, tu dois vraiment copier exactement la même chose sur 18 colonnes et 6000 lignes ???
De toute façon je ne suis pas sûr qu'une macro soit vraiment nécessaire pour faire ça, c'est rapide à faire au clavier...
Et puis si c'est pour compléter une macro tu aurais dû le dire tout de suite, c'était plus simple à faire directement en vba avec ses fonctions de traitement de chaine.
Sinon essaie avec :
[A1:R6000].Value = [B1].Value

Edit : je viens seulement de voir macro dans le titre
0
Salut,

Euu, Mon problème enfaîte est d'avoir un texte en forme de tableau dans une seul cellule. Je voudrais que ce tableau soit copier dans une grande plage de cellule pour éviter des pertes de ligne ou de colonne. Mon tableau varie souvent de 1000 à 2000 ligne d'ou mon choix de sélectionner un grand nombre de cellule.
Tas commande pour copier la cellule marche mais cela me pose problème car lorsque je colle sur un grand nombre de cellule je ne retrouve pas un tableau mais 50 fois le même texte dans chaque cellule or je veux copier le contenue de ma cellule pour ensuite le coller sur une grande surface de cellule pour en faire un tableau.
Donc enfaîte il ne me manque que la commande pour copier tout le texte à l'intérieur de mas cellule.

Cordialement,
Slarche
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
31 juil. 2009 à 19:24
Re,

Mon problème enfaîte est d'avoir un texte en forme de tableau dans une seul cellule
?????
Et tu attends 3 jours pour le dire ou alors je comprend mal ta phrase ?
Quand on colle plusieurs lignes dans excel elles se repartissent sur plusieurs ligne, pas dans une seule cellule.

Et quand tu demandes je voudrais copier tout le contenue de ma cellule A3 et le coller entre A1 et R6000 c'est exactement ce que fait la réponse que j'ai fourni bien qu'étonné de ta demande
Tu expliques vraiment très mal ton besoin...
J'ai répondu à tes 1eres questions et j'arrete là pour ma part

eric
0