1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| Sub VentilerDonnées()
'déclaration de variables
Dim objShell As Object, objFolder As Object, oFolderItem As Object
Dim Chemin As String
Dim Fichier As String
Dim cell As Range, i As Range
'ouvre la fenetre pour sélectionner le répertoire de sauvegarde
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
On Error Resume Next
Set oFolderItem = objFolder.Items.Item
Chemin = oFolderItem.Path
Application.ScreenUpdating = False
Windows("source.xlsm").Activate
Range("A5").Select
Range(Selection, Selection.End(xlToLeft)).Select
Range(Selection, Selection.End(xlDown)).Select
Application.Goto Reference:="SourceData"
Range("D7").Select
Range(Selection, Selection.End(xlToLeft)).Select
Range(Selection, Selection.End(xlDown)).Select
Application.Goto Reference:="SourceDonnées"
Range("D6").Select
Range(Selection, Selection.End(xlToLeft)).Select
Application.Goto Reference:="SourceValeurs"
Range("B7").Select
Range(Selection, Selection.End(xlDown)).Select
Application.Goto Reference:="SourceClients"
'pour chaque pays dans le fichier source: 'le fichier source doit etre actif
For Each Pays In Range("SourceMatieres")
'recherche du fichier de la matière concernée
'*******************************************************************
'Boucle sur tous les fichiers xls du répertoire.
NomFichier = Dir(Chemin & "\*.xls")
trouve = False
Do While Len(NomFichier) > 0 And trouve = False
If Not NomFichier Like "*" & Export & "*" Then
NomFichier = Dir()
trouve = False
Else: trouve = True
End If
Loop
'********************************************************************
'ouverture du fichier qui vient d'être récuperé afin de recevoir les données
Workbooks.Open Filename:=Chemin & "\" & NomFichier
For Each Client In Range("SourceClients")
'MsgBox Client
Windows("Data.xlsm").Activate
'on récupère la note
note = Range("sourceData").Item(Client.Row, Valeur.Column)
'dans le fichier de Data
Windows(NomFichier).Activate
With ActiveWorkbook
'on cherche la position de l'élève
Set c = Range("D:D").Find(Client, lookat:=xlWhole)
If Not c Is Nothing Then
'et on lui met sa Valeur
c.Offset(0, 1) = note
End If
End With
'MsgBox ("Client: " & eleve & " Pays: " & Pays & " Valeur: " & Valeur)
Next Client
'tous les clients ont eu leur Valeur pour le fichier en cours.. on peut fermer avec sauvegarde
Workbooks(NomFichier).Close savechanges:=True
'on passe au fichier suivant
Next Pays
Application.ScreenUpdating = True
End Sub |
Partager