Ecrire dans fichier fermer

  • Initiateur de la discussion Tonio93
  • Date de début
T

Tonio93

Guest
Bonsoir le forum

Je viens solliciter votre aide, car après avoir conçu une petite application sous Excel
(Qui fonctionne très bien). Je voudrais pouvoir l’utiliser à partir d’un fichier fermé.(Classeur)
J’ai recherche sur le site et sur le web des demos, qui mon conduit au code ci joint dans le classeur.
J’ai réussi à importer mes données mais je n’arrive pas à écrire dans le fichier fermé.
En deux mots je voudrais importer les données d’une feuil (Feuil1) du fichier fermé, les traiter, modifier et réimporter la feuil modifier dans le classeur fermer.
Dans le code du classeur ci joint je n’arrive pas a comprendre a quoi correspond « DataToWrite »
Si quelqu’un peut m’aider.
Par avance merci ..
 
T

Tonio

Guest
Désolée il ne veut pas passer, pourtant il ne fait que 11Ko et pas de truc bizarre (Essai).
Voici quand même le code……..

' 2 - Ecrire dans un classeur fermé

Sub EcritDatas()
Dim Fich$, cell As Range

Fich = ThisWorkbook.Path & '\\Base de données.xls;' 'à adapter

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

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

'on regarde le résultat
DoEvents
Workbooks.Open Fich

End Sub

'écrit DataToWrite dans la cellule DestCellAdr
'de la feuille DestFeuille du classeur fermé DestFile
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=yes;'';'

' 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
 
T

Tonio

Guest
Désolée il ne veut pas passer, pourtant il ne fait que 11Ko et pas de truc bizarre (Essai).
Voici quand même le code……..

' 2 - Ecrire dans un classeur fermé

Sub EcritDatas()
Dim Fich$, cell As Range

Fich = ThisWorkbook.Path & '\\Base de données.xls;' 'à adapter

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

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

'on regarde le résultat
DoEvents
Workbooks.Open Fich

End Sub

'écrit DataToWrite dans la cellule DestCellAdr
'de la feuille DestFeuille du classeur fermé DestFile
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=yes;'';'

' 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
 

MichelXld

XLDnaute Barbatruc
Re:Ecrire dans fichier fermé

bonjour Tonio

ton fichier doit etre zippé ( avec WinZip ), de taille inferieure à 50 ko , sans espaces ni caracteres speciaux dans le nom ( é ,è , ç , à , ...etc ...)

dans la demo de Rob Bovey DataToWrite correspond à la donnée qui va s'inscrire dans les cellules du classeur fermé

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

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


tu trouveras d'autres exemples dans ce lien

Lien supprimé



bonne journée
MichelXld
 
T

Tonio

Guest
Re:Ecrire dans fichier fermé

Bonsoir le Forum, Bonsoir MichelXld


C’est bien se que je pensais (Je pense avoir compris), cela dit je ne comprends pas pour quoi j’ai le message d’erreur 3021 qui dit :

BOF ou EOF est égal à true ou l’enregistrement actuel a été supprimé.
L’opération demandée nécessite un enregistrement actuel.

Pourrais-tu m’aider la dessus.
J’essaye de te joindre le fichier une nouvelle fois.
(Nom du fichier = EssaI_Import_Export de taille = 17Ko)

D’avance Merci


A + Tonio………
[file name=EssaI_Import_Export.zip size=16659]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/EssaI_Import_Export.zip[/file]
 

Pièces jointes

  • EssaI_Import_Export.zip
    16.3 KB · Affichages: 16
T

Tonio

Guest
Re:Ecrire dans fichier fermé

Bonjour MichelXld, Bonjour le forum

J’ai modifié le code et j’ai réussi à exporter correctement avec un petit fichier, mais malheureusement avec un grand il plante ou il me met le message d’erreur
« Le type ne correspond pas »
Je rejoins un nouveau fichier plus important.

Si quelqu’un peut m’aider

Merci d’avance………
[file name=EssaI_Import_Export_20050816080630.zip size=28687]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/EssaI_Import_Export_20050816080630.zip[/file]
 

Pièces jointes

  • EssaI_Import_Export_20050816080630.zip
    28 KB · Affichages: 14
T

Tonio

Guest
Re:Ecrire dans fichier fermé

Bonjour MichelXld, Bonjour le forum

J’ai modifié le code et j’ai réussi à exporter correctement avec un petit fichier, mais malheureusement avec un grand il plante ou il me met le message d’erreur
« Le type ne correspond pas »
Je rejoins un nouveau fichier plus important.

Si quelqu’un peut m’aider

Merci d’avance………
[file name=EssaI_Import_Export_20050816080642.zip size=28687]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/EssaI_Import_Export_20050816080642.zip[/file]
 

Pièces jointes

  • EssaI_Import_Export_20050816080642.zip
    28 KB · Affichages: 25

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 689
Membres
103 639
dernier inscrit
NIEMASAFI