Compilation Multifichier

  • Initiateur de la discussion Heinken
  • Date de début
H

Heinken

Guest
Hello le forum
hello tout le monde


Je souhaiterais reussir a trouver un code qui me permettrais d'aller chercher des informations de meme type dans plusieur fichier differents pour les recuperer dans un tableau global de consolidation.

Je m'explique: fichier A.xls cellule A1:A10 Cellule C23 Cellule D36

fichier Bxls cellule A1:A10 Cellule C23 Cellule D36
fichier C.xls cellule A1:A10 Cellule C23 Cellule D36,

Pour avoir dans Recap.xls untableau regroupant les valeurs de A, B C

( sur 2 ou 3 fichier sa va c 'est simple ) pas besoin de code, mais ici le probleme ce complique car le non des fichier peuvent changer.

la premier piste à laquelle j avais penser est une feuille identique dans chaque classeur avec une cellule de reference ( ex: feuille 'ref ; avec cellule A1= conso )

mon probleme est que je n arrive pas a finaliser mon code VBA.

si vous avez des idees ou suggestions je suis preneur

Merci d'avance
 
F

flyonets

Guest
Bonjour
un bout de code pour debloquer ton inspiration

Public Sub OFICHIER()
' COPIER LES DATAS D UNE FEUILLE DANS UNE FEUILLE D UN AUTRE CLASSEUR
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim Y&, Z&, Vb1 As Variant, Vb2 As Variant, Vb3 As Variant, Vb4 As Variant, Plage
Dim Wab As String, Wbcible As Workbook, Cible As String, Source As String
Dim WSSource As Worksheet, Wscible As Worksheet
Feuil2.Activate ' feuille de depart
Wab = ActiveWorkbook.Name
Range('H2').Formula = Wab 'NOM DU FICHIER
Range('B7').Name = 'Vol'
'Set Wscible = Feuil3 ' qui recoit les datas
Vb1 = Range('Vol').Value
Vb2 = Range('C7').Value
Vb3 = Range('E7').Value
Vb4 = Range('F7').Value
With Range('C7:C27')
If Vb1 = vbNullString Then
Exit Sub
End If
If Vb2 = vbNullString Then
Exit Sub
End If
'OUVERTURE FICHIER SOURCE
Y = 1
Workbooks.Open Filename:=Vb1 & Vb2, UpdateLinks:=0
Source = ActiveWorkbook.Name
Workbooks(Source).Activate
Set WSSource = Workbooks(Source).Worksheets(Y)
'SELECTION FEUILLE SOURCE
WSSource.Activate
'POSITIONNEMENT DANS LA FEUILLE
Range('A1').Select
Set Plage = Selection.CurrentRegion
'OUVERTURE FICHIER CIBLE
Workbooks.Open Filename:=Vb1 & Vb3, UpdateLinks:=0
Cible = ActiveWorkbook.Name
Workbooks(Cible).Activate
' SELECTION FEUILLE CIBLE
Z = Vb4
Set Wscible = Workbooks(Cible).Worksheets(Z)
With Wscible
Plage.Copy .Range('A2')
End With
' FERMETURE SOURCE ET CIBLE
Workbooks(Source).Close
Workbooks(Cible).Save: Workbooks(Cible).Close
Feuil2.Activate
End With
MsgBox ('Copie effectuée')
Application.EnableEvents = True
End Sub

Bonne journée
 
H

Heinken

Guest
hello flyonets

Merci bcp pour ce code fort interressant

mais j auria quelques questions

apparament tu utilise un fichier tier pour definir tes parametres
cette piste est interresante mais au depart j étais parti avec l idée suivante :

Mes fichiers source de donnée appelons A possede deux feuilles
A1.xls 'données' et 'id'
A2.xls 'données' et 'id'
A3.xls 'données' et 'id'
A4.xls 'données' et 'id'
les informations a recuperer sont dans donnees toujour a la meme place ( cf post n°1.)

j'etais parti dans l'idée A1,A2,A3,A4 se trouve dans le meme repertoire, lors du lancement de ma macro, j ouvre les fichiers excel 1 a 1 si cellule A1 de Id = ok alors je copie les données siinon je referme et ainsi de suite

mais c est vrai que je bloque alors ton syteme est sans doute plus sure


merci bcp

Heinken
 

Lophi

XLDnaute Nouveau
Re : Compilation Multifichier

Bonjour..

J'ai la même question avec une dizaine de données à récupérer toujours au même endroit de chacune des feuilles (B20, B22, B24, B26, C80, C92..) dans une vingtaine de petits fichiers excel avec des noms différents mais dans un même dossier "addition01" :
martin.xls
bidul.xls
jean.xls
etc...

Seulement voilà, je connais un peu excel, je sais faire des totaux de plusieurs feuilles différentes, voire plusieurs classeurs, mais très peu les codes vba ou autres... Le code ci-dessus est-il toujours valide avec excel2003 ?
Et où mets-on les cellules B20, B22, etc.. dans ce code ?
Faut-il une feuille vierge pour récupérer les totaux ?

Bref, je manque un peu d'entrainement...
Si une âme charitable peut me répondre, merci d'avance.
 
Dernière édition:

vbacrumble

XLDnaute Accro
Re : Compilation Multifichier

Bonsoir


Et bonjour à ce vieux fil ;)


Voici une macro qui fait ce que tu souhaites

Il faut juste adapter le nom du répertoire

Code:
Option Explicit

Sub compilationClasseurs()
Dim W As Workbook, WL As Workbook, DCel As Range, i As Long
Dim adressesF, k As Byte, l As Byte
adressesF = Array("B20", "B22", "B24", "B26", "C80", "C92")

Application.ScreenUpdating = False
   
On Error Resume Next

Set W = ThisWorkbook
With Application.FileSearch
    .NewSearch
   [COLOR="Red"] .LookIn = "C:\Tempi"[/COLOR]
    .FileType = msoFileTypeExcelWorkbooks
 
If .Execute > 0 Then
    For i = 1 To .FoundFiles.Count
        Set WL = Workbooks.Open(.FoundFiles(i), 0)
        Set DCel = W.Sheets(1).[A65536].End(xlUp).Offset(1, 0)
        For k = LBound(adressesF) To UBound(adressesF)
            DCel.Offset(, k) = WL.Sheets(1).Range(adressesF(k))
        Next
        Application.DisplayAlerts = False
        WL.Close 'False
    Next i
End If
End With

On Error GoTo 0
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Set W = Nothing
Set WL = Nothing
Set DCel = Nothing
End Sub
 

kiki29

XLDnaute Barbatruc
Dernière édition:

vbacrumble

XLDnaute Accro
Re : Compilation Multifichier

RE, bonjour kiki29


Lophi:

Tu as bien modifié le nom du répertoire?
.LookIn = "C:\Tempi"



(PS: normalement quand je poste un code VBA, je le teste avant et je poste le code quand le code fonctionne sur mon PC, ce qui est le cas ici )
 

vbacrumble

XLDnaute Accro
Re : Compilation Multifichier

Re


A priori non

Il y a d'autres façons.


Ce serait plus simple si tu ouvrais un nouveau fil de discussion
(en mettant deux fichiers exemples (avec des données fictives) :
- un fichier source issue de ton dossier addition01
(avec les cellules désirés remplies du même type de données
que les données réelles)
- le fichier résultat (ou seront copiées les données)


PS: zippes tes fichiers avant de les poster (car limite des PJ à 48 ko )
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote