aducloux
Messages postés33Date d'inscriptionlundi 25 février 2008StatutMembreDernière intervention20 juin 2008
-
25 févr. 2008 à 14:37
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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")
aducloux
Messages postés33Date d'inscriptionlundi 25 février 2008StatutMembreDernière intervention20 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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
aducloux
Messages postés33Date d'inscriptionlundi 25 février 2008StatutMembreDernière intervention20 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
aducloux
Messages postés33Date d'inscriptionlundi 25 février 2008StatutMembreDernière intervention20 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 !!!!
aducloux
Messages postés33Date d'inscriptionlundi 25 février 2008StatutMembreDernière intervention20 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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
aducloux
Messages postés33Date d'inscriptionlundi 25 février 2008StatutMembreDernière intervention20 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 !!!!
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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