Re : Copier un range d'un classeur fermé
Bonjour flyonets44,
Merci pour cette réponse.
En faite je n'ai pas autant de ligne que toi à copier dans le(s) classeur(s) fermé(s) (Varie entre une dizaine de lignes et au maximum une centaine)
De plus ces classeurs sont enregistrés sur un backup en réseau, ce qui entraine donc à chaque ouverture/fermeture un temps d'attente non négligeable. Que je souhaiterais supprimer.
J'ai trouvé un lien vers une solution réalisé par MichelXLD :
https://www.excel-downloads.com/threads/feuilles-dun-classeur-ferme-vers-le-classeur-acti.60415/
Mais je n'arrive pas à l'appliquer. Il me semble qu'il y as des problème de guillemet !!
Voila comment j'ai essayé de l'utiliser (dans une classeur test) :
Sub requeteFeuilleClasseurFerme()
'
'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library
'
'J'AI BIEN ACTIVER LES REFERENCE MICROSOFT ACTIVEX DATA OBJECT 6.0 LIBRARY
Dim Source As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim nomFeuille As String, fichier As String, texte_SQL As String
Dim i As Integer
nomFeuille = "Feuil1"
fichier = "C:\Users\ph\Desktop\Classeur1.xlsm"
Set Source = New ADODB.Connection
ET CI DESSOUS J'AI LE MESSAGE D'ERREUR : Erreur d'exécution '-2147467259 (80004005)': ...
Source.Open 'Provider = Microsoft.Jet.OLEDB.4.0;' & _
'data source=' & fichier & ';extended properties=''Excel 8.0;'''
texte_SQL = "SELECT * FROM [' & nomFeuille & '$]"
Set Rst = New ADODB.Recordset
Set Rst = Source.Execute(texte_SQL)
For i = 1 To Rst.Fields.Count
Cells(1, i) = Rst.Fields(i - 1).Name
Next i
Sheets(nomFeuille).Range("A2").CopyFromRecordset Rst 'import des données
Rst.Close
Source.Close
End Sub
Si quelqu'un as une solution !!
Merci d'avance.