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 InsérerFormation()
Dim Cel As Range
Dim FinFichier As String
Dim SiteParaphe As String
Dim fichierChoisi, SelectedBook as String
'fichier de consolidation: "Formation_2018.xlsm"
FinFichier = "_Fiche besoin de formation 2018.xlsx"
'Créer une liste de 'Site_Paraphe' dans une zone quelconque dans "Formation_2018.xlsm"
'InputBox serait donc inutile, voir le pourquoi plus loin.
'SiteParaphe = InputBox("Saisir 'Site_Paraphe' du salarié", "Site et paraphe du salarié")
'Il suffira de lire la liste (via un do while ... loop).
'Supposons que ta liste est créée dans la feuille "Sheet1", en zone "A2:A150",
'Dans ce cas, on construit la 1ère occurence pour le 1er fichier ainsi:
fichierChoisi = "Z:\Documents\Excel\Formation\" & Sheets("Sheet1").Range("A2") & FinFichier
'SelectedBook = "Z:\Documents\Excel\Formation\" & SiteParaphe & FinFichier
Workbooks.Open (fichierChoisi )
' Workbooks.Open ("Z:\Documents\Excel\Formation\" & SiteParaphe & FinFichier)
'garder la séquence du traitement, puis aller à la cellule suivante: Sheets("Sheet1").Range("A3")
'et recommencer. Ne pas oublier de sortir du loop à la fin de la liste.
'Il faudra également jongler entre les feuilles au cas où Sheet1 n'est pas l'ActiveSheet
Application.CutCopyMode = False
Range("A16", [A16].End(xlDown)).Resize(, 8).Copy
Windows("Formations_2018.xlsm").Activate
If Range("G3") = "" Then
Range("G3").Select
Else
Range("G2").End(xlDown).Offset(1, 0).Select
End If
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
For Each Cel In Range("A3:A" & ActiveSheet.UsedRange.Rows.Count)
If Cel.Value = "" And Cel.Offset(0, 9) <> "" Then
Windows(SiteParaphe & FinFichier).Activate
Range("B8:B10").Copy
Windows("Formation_2018.xlsm").Activate
Cel.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Windows(SiteParaphe & FinFichier).Activate
Range("D810").Copy
Windows("Formations_2018.xlsm").Activate
Cel.Offset(0, 3).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End If
Next Cel
Windows(SiteParaphe & FinFichier).Close savechanges:=False
End Sub |
Partager