Conversion .txt en .xls

Résolu
aducloux Messages postés 33 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 20 juin 2008 - 25 févr. 2008 à 14:37
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 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

15 réponses

aducloux Messages postés 33 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 20 juin 2008
26 févr. 2008 à 16:49
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
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 févr. 2008 à 15:15
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!
0
aducloux Messages postés 33 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 20 juin 2008
25 févr. 2008 à 15:41
oops desole !
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 févr. 2008 à 23:56
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
0

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

Posez votre question
aducloux Messages postés 33 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 20 juin 2008
26 févr. 2008 à 11:42
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
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 févr. 2008 à 12:21
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
0
aducloux Messages postés 33 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 20 juin 2008
26 févr. 2008 à 13:18
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 !!!!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 févr. 2008 à 13:49
tu as déclaré strTemp comme STRING, tu ne peux pas ensuite lui attribuer un OBJET
0
aducloux Messages postés 33 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 20 juin 2008
26 févr. 2008 à 14:05
oui ok mais qu est ce que je dois faire ? creer une aurte variable ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 févr. 2008 à 14:39
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
0
aducloux Messages postés 33 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 20 juin 2008
26 févr. 2008 à 15:02
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


 
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 févr. 2008 à 15:43
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
0
aducloux Messages postés 33 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 20 juin 2008
26 févr. 2008 à 16:16
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 !!!!
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 févr. 2008 à 16:34
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
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 févr. 2008 à 23:03
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
0
Rejoignez-nous