Transfert de donnée d'un fichier à l'autre

Résolu
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011 - 15 mai 2008 à 10:38
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011 - 15 mai 2008 à 12:20
Bonjour, j'essaie de recuperer une plage d'un fichier .xls et la mettre dans un autre (essai.xls)
Ce que je comprends pas c'est qu'en mode pas à pas, quand je selectionne les 2 fichiers manuelement pour  copier/coller, là ca marche nickel. Mais quand j'execute mon progr directement. ca marche pas!!!

Je procede de la facon suivante:
Sub essai()


Dim xApp As Object
Dim wBook1 As Object
Dim wBook2 As Object
Dim wSheet1 As Object
Dim wSheet2 As Object



'créer les objets excel + classeur
Set xApp = CreateObject("Excel.Application")


Set wBook1 = xApp.Workbooks.Open("C:\Documents and Settings\youmane\Bureau\mon_fichier.xls")
Set wSheet1 = wBook1.Worksheets("mafeuille")


wSheet1.Select
Range("A1:B1890").Copy  


wBook1.Close False


Set wBook2 = xApp.Workbooks.Open("C:\Documents and Settings\youmane\Bureau\essai.xls")
Set wSheet2 = wBook2.Worksheets("essai")


wSheet2.Select
Range("A1").Select    
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

'wBook2.Close False
'xApp.Quit

End Sub

Merci pour votre réponse




http://www.vbfrance.com/infomsg_RECUPERER-PLAGE-FICHIER-EXCEL-DANS-AUTRE-FICHIER_1114455.aspx#4

15 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2008 à 11:37
Re,
Ceci devrait suffir alors si tu travaille directement sous EXCEL

Dim W1 As Workbook
Dim W2 As Workbook
 
  'le Classeur destination est dejà ouvert donc c'est le classeur actif
  Set W1 = ActiveWorkbook
  'Ouvre Classeur Source
  Set W2 = Application.Workbooks.Open("C:\Test1.Xls")

  Call W2.Worksheets("Feuil1").Range("A1:H33").Copy(W1.Worksheets("Feuil1").Range("A1"))

  'ferme Source sans sauver
  Call W2.Close(False)
  'Sauve classeur destination
  Call W1.Save
 
  Set W1 = Nothing
  Set W2 = Nothing
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2008 à 11:02
Salut,
Essaie d'adapter ceci

Dim XlApp As Object
Dim W1 As Object
Dim W2 As Object
Set XlApp = CreateObject("Excel.Application")
   
   'ouvre le Classeur destination
   Set W1 = XlApp.Workbooks.Open("C:\PP.Xls")
   'Ouvre Classeur Source
   Set W2 = XlApp.Workbooks.Open("C:\Test1.Xls")
   
   Call W2.Worksheets("Feuil1").Range("A1:H33").Copy(W1.Worksheets("Feuil1").Range("A1"))

   'ferme Source sans sauver
   Call W1.Close(False)
   'ferme destination en sauvant les modif
   Call W2.Close(True)
   'ferme Excel
   Call XlApp.Quit
   'destruction des objets
   Set XlApp = Nothing
   Set W1 = Nothing
   Set W2 = Nothing , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2008 à 11:05
Re,
Une petite erreur s'est glissée dans mon code

ceci
   'ferme Source sans sauver
   Call W1.Close(False)
   'ferme destination en sauvant les modif
   Call W2.Close(True)

devient

   'ferme Source sans sauver
   Call W2.Close(False)
   'ferme destination en sauvant les modif
   Call W1.Close(True)

@+: Ju£i?n
Pensez: Réponse acceptée
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
15 mai 2008 à 11:25
Merci jrivet pour ta réponse,
ça marche mais seulement il me transfert pas ce que je veux dans le fichier de destination, il me demande de sauvegarder dans un autre fichier, c'est normal?
0

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

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2008 à 11:28
Est tu sur que tout tes classeur et autres applications Excel sont bien fermées?

Regarde dans la  liste des processus si tu n'as pas des Application EXCEL.EXE "fantôme"

@+: Ju£i?n
Pensez: Réponse acceptée
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
15 mai 2008 à 11:30
mon fichier de destination est ouvert c'est depuis ce fichier que je lance mon code, c'est le but
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2008 à 11:35
Re,
Bah je croyais que tu faisais tout cela depuis VB6 moi.

Dans ce cas si c'est le fichier de destination qui est ouvert tu peux simplifier le code plus besoin de l'ouvrir.

De plus si tu es directement sous Excel tu n'as pas besoin de créer une nouvelle application EXCEL.

@+: Ju£i?n
Pensez: Réponse acceptée
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
15 mai 2008 à 11:47
si j'ai fait ce code mais ca marche pas!! Dsl je suis encore debutant


Dim XlApp As Object
Dim W1 As Object
Dim W2 As Object
Set XlApp = CreateObject( "Excel.Application" )
   
   'Ouvre Classeur Source
   Set W2 = XlApp.Workbooks.Open("C:\Test1.Xls")
   
   Call W2.Worksheets("Feuil1").Range("A1:H33").Copy(workbooks("PP.Xls").Worksheets("Feuil1").Range("A1"))

   'ferme Source sans sauver
   Call W1.Close(False)
   'ferme Excel
   Call XlApp.Quit
   'destruction des objets
   Set XlApp = Nothing
   Set W1 = Nothing
   Set W2 = Nothing
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
15 mai 2008 à 11:48
excuse moi j'ai pas vu ton dernier message
je vais l'essaier merci bcp jrivet
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
15 mai 2008 à 11:56
Merci beaucoup jrivet ca marche tres bien.

J'en profite pour pauser une question du meme genre, en fait au lieu de faire la copie d'un fichier excel je voudrais copier la totalité d'un fichier texte ( ca sera mon w2) et je veux le mettre dans un anglet du fichier de destination ( W2)

comment je pourait proceder? Merci en core une fois
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2008 à 12:02
Salut,
Un fichier Text? doncplus irne à voir avec excel.
Tu veux importer un fichier text dans une feuille Excel c'est bien cela?
Est ce que ton fichier à un formatage précis(du style des fichiers CSV)?

@+: Ju£i?n
Pensez: Réponse acceptée
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
15 mai 2008 à 12:09
oui pour transferer un fichier text  dans un fichier excel

ce fichier texte a plusieurs ligne et  contient des Tabulations, c'est un fichier ISO à la base.

si tu veux je t'envoie un exemple en MP
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
15 mai 2008 à 12:13
un truc du genre :

{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Comic Sans MS;}}
{\colortbl ;\red128\green0\blue0;}
\viewkind4\uc1\pard\cf1\b\f0\fs22 (PAR) \tab
\par VP31\tab
\par NUM_O  1\tab
\par BARILLET_1  360000\tab
\par BARILLET_2  360000\tab
\par SOUDAGE(oui=1/non=0)  0\tab
\par Longueur_PRODUIT 755\tab
\par M2\tab
\par \tab
\par (A1) \tab
\par A0\tab X0
\par A180  X756.60
\par A205  X756.60
\par A330 \tab  X0
\par M2\tab ....
avec une centaine de ligne encore
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2008 à 12:19
Salut,
Essaie de te dépatouiller avec ceci.

 
Workbooks.OpenText FileName:="C:\Documents and Settings\rivet\Bureau\bio.txt" _
       , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
       :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
       False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), ----
[code.aspx?ID=41455 By Renfield]

J'essaierais plus en détails cet après midi si j'ai 5 minutes

@+: Ju£i?n
Pensez: Réponse acceptée
0
inge68 Messages postés 42 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 24 février 2011
15 mai 2008 à 12:20
ok je te remercie sincerement, c'est vraiment sympa.
Je vais me creuser les neurones et si je reussi a trouver un truc je te le dirai.

a +
0
Rejoignez-nous