Bonjour tout le monde,
J'ai plusieurs fichiers csv chacun pensant dans les 150 Mo.
Je dois extraire des colonnes plusieurs fois (je récupère les numéros de colonnes dans une feuille "Inputs").
Je les copie dans des fichiers destination,
Bref, j'ai réussi a tout coder et la macro fait exactement ce que je veux.

Le souci est que la macro manipule des fichiers trop volumineux et Excel plante souvent et donc, pas facilement utilisable.

Pourtant, j'ai applique des astuces concernant l'optimisation du code (éviter le select, déclarer les variables etc ...).

Alors, je me suis rabattu sur l'option de lire les données dans un classeur ferme.

J'essaye de prendre en main le tutoriel correspondant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Sub RequeteClasseurFerme_Excel2007()
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset
 
    'Définit le classeur fermé servant de base de données
    Fichier = "C:\Documents and Settings\mimi\dossier\NomClasseur.xlsx"
    'Nom de la feuille dans le classeur fermé
    NomFeuille = "Feuil1"
 
    Set Cn = New ADODB.Connection
 
    '--- Connexion ---
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With
    '-----------------
 
 
    '
    '... la requête ...
    '
 
 
    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing
 
End Sub
Le souci, je suis sur EXCEL 2013 et il ne reconnaît pas le type de la première ligne.
Le message de VBA :
"Error Compilation : User-defined type not defined"

Des idees ?
Faut-il activer un add-on ?

Solution:
Il faut activer Microsoft ActiveX Data Objects 6.1 dans tools/Reference