Transfert de données d'un fichier texte a excel

Résolu
xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009 - 25 avril 2008 à 17:46
xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009 - 28 avril 2008 à 17:59
Bonjour tout le monde!!


Je suis débutant en programmation VB Excel et je dois réaliser une procédure que je n'arrive pas a faire.


La situation :


Je possède deux fichiers. Un fichier texte avec des données séparrées par des points virgules ("val1;val2;val3....")et un fichier Excel possédant plusieurs feuilles.
Je voudrais ajouter les données du fichier texte a la fin d'une feuille du Workbook excel.




Voila ce que j'ai fait :


Sub fonction()


Dim Liste As ListBox
Dim stRep
Dim oFSO, oF
Dim g
Dim p() As String
Dim appExcel As Excel.Application
Dim wbExcel As Excel.Workbook
Dim wsExcel As Excel.Worksheet




                Set appExcel = CreateObject("Excel.Application")
                Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\Moi\Bureau\fichier_txt\Monfichier.xls")
                Set wsExcel = wbExcel.Worksheets(1)
               
               
Set oFSO = CreateObject("Scripting.FileSystemObject")
stRep = "C:\Documents and Settings\Moi\Bureau\fichier_txt\\Monfichier.txt"


               


Set f = oFSO.OpenTextFile(stRep, 1)
            i = 0
            While Not f.AtEndOfStream
                g = f.ReadLine
                p() = Split(g, ";")
                r = 1
               
                For Each t In p()
                wsExcel.Cells(i, r) = t
                r = r + 1
                Next
                r = 1
                wbExcel.Close
                appExcel.Quit
  i = i +1
            Wend
           
End sub




J'ai un bug :


'erreur d'execution 1004. 
Erreur définie par l'application ou par l'objet.'      


concernant le


"wsExcel.Cells(i,r) = t"




Si quelqu'un connait la solution a mon probleme et pouvais m'aider ca serait vraiment sympas !
En vous remerciant d'avance.


-xaeris-




 

10 réponses

zavier666 Messages postés 266 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 30 avril 2009 1
25 avril 2008 à 18:06
Perso, je crois avoir déjà connu ce genre de prob,

alors je procède toujours ainsi:

ActiveSheet.Range("A1").activate
ActiveCell.Offset(i,r).Select
Selection.Value = t

, je crois que cela marche mieux......

--------------------------------------------------
Toujours + de VB et d'API => APi @ le Loupe
http://apialaloupe.free.fr
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 22
28 avril 2008 à 10:19
Si tu veux pouvoir écrire les données à la suite, tu ne peux pas mettre une valeur en dur pour i

Essaie plutôt
i = Cells(Rows.Count, "A").End(xlUp).Row + 1
qui te retournera la première ligne vide de la feuille

Et je te conseillerais de donner des noms de variables plus "parlants".
i deviendrait Ligne
r deviendrait Colonne
...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 22
28 avril 2008 à 10:58
Set wsExcel = wbExcel.Worksheets("SonNom")
ou
Set wsExcel = wbExcel.Worksheets(VariableString)
ou
Set wsExcel = wbExcel.Worksheets("Feuil" & numero)

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 22
25 avril 2008 à 23:41
Tu initialises i à 0
i = 0La ligne 0 n'existe pas... Soit tu initialises i 1, soit tu mets i i + 1 au début plutôt qu'à la fin de ta boucle.

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
xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009
27 avril 2008 à 17:41
Salut !!
désolé pour le temps de reponse, je ne comptais pas avoir de reponse aussi rapide merci a vous!!!
Mpi , si je met a i = 1, etrangement cela mécreit sur la deuxieme ligne donc g laissé a zéro.

zavier666 ta formule marche trés bien si je n'ai qu'une ligne dans mon fichier texte.
Peux tu m'expliquer la signification de activeSheet.Range("a1").activate et en particulier le Range("a1") ?

merci d'avance !
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 22
27 avril 2008 à 17:52
For t = 0 to UBound(p)
    wsExcel.Cells(i, r) = p(t)
...
Next

Mais le i ne doit tout de même pas être à 0... sinon je n'y comprends rien...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009
28 avril 2008 à 10:05
Rebonjour !!
j'espere que vous avez bien dormi, en ce qui me cncerne la nuit ne m'a pas porté conseil.

j'arrive a ajouter les ligne de tous mes fichiers sauf que elles ne s'ajoute pas a la suite l'une de l'autre mais elle s'écrasent :)

je continue a me demander si le Activesheet.range("a1") ne signifie pas  : " ouvre moi le fichier et positionne toi sur la case a1"
0
xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009
28 avril 2008 à 10:07
de plus ceci explquerai pourquoi en commencant par i=0 ca marche non ?
0
xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009
28 avril 2008 à 10:51
héhé c encore moi !

bon la ca commence a marcher, mauis g un soucis ca m'ouvre toujours la meme feuille quelque soit l'index que je mette dans :

Set wsExcel = wbExcel.Worksheets(1)

comment puis je faire pour acceder a la feuille par son nom ( nom de l'onglet en bas )
0
xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009
28 avril 2008 à 17:59
Super ca commence a bien marcher !!

je vous remercie tous les deux enormement :)

c'était trés gentil a vous de m'aider!

je paufine le code et je le poste sous peu :)

encore merci !!
0
Rejoignez-nous