Extraction de données dans plusieurs fichiers

sr94

XLDnaute Occasionnel
Bonjour

Je viens solliciter votre aide pour mettre en place des liaisons entre des fichiers, probablement par des macros, mais je ne maitrise pas du tout.
Donc voilà j'ai un fichier avec des données de plusieurs fournisseurs, par exemple, fournisseur A, fournisseur B, fournisseur C …., avec plusieurs lignes par fournisseur.

J'ai besoin, de façon automatique, de créer un fichier par fournisseur avec toutes les mêmes colonnes, ensuite j'ai besoin quand les collaborateurs de chaque fournisseur auront remplit ce fichier de le réinjecter dans le premier fichier pour le mettre à jour.

Savez vous comment je peux faire ? :confused:

Merci beaucoup
 

bbb38

XLDnaute Accro
Re : Extraction de données dans plusieurs fichiers

Bonjour sr94, le forum,
Pour créer un fichier par fournisseur, tu peux (par exemple) créer un modèle de fichier, et copier celui-ci pour chaque fournisseur.
Une fois les fichiers complétés, tu peux récupérer les données de chaque fichier (voir le problème de la mise à jour – une solution : récupérer toutes les données dans le fichier initial).
Cordialement,
Bernard
 

sr94

XLDnaute Occasionnel
Re : Extraction de données dans plusieurs fichiers

pour créer les fichiers c'est bon ! la question c'est plus comment faire pour générer automatiquement tous les fichiers par fournisseur (ou faire la mise automatiquement) et ensuite retourner les informations dans le premier fichier une fois que le collaborateur a rempli sa partie.
 

bbb38

XLDnaute Accro
Re : Extraction de données dans plusieurs fichiers

Bonjour sr94, le forum,
pour créer les fichiers c'est bon ! la question c'est plus comment faire pour générer automatiquement tous les fichiers par fournisseur (ou faire la mise automatiquement)
Si pour la création des fichiers, c’est bon, que désires-tu générer automatiquement (étant donné que les fichiers sont créés) ?
et ensuite retourner les informations dans le premier fichier une fois que le collaborateur a rempli sa partie.
Une idée de solution pour le retour des informations dans le premier fichier, à adapter à tes besoins.
Dans cet exemple, le premier fichier se nomme « Fourn_recap » et les noms des fichiers fournisseurs sont indiqués par un numéro (401001, 401002).
Cordialement,
Bernard
 

Pièces jointes

  • Fourn_recap.xlsm
    37.6 KB · Affichages: 44
  • 401001.xlsm
    19 KB · Affichages: 29
  • 401002.xlsm
    19.8 KB · Affichages: 35

sr94

XLDnaute Occasionnel
Re : Extraction de données dans plusieurs fichiers

Bonjour

Tout d'abord merci pour votre aide

Pour la première partie : création des fichiers par fournisseur, j'ai réussi à faire la macro suivante qui me permet de générer un fichier pour mon fournisseur FOURN1

Sub Macro_FOURN1()
'
' Macro_FOURN1Macro
'

'
ActiveSheet.ListObjects("Tableau2").Range.AutoFilter Field:=8, Criteria1:= _
"FOURN1"
Cells.Select
Selection.Copy
Selection.SpecialCells(xlCellTypeVisible).Select
Application.CutCopyMode = False
Selection.Copy
Workbooks.Open Filename:= _
"S:\Achats\COMMUN\Tableau de suivi\Production Status\Production Status_FOURN1.xlsx"
Range("X1").Select
ActiveWindow.ScrollColumn = 1
Range("A1").Select
ActiveSheet.Paste
Rows("1:2").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Rows("2:2").Select
Selection.Delete Shift:=xlUp
Columns("A:AE").Select
Selection.AutoFilter
Columns("A:AE").EntireColumn.AutoFit
Range("E3").Select
ActiveSheet.SaveAs Filename:="S:\Achats\COMMUN\Tableau de suivi\Production Status\" & "Production Status FOURN1" & Format(Date, "d-mm-yy")
ActiveWindow.Close
Range("A561").Select
End Sub

Mais le problème c'est que je vais devoir recopier cette macro pour chaque fournisseur et la modifier quand arrive un nouveau fournisseur
Comment peut-on la modifier pour que l'opération se répète pour chaque fournisseur existant ?

Ensuite 2e partie, le soucis avec les fichiers proposés est que ça va effacer toutes les données. J'ai besoin que ça mette à jour uniquement ce qui a été modifé dans mes fichiers préalablement créés et renvoyer après mise à jour des collaborateurs. (Tout le monde ne renverra pas son fichier à jour, et pas au même moment). Je dois donc pouvoir effacer uniquement les données des fichiers présents dans un certain dossier par exemple. Et aussi ce sont des suivi de lignes de production donc il peut y avoir 300 lignes pour un fournisseur.

Merci encore et si on y arrive, c'est top !
 

sr94

XLDnaute Occasionnel
Re : Extraction de données dans plusieurs fichiers

Bonjour

Merci pour ce code. Je l'ai adapté et celà donne :

Sub CreeClasseurs()
Application.DisplayAlerts = False
[A4:AE4000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[AH4], Unique:=True
For Each c In Range("AH5", Range("AH65000").End(xlUp))
Range("AH5") = c
Sheets.Add
Sheets("Feuil1").[A4:AE4000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Feuil1").[AH4:AH5], CopyToRange:=[A1], Unique:=False
ActiveSheet.Copy
ActiveSheet.Name = c
ActiveWorkbook.SaveAs Filename:=c
ActiveWorkbook.Close
ActiveSheet.Delete
Sheets("Feuil1").Select
Next c
End Sub

Par contre celà me pose un problème majeur : mon tableau d'origine et les tableaux générés sont tous transformés en plage de cellules et non en tableau comme à l'origine, comment je peux y remédier ?

Par ailleurs les macros plantent sur les noms des fichiers car j'ai des "/" "," etc ... dans mes noms de fournisseurs, comment puis je les remplacer par un espace par exemple ?

Merci encore
Sandrine
 

sr94

XLDnaute Occasionnel
Re : Extraction de données dans plusieurs fichiers

J'ai modifié la macro et j'ai maintenant la mise en forme du tableau sur les tableaux générés, mais je n'ai pas les filtres automatiques, que dois je corriger pour les avoir ?

J'ai toujours aussi ce problème :les macros plantent sur les noms des fichiers car j'ai des "/" "," etc ... dans mes noms de fournisseurs, comment puis je les remplacer par un espace par exemple ?

Code:
Sub CreeClasseurs()
Application.DisplayAlerts = False
[A4:AE4000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[AH4], Unique:=True
For Each c In Range("AH5", Range("AH65000").End(xlUp))
Range("AH5") = c
Sheets.Add
Sheets("Feuil1").[A4:AE4000].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("Feuil1").[AH4:AH5], CopyToRange:=[A1], Unique:=False
ActiveSheet.Copy
ActiveSheet.Name = c
ActiveWorkbook.SaveAs Filename:="S:\Achats\COMMUN\Tableau de suivi\Production Status\" & "Production status " & c & " " & Format(Date, "d-mm-yy")

Columns("A:AE").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$AE$1000"), , xlYes).Name = _
"Tableau1"
Range("Tableau1[#All]").Select
ActiveSheet.ListObjects("Tableau1").TableStyle = "TableStyleMedium18"
If Not ActiveSheet.AutoFilterMode Then ActiveSheet.[A1].AutoFilter
ActiveWorkbook.Close
ActiveSheet.Delete
Sheets("Feuil1").Select
Next c
End Sub
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Extraction de données dans plusieurs fichiers

Code:
Sub CreeClasseurs()
  Application.DisplayAlerts = False
  [A1:D10000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[g1], Unique:=True
  For Each c In Range("G2", Range("G65000").End(xlUp))
    Range("G2") = c
    Sheets.Add
    Sheets("BD2").[A1:D10000].AdvancedFilter Action:=xlFilterCopy, _
       CriteriaRange:=Sheets("BD2").[G1:G2], CopyToRange:=[A1], Unique:=False
    ActiveSheet.Copy
    nf=Replace(c,"/","_")         ' remplace / par _
    ActiveSheet.Name = nf      '
    ActiveWorkbook.SaveAs Filename:=nf  '
    ActiveWorkbook.Close
    ActiveSheet.Delete
    Sheets("BD2").Select
  Next c
End Sub

JB
 

sr94

XLDnaute Occasionnel
Re : Extraction de données dans plusieurs fichiers

Oui c'est ce que j'ai fait mais j'ai pas de filtres dans les fichiers générés

Par ailleurs comment inclure plusieurs caractères spéciaux dans replace ? (& , - / ....)

Mille Mercis !
 

sr94

XLDnaute Occasionnel
Re : Extraction de données dans plusieurs fichiers

Dans le code, que dois je modifier pour conserver les formules ? Actuellement ce sont les valeurs qui sont copiées et donc je perds toutes les formules.

Par ailleurs dans mon fichier source, les données ne sont plus filtrées une fois la macro exécutée, que faut-il modifier ?

Merci beaucoup
 

Discussions similaires

Réponses
11
Affichages
631

Statistiques des forums

Discussions
312 177
Messages
2 085 970
Membres
103 072
dernier inscrit
Remithesix