Copier une plage de cellule dans fichier fermé

  • Initiateur de la discussion Initiateur de la discussion dONut
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

dONut

Guest
Bonjour tout le monde,

découvrant petit à petit excel et le VBA, je bloque sur une fonctionalité que je souhaiterais intégrer à un fichier excel sur lequel je travail actuellement.

voila j'ai un fichier actif, et je souhaiterais pouvoir en vba copier la plage de cellule A1:E15 (Feuill1) dans un fichier excel fermé (Feuill1, même plage de cellule).
J'ai trouvé pas mal d'exemple pour faire l'inverse (importé une plage à partir d'un fichier fermé), mais je ne vois pas comment utilisé une connection ADODB pour faire cette insertion.

Merci beaucoup pour votre aide.

Cdlt
 
Re : Copier une plage de cellule dans fichier fermé

bonjour Donut

Microsoft ActiveX Data Objects 2.x Library
doit être cochée dans Outils\Références du VBAProject.

Sub EcritDatas()
Dim Fich$, cell As Range

Fich = "d:\TestAdo.xls" 'à adapter

'écrit dans le classeur fermé la valeur des cellules A1:E15 du classeur actif
For Each cell In ActiveWorkbook.Sheets("Feuil1").Range("A1:E15")
SetExternalDatas Fich, "Feuil1", cell.Address(0, 0), cell.Text
Next

'écrit en F16 la date et l'heure de l'opération
SetExternalDatas Fich, "Feuil1", "A6", "mise à jour du " & Now

pour voir le résultat,décommenter
'DoEvents
'Workbooks.Open Fich

End Sub

Sub SetExternalDatas(DestFile As String, _
DestFeuille As String, _
DestCellAdr As String, _
DataToWrite As Variant)
Dim oConn As ADODB.Connection
Dim oCmd As ADODB.Command
Dim oRS As ADODB.Recordset
Dim RangeDest
'd'après Rob Bovey, mpep

' Open a connection to the Excel spreadsheet
Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & DestFile & ";" & _
"Extended Properties=""Excel 8.0;HDR=No;"";"

' Create a command object and set its ActiveConnection
Set oCmd = New ADODB.Command
oCmd.ActiveConnection = oConn

' This SQL statement selects a cell range in the "feuilleTest" worksheet.
'1 Sélection pour écrire dans une seule cellule
RangeDest = DestCellAdr & ":" & DestCellAdr
oCmd.CommandText = "SELECT * from `" & DestFeuille & "$" & RangeDest & "`"

' Open a recordset containing the worksheet data.
Set oRS = New ADODB.Recordset
oRS.Open oCmd, , adOpenKeyset, adLockOptimistic

' Update last row
oRS(0).Value = DataToWrite
oRS.Update

'Close the connection
oConn.Close
Set oConn = Nothing
Set oCmd = Nothing
Set oRS = Nothing

End Sub


à bientôt
 
Re : Copier une plage de cellule dans fichier fermé

Bonjour Bebere, merci pour ta réponse.

Je rencontre un problème au niveau de l'insertion :

"Le champ ne peut pas être mis à jour"
oRS(0).Value = DataToWrite

Ce qui est étrange c'est que les données sont copiées jusqu'à la ligne 5 (début de mon tableau, avec des cellules calculées etc).
Mes données copiées (nombres) sont également aux format texte, comment les forcer à prendre le format fixé dans le classeur d'origine ?

Cdlt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
879
Retour