ils sont en numérique et alphanumérique
ok, j'avais considéré qu'il n'étaient que numérique comme l'exemple
A tester car je n'ai pas de données alphanum dans l'exemple que tu as donné.
Sub Importer_base_CLMT()
Dim col1%, col2%, col3%, a, ub%, agent, exutil, d As Object, ex As Object, i&, tablo, resu(), j%, v As Variant, n&
Dim f As Variant, temp
col1 = 1: col2 = 6: col3 = 10 'à adapter
a = Array(2, 3, 4, 6, 7, 8, 10, 11, 12) 'numéros des colonnes à copier
ub = UBound(a)
'---lecture du fichier csv---
f = Application.GetOpenFilename("csv Files (*.csv), *.csv")
If f = False Then Exit Sub
Workbooks.Open Filename:=f, LOCAL:=True
f = Dir(f)
tablo = [A1].CurrentRegion.Resize(, a(ub))
Workbooks(f).Close
'---mémorise les agences---
agent = Sheets("Utilisateurs").[A4].CurrentRegion.Resize(, 2)
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(agent)
d(UCase(agent(i, 1)) & Chr(1) & agent(i, 2)) = ""
Next i
'---mémorise les utilisateurs anciens---
exutil = Sheets("Utilisateurs").Range("I2:I" & Sheets("Utilisateurs").Cells(Rows.Count, "I").End(xlUp).Row)
Set ex = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(exutil)
If exutil(i, 1) <> "" Then ex((exutil(i, 1))) = ""
Next i
Debug.Print "---"
'---tableau des résultats---
ReDim resu(UBound(tablo), ub) 'base 0
For i = 2 To UBound(tablo)
If d.exists(UCase(tablo(i, col1)) & Chr(1) & tablo(i, col2)) And ex.exists(tablo(i, col3)) = False Then
For j = 0 To ub
v = tablo(i, a(j))
If IsNumeric(v) Then resu(n, j) = CDbl(v) Else resu(n, j) = v
Next j
n = n + 1
End If
Next i
'---restitution---
With Sheets("CLMT")
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
If n Then .Cells(.Rows.Count, 4).End(xlUp)(2).Resize(n, ub + 1) = resu
End With
End Sub