Const feuille$ = "Feuil1" 'à adapter, mémorise le nom des feuilles de destination pour ADO
Sub Traiter_ADO()
Const fichier As String = "[DIPLÔME]-MELEC-Grilles-Eval-CCF-[NOM]-[PNOM]-[MOIS]-[ANNEE].xlsx" 'mois à adapter
Dim chemin$, ANNEE$, MOIS$, ad$(1 To 3), c As Long, i%, fich$ 'tableaux à dimensionner
chemin = ThisWorkbook.Path & "\"
ad(1) = "E13" 'adresse à adapter
ad(2) = "E15" 'adresse à adapter
ad(3) = "E17" 'adresse à adapter
ANNEE = 2020: MOIS = "juin"
'On Error Resume Next 'si le fichier n'existe pas
Dim Cn As New ADODB.Connection: Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=NO;"""
With ThisWorkbook.Sheets("Feuil1")
For i = 1 To .Range("A1").CurrentRegion.Rows.Count - 1
fich = chemin & Replace(Replace(Replace(Replace(Replace(fichier, "[NOM]", .Range("A1").Offset(i, 1)), "[PNOM]", .Range("A1").Offset(i, 2)), "[MOIS]", MOIS), "[ANNEE]", ANNEE), "[DIPLÔME]", .Range("A1").Offset(i))
Export fich, ad, .Range("A1").Offset(i), Cn
Next
End With
Cn.Close
Set Cn = Nothing
End Sub
Sub Export(fich$, ad$(), c As Range, Cn As ADODB.Connection)
Dim Cd As ADODB.Command, j%, Rst As ADODB.Recordset, Ch As String
Set Cd = New ADODB.Command
Cd.ActiveConnection = Cn
For j = 1 To 3
Ch = IIf(IsNumeric(c(1, j)), "", "'")
Cd.CommandText = "update [" & feuille & "$" & ad(j) & ":" & ad(j) & "] in '" & fich$ & "' 'Excel 12.0;HDR=NO' set [F1]=" & Ch & c(1, j).Offset(, 1) & Ch & ";"
Cd.Execute
Next
Set Cd = Nothing
'Set Rst = Nothing''
End Sub