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
| Sub ParcoursClasseur()
Dim ActWbk as Workbook
Dim oFSO as object
Dim LAstLine as single
Dim I as single
Dim WbkName as string
Dim WbkPath as string
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set ActWbk = ThisWorkbook
'Définis le classeur actif
LastLine = ActWbk.Columns(4).Find("*", , , , xlByRows, xlPrevious).Row
'Définis la dernière ligne de la colonne D
For I = 0 to LastLine
'Parcours les lignes
WbkName = ActWbk.Worksheets("TotO").Cells(I, 4)
'Définis le nom du classeur
WbkPath = ""
If oFSO.FileExists("C\rapports\pro\" & WbkName) Then Wbkpath = "C\rapports\pro\" & WbkName
'Si le Classeur existe dans le répertoire précedent, affecte le chemin a une variable
If oFSO.FileExists(" C\rapport\particuliers\" & WbkName) Then Wbkpath = "C\rapports\particuliers\" & WbkName
'Si le Classeur existe dans le répertoire précedent, affecte le chemin a une variable
If WbkPath <> "" then Call ouverture_rapport_Click(WbkPath)
'Si le chemin n'est pas égale a "" alors appelle la procédure de Thautheme.
Next I
'Cette partie la est très certainement à améliorer
End sub
Private Sub ouverture_rapport_Click(rapport as string)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim rapport As String 'déclare la variable rapport
Dim OS As Object 'déclare la variable OS (Onglet Source)
Dim OD As Object 'déclare la variable OD (Onglet Destination)
Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Sheets("Registre_nom_opérateur_société") 'définit l'onglet destination OD
Set DEST = OD.Range("A4").End(xlDown).Offset(1, 0) 'définit la cellule de destination DEST
'rapport = Application.GetOpenFilename("Fichier Excel(*.xls;*.xlsm;*.xlsx;*.xlt.m),*.xls;*.xlsm;*.xlsx;*.xltm")
'Cette ligne n'a plus raison d'être, le chemin du classeur est passé en argument de la Sub
Set CS = Workbooks.Open(rapport) 'définit le classeur source CS
Set OS = CS.Sheets("Registre") 'définit l'onglet source OS
OS.Range("A4:CF4").Copy 'copy la plage A4:CF4
DEST.PasteSpecial (xlPasteValues) 'colle les valeurs de la plage copiée dans DEST
CS.Close False 'fermeture sans enregistrer"
End Sub |
Partager