Extraction Données Excel

Résolu
Morrissey35 Messages postés 47 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 3 juillet 2007 - 19 juin 2007 à 16:24
Morrissey35 Messages postés 47 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 3 juillet 2007 - 20 juin 2007 à 11:09
Bonjour à tous,
j'ai écris un petit code qui me sert à extraire des données de plusieurs fichiers excel vers un fichier centralisateur. L'objectif étant de venir alimenter ce fichier centralisateur avec de nouvelles données au fil du temps. Pour le moment, dans mon code j'appelle une cellule excel et la renvoie vers une autre cellule du fichier central.  Le hic c'est qur pour chaque nouveau dossier il faudra que je restipule dans ma macro les cellules vers lesquels les données doivent aller...donc au final le gain de temps n'est que relatif...quelqu'un aurait-il une idée pour ne pas avoir à retaper à chaque fois l'adresse de chaque cellule..?
Merci..
PS: je suis super novice...

Moz

12 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2007 à 17:00
Salut,

>>j'ai écris un petit code qui me sert à extraire des données de plusieurs fichiers
pour qu'on essaie de t'aider, il nous faut ce code, afin de l'adapter en boucle sur tes fichiers.

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2007 à 17:19
Bon voici ton code un peu plus allégé :

Sub PpfData(ByVal NomFichier As String)
    Dim xlApp   As New Excel.Application
    Dim xlBook  As Excel.Workbook
    
'Appel du
fichier Excel :
'Set xlApp =
CreateObject("Excel.Application")

xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open(NomFichier)

'Appel de la feuille correspondante :
xlBook.Sheets("Feuil1").Select
xlBook.Range("F27").Copy
'xlApp.Selection.Copy
xlBook.Range("B2").Paste
    'ActiveSheet.Paste
   
xlBook.Range("A5").Copy
'xlApp.Selection.Copy
xlBook.Range("A2").Paste
    'ActiveSheet.Paste
   
xlBook.Range("F28").Copy
'xlApp.Selection.Copy
xlBook.Range("B2").Paste
'    ActiveSheet.Paste
   
xlBook.Range("C3").Copy
'xlApp.Selection.Copy
xlBook.Range("A2").Paste
    'ActiveSheet.Paste
   
xlBook.Close True
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
End Sub

Sub test()
    ' pour lancer la Sub :
    PpfData "C:\Documents and
Settings\epierron\Mes documents\PPF_Fiches\X"
End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Par contre, pour ton histoire de cellule, si ce ne sont jamais les mêmes d'une fichier à un autre, ça risque de ne pas être évident...

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2007 à 17:36
Ah Ok, donc quand tu mets :

appexcel.Sheets("Feuil1").Select
appexcel.Range("F27").Select
appexcel.Selection.Copy
     Sheets("Feuil1").Select

appexcel.Sheets("Feuil1").Select       c'est le classeur que tu ouvres avec ta Sub, et..
Sheets("Feuil1").Select                           C'est le fameux fichier centraliseur ?

Si oui, confirme moi que tu n'es pas en VB6 mais en VBA ?

Et une fois ce fichier traité, et que tu veux faire pareil sur un autre, où les données s'enregistre-t-elle ? (les unes en dessous des autres ?)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2007 à 17:56
Pas testé mais voici en gros ce que je ferai :

Sub PpfData(ByVal NomFichier As String, ByVal Ligne As Long)
    Dim xlApp   As New Excel.Application
    Dim xlBook  As Excel.Workbook
    
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open(NomFichier)

xlBook.Sheets("Feuil1").Select
xlBook.Range("F27").Copy
ThisWorkBook.ActiveSheet.Range("B" & 2 + Ligne).Paste
   
xlBook.Range("A5").Copy
ThisWorkBook.ActiveSheet.Range("A" & 2 + Ligne).Paste
   
xlBook.Range("F28").Copy
ThisWorkBook.ActiveSheet.Range("B" & 2 + Ligne).Paste
   
xlBook.Range("C3").Copy
ThisWorkBook.ActiveSheet.Range("A" & 2 + Ligne).Paste
   
xlBook.Close True
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
End Sub

Sub test()
    Dim MesFichiers(3) As String 'remplacer 3 par le nombre de
fichiers - 1
    
MesFichiers(0) = "C:\Documents and Settings\epierron\Mes
documents\PPF_Fiches\X"
MesFichiers(1) = "C:\Documents and Settings\epierron\Mes
documents\PPF_Fiches\X1"
MesFichiers(2) = "C:\Documents and Settings\epierron\Mes
documents\PPF_Fiches\X2"
MesFichiers(3) = "C:\Documents and Settings\epierron\Mes
documents\PPF_Fiches\X3"
    
    ' pour lancer
la Sub :
For i = 0 To 3
    PpfData "C:\Documents and
Settings\epierron\Mes documents\PPF_Fiches\X", i
Next i
Erase MesFichiers
End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
20 juin 2007 à 10:45
Ta feuille ne serait pas protégée, par hasard ?

MPi
3
Morrissey35 Messages postés 47 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 3 juillet 2007
19 juin 2007 à 17:08
Merci...voici le code, mais j'ai un peu honte de mon niveau....

Sub PpfData()
Dim appexcel As Excel.Application
Dim wbexcel As Excel.Workbook
'Appel du fichier Excel :
Set appexcel = CreateObject("Excel.Application")
appexcel.Visible = True
Set wbexcel = appexcel.Workbooks.Open("C:\Documents and Settings\epierron\Mes documents\PPF_Fiches\X")
'Appel de la feuille correspondante :
appexcel.Sheets("Feuil1").Select
appexcel.Range("F27").Select
appexcel.Selection.Copy
     Sheets("Feuil1").Select
    Range("B2").Select
    ActiveSheet.Paste
   
appexcel.Sheets("Feuil1").Select
appexcel.Range("A5").Select
appexcel.Selection.Copy
    Sheets("Feuil1").Select
    Range("A2").Select
    ActiveSheet.Paste
   
appexcel.Sheets("Feuil1").Select
appexcel.Range("F28").Select
appexcel.Selection.Copy
     Sheets("Feuil1").Select
    Range("B2").Select
    ActiveSheet.Paste
   
appexcel.Sheets("Feuil1").Select
appexcel.Range("C3").Select
appexcel.Selection.Copy
    Sheets("Feuil1").Select
    Range("A2").Select
    ActiveSheet.Paste
   
   


 End Sub

Voila...mon idée de néophite c'est de faire la correspondance pour chaque cellule (je sais qu'il y a mieux et j'y refléchi..ptet .créer une variable..??).
Ensuite l'objectif serait de pouvoir actualiser facilement cette macro (genre en changeant seulement une le nom du fichier que j'appelle, et une variable)...

Encore mercii...et pas de moquerie surtout...suis pas informaticien...lol

Moz
0
Morrissey35 Messages postés 47 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 3 juillet 2007
19 juin 2007 à 17:32
Merci...
si si, les données sont toujours dans les mêmes cellules...ce que je voudrais c'est que pour tout nouveaux fichiers (et donc nouvelles séries de données), je puisse les exporter rapidement (sans trop de manip) à la suite de mon fichier central...ce qui me permettrait d'avoir une mise à jour du fichier central facilement dans le temps.
en tout cas, je te remercie pour ton aide et ton soutien.

Moz
0
Morrissey35 Messages postés 47 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 3 juillet 2007
19 juin 2007 à 17:48
oui c'est le fichier centralisateur..et je travaille sous la VB Editor dans la macro d'excel..
Une fois les données traités les suivantes (donc le nouveau fichier traité) viennent en dessous...mon idée à moi était de me dire: voila un nouveau fichier = une nouvelle ligne, donc je crée une variable équivalent à la 1ere ligne et j'implémenterais  à chaq fois...
par exemple pour le fichier j'aurais:
Nom_d'une_variable = ligne 1

du coup apres dans la suite du code je n'ai plus à mettre Range("cell") mais (range B, Nom_de_la_variable +1)...puis +2 etc....
J'ai donc un souci sur la façon dont je dois écrire cette partie du code.. 
J'espère que je me fais comprendre.....
A+
Moz
0
Morrissey35 Messages postés 47 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 3 juillet 2007
19 juin 2007 à 18:02
oki merci..je vais essayer ça...je te tiens au courant...
A+

Moz
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
20 juin 2007 à 01:55
Et si tu mettais des formules dans le fichier central qui irait lire les cellules de l'autre ?
Ensuite, tu pourrais copier ces formules en valeur...

... une idée comme ça ... sans trop savoir si ça peut se faire dans ton cas (?)

MPi
0
Morrissey35 Messages postés 47 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 3 juillet 2007
20 juin 2007 à 09:22
merci pour vos idées...je suis entrain de teste tout ça..
par ailleurs, j'aurais voulu ajouté un bouton de contrôle sur ma feuille excel, le probleme est que je n'ai pas acces à cette option: dans outil, l'option controle supplémentzire est en surbrillance...est ce normal?

Merci

Moz
0
Morrissey35 Messages postés 47 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 3 juillet 2007
20 juin 2007 à 11:09
j'ai enlevé la protection...et finalement rien ne change;..la boîte à outil reste encore inaccessible (en surbrillance..)..

Moz
0
Rejoignez-nous