Bonjour,
Je viens de récupérer une macro sur le très bon site de Frederic Sigonneau.
Celle-ci permet de récupérer l'ensemble des données d'un feuille Excel dans un classeur fermé. J'arrive à l'adapter pour mes besoins sauf que je viens de remarquer un "bug".
Lorsque j'ai une colonne avec plusieurs formats de cellule un des formats n'est pas récupéré.
Dans mon exemple en PJ la date n'est pas récupérée dans le fichier donnee.xls
Pouvez vous m'apporter votre aide SVP.
Merci
Je viens de récupérer une macro sur le très bon site de Frederic Sigonneau.
Celle-ci permet de récupérer l'ensemble des données d'un feuille Excel dans un classeur fermé. J'arrive à l'adapter pour mes besoins sauf que je viens de remarquer un "bug".
Lorsque j'ai une colonne avec plusieurs formats de cellule un des formats n'est pas récupéré.
Dans mon exemple en PJ la date n'est pas récupérée dans le fichier donnee.xls
Pouvez vous m'apporter votre aide SVP.
Merci
'Attribute VB_Name = "ADOImporterFeuilleEntiere"
'importer le contenu d'une feuille de calcul d'un classeur fermé
'(seules les données sont importées, pas les mises en forme)
Sub recup()
fich$ = ThisWorkbook.Path & "\donnees.xls"
Feuille$ = "Donnees"
QueryWorksheet fich, Feuille
End Sub
Public Sub QueryWorksheet(NomFichier$, Feuille$)
'Rob Bovey, mpep
'nécessite une référence à la librairie
'Microsoft ActiveX Data Object 2.x Library
Dim rsData As ADODB.Recordset
Dim szConnect As String
Dim szSQL As String
''' Crée la chaîne de connexion
szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & NomFichier & ";" & _
"Extended Properties=Excel 8.0;"
' La requête est basée sur le nom de la feuille. Ce nom
' doit se terminer par un $ et doit être entouré de crochets droits.
' Adapter ce nom à vos besoins
szSQL = "SELECT * FROM [" & Feuille & "$];"
Set rsData = New ADODB.Recordset
rsData.Open szSQL, szConnect, adOpenForwardOnly, _
adLockReadOnly, adCmdText
''' Vérifie qu'on a bien reçu des données
If Not rsData.EOF Then
Sheets("Recup").Range("A1").CopyFromRecordset rsData
Else
MsgBox "Aucun enregistrement renvoyé.", vbCritical
End If
''' On nettoie pour finir...
rsData.Close
Set rsData = Nothing
End Sub