Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion sas
  • Date de début Date de début

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 !

S

sas

Guest
Bonjour,

je dois générer une macro pour importer des docs textes sous excel mais ça butte toujours au même endroit.
Je lance l'enregistreur de macro sous excel, j'ouvre le fichier txt ( ouvrir fichier txt -> boîte de dialogue 1, je coche "délimié" -> boîte de dialogue 2 je coche "séparateur en ";"" -> je clique sur terminé) et alors, le message suivant apparaît "trop de caractère de discontinuité de ligne" et stope l'enregistreur macro.

J'ai essayé la même opération en cliquant dans la boîte de dialogue 1 de l'ouverture txt "largeur fixe", là ça marche, les infos sont transférées sous excel mais le problème et qu'elles ne sont pas générées une par case mais plusieurs infos par case.

Comment remédier à ce problème. Je suis bloquée, sachant que je souhaite qu'à chaque fichier txt corresponde une ligne sous excel.
D'avance merci.
Sarah
 
Re : pb macro

Les réponses :

- oui, je suis limité à 256
- je ne suis pas certaine d'avoir bien compris, pourriez-vous préciser. Je pense que je vais mettre les infos dans un fichier txt et après les importer sous excel. Mais je ne suis pas sûre de bien répondre à votre question.

Sarah
 
Re : pb macro

Re,
Je parlais du résultat.

Bon, je mets tout ça ligne 10, puis 11......

v'là l'code, avec des petites astuces....

Code:
Sub Macro1()
' Macro1 Macro
' Macro enregistrée le 5/03/2008 par Gruick
Dim élément As String
chaîne = Cells(1, 1): élément = "a"
Do Until chaîne = ""
i = i + 1
pévé = InStr(1, chaîne, ";", 1)
élément = Left(chaîne, pévé - 1) ': MsgBox élément
If IsEmpty(élément) Then Exit Sub
chaîne = Right(chaîne, Len(chaîne) - pévé)
If i < 257 Then
    Cells(10, i) = élément
Else
    Cells(11, i Mod 256) = élément
End If
Loop
End Sub

Qu'en penses-tu ?

A toi, moi je vais manger....

Gruick
 
Re : pb macro

Bonjour

Une autre approche
Avec un éditeur de texte remplacer les ";" par une marque de fin de paragraphe (WORD) ou un retour chariot (CR) et importer les données dans une colonne et ensuite utiliser une macro pour faire la transposition.

JP
 
Re : pb macro

Re bonjour,
j'ai un peu modifié la macro de Gruick pour que cela fonctionne
Bon en fait il y a peut-être des problèmes dans le code. A voir
Code:
Sub Macro1()
' Macro1 Macro
' Macro enregistrée le 5/03/2008 par Gruick modif MJ
Dim élément As String
Dim chaîne As String
Dim pévé As single
chaîne = Cells(1, 1) ': élément = "a"
Do Until chaîne = ""
i = i + 1
pévé = InStr(1, chaîne, ";", 1)
élément = Left(chaîne, pévé - 1): MsgBox élément
If IsEmpty(élément) Then Exit Sub
chaîne = Right(chaîne, Len(chaîne) - pévé)
If i < 257 Then
    Cells(10, i) = élément
Else
    Cells(11, i Mod 256) = élément
End If
Loop
End Sub
 
Dernière édition:
Re : pb macro

re,
Puisque après essai sur route, mon code fonctionnait je l'ai envoyé. C'est Sarah qui voit.
Peux-tu me dire ce qui clochait, cher MJ ?
l'instruction élément ="a" est inutile, une scorie de mon premier test que j'ai oublié d'enlever. Les dim ?
Don't let me be misunderstood, la la la la la la.....
Gruick

Edit :
Effectivement, la deuxième chaîne n'a pas été testée.
Donc, deuxième version plus subtile, et plus courte
Code:
Sub Macro1()
' Macro1 Macro
' Macro enregistrée le 5/03/2008 par Gruick
Dim élément As String, chaîne As String, pévé As Single
chaîne = Cells(1, 1)
Do Until chaîne = ""
i = i + 1
pévé = InStr(1, chaîne, ";", 1)
If pévé <> 0 Then
élément = Left(chaîne, pévé - 1)
chaîne = Right(chaîne, Len(chaîne) - pévé)
Else
élément = chaîne: chaîne = ""
End If
If i Mod 257 = 0 Then i = 258
Cells(Int(i / 257) + 10, i Mod 257) = élément
Loop
MsgBox "fini"
End Sub

Vous avez de la veine, rien d'intéressant à la télé...

Mon unique neurône est fatigué, à demain pour les avis.

Gruick
 
Dernière édition:
Re : pb macro

Re-bonjour,

avant l'essai, une petite question : cette macro je la fais après avoir fait la procèdure pour "enlevre les ; sous le fichier TXT" et avoir enregisté le tout dans un autre fichier TXT, n'est ce pas? Merci à vous de m'éclairer.

A bientôt
Sarah
 
Re : pb macro

Bonjour Sarah,
Non, puisque c'est justement le point-virgule qui est l'élément de séparation.
J'ai fait cette macro en fonction du fichier que tu as donné, avec ses points-virgule. J'ai testé avec tes deux exemples (j'ai rajouté le mot "gruick" sur le deuxième pour savoir où ça finissait), tout marche bien.
Tes séries initiales sont mises aussi en lignes 30 et 31, juste pour les avoir sous la main. Tu peux les effacer. Seule la cellule A1 est indispensable.
Je t'envoies le fichier.
Tiens moi au courant, comme disait Claude François....
Gruick
 

Pièces jointes

Re : pb macro

Re bonjour à tous

Gruick, je préfère cette dernière version.

Il y en a d'autres que j'ai ajouté (dont la tienne) dans ce classeur.

Allez, il y en a de plus rapides que d'autres!

Il suffit de dézipper les fichiers dans un dossier sous C:\TXT

Remercions aussi MichelXLD pour la partie lire dans un fichier TXT.
 

Pièces jointes

Re : pb macro

Re-re-Bonjour,

merci pour vos aides........ J'ai essayé les exemples que vous m'avez envoyé pour me familiariser avec la manip. A priori ça devrait être Ok. Je teste ça demain matin et vous tiens au courrant.

En tout les cas, c'est vraiment très sympath à vous d'avoir fait tout ça.

sarah
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
586
Réponses
3
Affichages
645
Réponses
15
Affichages
2 K
C
Réponses
1
Affichages
961
Réponses
7
Affichages
1 K
C
Réponses
2
Affichages
1 K
Cotriana
C
Réponses
14
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…