Extraction Données Excel

Résolu
Signaler
Messages postés
47
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007
-
Messages postés
47
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007
-
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

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Ta feuille ne serait pas protégée, par hasard ?

MPi
Messages postés
47
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007

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
Messages postés
47
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007

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
Messages postés
47
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007

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
Messages postés
47
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007

oki merci..je vais essayer ça...je te tiens au courant...
A+

Moz
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
47
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007

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
Messages postés
47
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007

j'ai enlevé la protection...et finalement rien ne change;..la boîte à outil reste encore inaccessible (en surbrillance..)..

Moz