vgendron
XLDnaute Barbatruc
Bonjour !
comme nombre d'entre nous, je souhaite copier coller des données de fichiers fermés vers le fichier actif
mes recherches m'ont amené à ce post:
j'ai adapté le code pour avoir le nombre de lignes de chaque fichier à importer, ainsi que les colonnes
ca fonctionne presque comme je veux: Ca n'importe que les données "numériques", et toutes les données alpha sont ignorées
apparemment l'argument "IMEX" est censé répondre au besoin.. sauf que. bah. ca ne fonctionne pas
sauriez vous m'aiguiller sur ce qui ne va pas?
notes: les fichiers sources sont générés automatiquement en amont==> impossible de modifier quoique ce soit, pas meme le format "standard" des colonnes
Merci
comme nombre d'entre nous, je souhaite copier coller des données de fichiers fermés vers le fichier actif
mes recherches m'ont amené à ce post:
Extraire certaines cellules de plusieurs fichiers fermés
Bonjour, je cherche à récupérer les cellules M12 à Q12 de ces 3 fichiers excel (qui sont fermés et dans un meme repertoire) et à les rapatrier dans un quatrieme fichier (de A1 a E1 pour les data du 1er fichier; de A2 à E2 pour les data du 2eme fichier; de A3 à E3 pour le troisieme.....) Je...
www.excel-downloads.com
j'ai adapté le code pour avoir le nombre de lignes de chaque fichier à importer, ainsi que les colonnes
VB:
Sub LireFichierFermé(xChemin, xFichier, xLig)
On Error GoTo SiErreur
Dim xTexte_SQL As String
Dim xOnglet As String
Dim xPlage As String
Application.ScreenUpdating = False
xOnglet = "Feuil1"
'Connexion ADO
Set Source = CreateObject("ADODB.Connection")
'Avant XL 2007
'Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & xChemin & "\" & xFichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
'Après XL 2007
'Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & xChemin & "\" & xFichier & ";Extended Properties=""Excel 12.0;HDR=NO;"";" 'IMEX=1";
Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & xChemin & "\" & xFichier & ";Extended Properties=""Excel 12.0;HDR=NO;IMEX=1"";" 'IMEX=1";
'on prépare la Requette pour avoir la dernière ligne du fichier
strQuery = "SELECT COUNT(*) FROM [" & xOnglet & "$]"
Set Requete = Source.Execute(strQuery) 'on execute la requete
derlign = Requete.Fields(0).Value + 1 'on récupère la dernière ligne
'on peut donc définir les variables
xPlage1 = "A6:B" & derlign
xPlage2 = "D6:D" & derlign
'Exerce la requete ADO sur les donnée à recopier
xTexte_SQL = "SELECT * FROM [" & xOnglet & "$" & xPlage1 & "]"
Set Requete = CreateObject("ADODB.Recordset")
Set Requete = Source.Execute(xTexte_SQL)
'Ecriture des données lues dans le fichier en cours
ActiveSheet.Range("E" & xLig).CopyFromRecordset Requete
'Exerce la requete ADO sur les donnée à recopier
xTexte_SQL$ = "SELECT * FROM [" & xOnglet & "$" & xPlage2 & "]"
Set Requete = CreateObject("ADODB.Recordset")
Set Requete = Source.Execute(xTexte_SQL$)
'Ecriture des données lues dans le fichier en cours
ActiveSheet.Range("G" & xLig).CopyFromRecordset Requete
'Ferme la requete
Set Requete = Nothing
Set Source = Nothing
Application.ScreenUpdating = True
Exit Sub
SiErreur:
MsgBox "Pas de feuille ""Feuil1"" dans le fichier " & xFichier, vbExclamation
End Sub
ca fonctionne presque comme je veux: Ca n'importe que les données "numériques", et toutes les données alpha sont ignorées
apparemment l'argument "IMEX" est censé répondre au besoin.. sauf que. bah. ca ne fonctionne pas
sauriez vous m'aiguiller sur ce qui ne va pas?
notes: les fichiers sources sont générés automatiquement en amont==> impossible de modifier quoique ce soit, pas meme le format "standard" des colonnes
Merci