Conversion .txt en .xls [Résolu]

aducloux 33 Messages postés lundi 25 février 2008Date d'inscription 20 juin 2008 Dernière intervention - 25 févr. 2008 à 14:37 - Dernière réponse : cs_MPi 3869 Messages postés mardi 19 mars 2002Date d'inscription 25 mai 2018 Dernière intervention
- 26 févr. 2008 à 23:03
Salut a    tous voila mon probleme :
J utilise une macro qui doit ouvrir un fichier .txt en .xls jusque la tout va bien... Sauf que j aimerai configurer ma macro de telle sorte a ce que les ; les espaces les - et les _ soient consideres comme des séparateurs de colonnes. Il y a la possibilité manuellement lorsque l'on ouvre un fichier .txt via directement excel mais j aimerai pouvoir le programmer dans ma macro .

ma macro est :

Option Explicit


Sub SelectionEtOuvertureFichier()


Dim filetoopen As String




'fenetre de recherche du fichier excel
filetoopen = Application.GetOpenFilename("Fichier à ouvrir(*.txt), *.xls")


Workbooks.Open Filename:=filetoopen


End Sub

AIDEZ MOI !!!!

May the force be with the helpers
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
aducloux 33 Messages postés lundi 25 février 2008Date d'inscription 20 juin 2008 Dernière intervention - 26 févr. 2008 à 16:49
3
Merci
ok dsl je viens de lire les reponses a mon precedent probleme...ca marche enfin un grand merci pour ton aide !!
Desole de t avoir embete toute lapres midi !!!
un grand merci

Merci aducloux 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de aducloux
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 25 févr. 2008 à 15:15
0
Merci
une macro en VB.NET ?!!!

<li> Vous êtes ici : [infomsg.aspx Thèmes] / [infomsgf_VB-NET-VB-2005_40.aspx VB.NET et VB 2005] / [infomsgt_DIVERS_221.aspx Divers] / [infomsgt_GENERAL_223.aspx General] / conversion .txt en .xls</li>
2e topic, 2e fois que tu classes mal....
merci de respecter les rubriques pour poser tes questions

[infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA] /

rubrique modifiée!
Commenter la réponse de PCPT
aducloux 33 Messages postés lundi 25 février 2008Date d'inscription 20 juin 2008 Dernière intervention - 25 févr. 2008 à 15:41
0
Merci
oops desole !
Commenter la réponse de aducloux
cs_MPi 3869 Messages postés mardi 19 mars 2002Date d'inscription 25 mai 2018 Dernière intervention - 25 févr. 2008 à 23:56
0
Merci
Plutôt que d'ouvrir avec Workbooks.Open
utilise
Open FileToOpen For Binary As #1
        strTemp = Space$(LOF(1))
        Get #1, , strTemp
Close #1

Ton fichier est donc dans la variable strTemp

Il te suffit de faire des Replace pour modifier les différents caractères. Si tu veux que ton séparateur soit la tabulation, tu fais
strTemp = Replace(strTemp, "_", vbTab)  'remplace le _ par Tab
strTemp = Replace(strTemp, "-", vbTab)  'remplace le - par Tab
... etc....

Ensuite avec le DataObject, tu peux copier directement cette variable dans la feuille du classeur. Voir l'aide...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
aducloux 33 Messages postés lundi 25 février 2008Date d'inscription 20 juin 2008 Dernière intervention - 26 févr. 2008 à 11:42
0
Merci
voila la tete de mon programme ... Le pb c est que je n ai pas le droit (dans l'entreprise pour laquelle je travaille) de telecharger l'aide pouor DataObject donc en regardant les synatxes sur internet j ai essayé ca et ca ne marche pas....

Option Explicit


Dim strTemp As DataObject

Sub SelectionEtOuvertureFichier()


Dim filetoopen As String


 


'fenetre de recherche du fichier excel
filetoopen = Application.GetOpenFilename("Fichier à ouvrir(*.txt), *.xls")
Open filetoopen For Binary As #1
      strTemp = Space$(LOF(1))
        Get #1, , strTemp
        strTemp = Replace(strTemp, "_", vbTab)  'remplace le _ par Tab
strTemp = Replace(strTemp, "-", vbTab)  'remplace le - par Tab
Set strTemp = New DataObject


End Sub

En fait je recherche a ce que mon fichier excel que j ouvre qui est a la base un .txt se retrouve afficher dans un onglet du fichier excel ouvert et non dans un nouveau fichier excel; de maniere a ce que les tabulations espaces *... presents ds le .txt delimitent des cellules
Commenter la réponse de aducloux
cs_MPi 3869 Messages postés mardi 19 mars 2002Date d'inscription 25 mai 2018 Dernière intervention - 26 févr. 2008 à 12:21
0
Merci
Méthode d'utilisation du DataObject.
Il faut créer une référence à Microsoft Forms 2.0 Objects Library

        Set MyDataObject = New DataObject
        MyDataObject.SetText strTemp 'affecte la chaîne au DataObject
        MyDataObject.PutInClipboard  'place la chaîne dans le presse-papier
        Range("A1").PasteSpecial   'colle le contenu du presse-papier
        Close #1   'fermeture du fichier

       'Destruction de l'objet créé
        MyDataObject.Clear
        Set MyDataObject = Nothing

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
aducloux 33 Messages postés lundi 25 février 2008Date d'inscription 20 juin 2008 Dernière intervention - 26 févr. 2008 à 13:18
0
Merci
j en ai marre de vba....... ca fait 4 jours que je lis vba pour excel pour les nuls et j arrive a rien .... snif snif

.
Sub SelectionEtOuvertureFichier()


Dim filetoopen As String
Dim strTemp As String


 




'fenetre de recherche du fichier excel
filetoopen = Application.GetOpenFilename("Fichier à ouvrir(*.txt), *.xls")
Open filetoopen For Binary As #1
      strTemp = Space$(LOF(1))
       
        Get #1, , strTemp
        strTemp = Replace(strTemp, "_", vbTab)  'remplace le _ par Tab
        strTemp = Replace(strTemp, " ", vbTab)
        strTemp = Replace(strTemp, "-", vbTab)  'remplace le - par Tab
      
       Set   strTemp = New DataObject   ----> Erreur : objet requis pour strTemp !!!

        
        Set MyDataObject = New DataObject         
        MyDataObject.SetText strTemp 'affecte la chaîne au DataObject
        MyDataObject.PutInClipboard  'place la chaîne dans le presse-papier
        Range("A1").PasteSpecial   'colle le contenu du presse-papier
        Close #1   'fermeture du fichier


       'Destruction de l'objet créé
        MyDataObject.Clear
        Set MyDataObject = Nothing


 


End Sub

J ai activé la bibloiotheque ds preferences mais le programme ne tourne toujours pas..... Je m adresse a vous petits genis en vba aidez moi !!!!
Commenter la réponse de aducloux
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 févr. 2008 à 13:49
0
Merci
tu as déclaré strTemp comme STRING, tu ne peux pas ensuite lui attribuer un OBJET
Commenter la réponse de PCPT
aducloux 33 Messages postés lundi 25 février 2008Date d'inscription 20 juin 2008 Dernière intervention - 26 févr. 2008 à 14:05
0
Merci
oui ok mais qu est ce que je dois faire ? creer une aurte variable ?
Commenter la réponse de aducloux
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 févr. 2008 à 14:39
0
Merci
le prend pas mal c'est pas dit méchamment mais
MPi a écrit :

        Set MyDataObject = New DataObject
        MyDataObject.SetText strTemp 'affecte la chaîne au DataObject

il y a bien une nouvelle variable (bon OK elle est pas déclarée mais tu l'avais fait juste avant donc...)

cette nouvelle variable OBJET (de type DataObject plus précisément) est initialisée par le NEW
ensuite elle reçoit TA CHAINE par SA méthode SetText

comme ta CHAINE n'a pas de méthode, forcément c'est l'objet.... donc c'est bien 2 éléments distincts

au pire, essaye ;)
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
aducloux 33 Messages postés lundi 25 février 2008Date d'inscription 20 juin 2008 Dernière intervention - 26 févr. 2008 à 15:02
0
Merci
je ne le prends pas mal mais le novice que je suis ne comprends ou ca cloche....malgre toutes les modifs que je puisse imaginer y a rien ki change !!! je hais le vba !!

Sub SelectionEtOuvertureFichier()


Dim filetoopen As String
Dim strTemp As DataObject
Dim MyDataObject As DataObject


 


'fenetre de recherche du fichier excel
filetoopen = Application.GetOpenFilename("Fichier à ouvrir(*.txt), *.xls")
Open filetoopen For Binary As #1
      strTemp = Space$(LOF(1))
       
        Get #1, , strTemp l'erreur est ici maintenat

        strTemp = Replace(strTemp, "_", vbTab)  'remplace le _ par Tab
        strTemp = Replace(strTemp, " ", vbTab)
        strTemp = Replace(strTemp, "-", vbTab)  'remplace le - par Tab
        Set strTemp = New DataObject
       
        Set MyDataObject = New DataObject
       
        MyDataObject.SetText strTemp 'affecte la chaîne au DataObject
        MyDataObject.PutInClipboard  'place la chaîne dans le presse-papier
        Range("A1").PasteSpecial   'colle le contenu du presse-papier
        Close #1   'fermeture du fichier


       'Destruction de l'objet créé
        MyDataObject.Clear
        Set MyDataObject = Nothing


 


End Sub


 
Commenter la réponse de aducloux
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 févr. 2008 à 15:43
0
Merci
Dim strTemp As DataObject
Dim MyDataObject As DataObject



est-ce que l'un d'entre nous t'a dit de déclarer ta STRing TEMPoraire en autre chose qu'en String?

t'en fait pas, tout le monde déteste le VBA
vilain langage!!! tout est de sa faute
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
aducloux 33 Messages postés lundi 25 février 2008Date d'inscription 20 juin 2008 Dernière intervention - 26 févr. 2008 à 16:16
0
Merci
ok, je remets strTemp en String et la je retombe a mon pb initial que j ai posté plus tot ds l'apres midi a savoir :

j en ai marre de vba....... ca fait 4 jours que je lis vba pour excel pour les nuls et j arrive a rien .... snif snif

.
Sub SelectionEtOuvertureFichier()

Dim filetoopen As String
Dim strTemp As String

 

'fenetre de recherche du fichier excel
filetoopen = Application.GetOpenFilename("Fichier à ouvrir(*.txt), *.xls")
Open filetoopen For Binary As #1
      strTemp = Space$(LOF(1))
       
        Get #1, , strTemp
        strTemp = Replace(strTemp, "_", vbTab)  'remplace le _ par Tab
        strTemp = Replace(strTemp, " ", vbTab)
        strTemp = Replace(strTemp, "-", vbTab)  'remplace le - par Tab
      
       Set   strTemp = New DataObject   ----> Erreur : objet requis pour strTemp !!!

        
        Set MyDataObject = New DataObject         
        MyDataObject.SetText strTemp 'affecte la chaîne au DataObject
        MyDataObject.PutInClipboard  'place la chaîne dans le presse-papier
        Range("A1").PasteSpecial   'colle le contenu du presse-papier
        Close #1   'fermeture du fichier

       'Destruction de l'objet créé
        MyDataObject.Clear
        Set MyDataObject = Nothing

 

End Sub

J ai activé la bibloiotheque ds preferences mais le programme ne tourne toujours pas..... Je m adresse a vous petits genis en vba aidez moi !!!!
Commenter la réponse de aducloux
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 févr. 2008 à 16:34
0
Merci
OK, et je remets ma réponse d'avant disant QU'UNE VARIABLE CHAINE NE VA PAS RECEVOIR UN OBJET, C'EST POURQUOI IL DOIT Y AVOIR 2 VARIABLES

si tu ne lis que ce que tu postes, c'est normal que tu perdes patience

(à en lire mes majuscules on peut penser que c'est contagieux)

tu as tout sous les yeux mais veux absolument faire juste un copier/coller. dommage alors qu'il te suffirait de lire

bonne fin d'aprem
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
cs_MPi 3869 Messages postés mardi 19 mars 2002Date d'inscription 25 mai 2018 Dernière intervention - 26 févr. 2008 à 23:03
0
Merci
Merci PCPT d'avoir pris le relais... j'étais au boulot....
Aducloux, ne t'en fais pas. Les autres langages ne sont pas nécessairement plus simples... au contraire... Il s'agit de comprendre la logique qui se cache derrière tout ça. Et ce sont les essais qui nous y amènent.

Ça prend donc beaucoup de patience et de persévérance en plus de la recherche pour arriver à ses fins. Si tu fais F1 après avoir cliqué un mot-clé VBA, tu devrais arriver dans l'aide qui explique (plus ou moins bien) ce à quoi sert ce mot-clé et souvent avec exemple(s).

On est tous passés par là et on y passe encore
Lâche pas

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.