-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit dans
le message de
news:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:0d5e01c3bb47$493a8570$a401280a@phx.gbl...
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit dans
le message de
news:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit dans
le message de
news:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:0d5e01c3bb47$493a8570$a401280a@phx.gbl...
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit dans
le message de
news:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tu
n'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:
oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message de
news:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit dans
le message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tu
n'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:
oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:01a101c3bb5d$27046d20$a301280a@phx.gbl...
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:0d5e01c3bb47$493a8570$a401280a@phx.gbl...
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tu
n'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:
oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message de
news:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit dans
le message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tu
n'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:
oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message de
news:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit dans
le message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tu
n'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:
oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:01a101c3bb5d$27046d20$a301280a@phx.gbl...
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" <anonymous@discussions.microsoft.com> a écrit dans
le message de
news:0d5e01c3bb47$493a8570$a401280a@phx.gbl...
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tu
n'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:
oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message de
news:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit dans
le message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
-----Message d'origine-----
Re moi;
Lorsque tu précises oRS.AddNew, tu demandes à écrire une
nouvelle ligne dans
laquelle oRS(0) est la première cellule, oRS(1) la
deuxième et ainsi de
suite sur la largeur de plage définie; ensuite,
oRS.Update entérine les
données que tu viens d'inscrire. Si tu veux ajouter une
nouvelle ligne, il
faut repréciser réitérer le processus avec oRS.AddNew
etc...
MP
a écrit dans le
message de
news:045a01c3bb72$0848a3f0$
Michel,
Premierement, je dois te dire que je maitrise pas trop ni
Excel, ni ADO, et que je suis désolé de te demander tout
ca, tu m'as deja bcp aidé et je t en remercie, parce que
j'ai posté sur bcp de forum, et tu es le seul a m avoir
repondu...
Peux tu me donner encore une toute ptite info...
Effectivement, ca le fait,mais ce que je craignais arriva,
a savoir, qu'il fait un movenext, et un addnew pour chaque
element, or, moi je veux insérer une ligne entiere, et non
un colonne...
En gros, il faudrait que je puisse definir une condition
genre : "si c la premiere cellule du lot, addnew, sinon,
insere dans la cellule a droite"
Si j'ai bien compris, pour inserer sur une seul ligne,
je dois utiliser ors(0),ors(1),etc...
Le pb, c qu'il me sort une erreur sur:
ors(1).valueÚtatowrite
en me disant En Francais (donc d'origine ODBC, j'imagine
puisque je l'ai ajouté en francais,et que le systeme est
espagnol)
"Impossible de trouver l'objet dans la collection
correspondant au nom ou a la reference ordinale (1)
demandé", en gros, il existe pas ors(1)...
Et moi, je m'y perds un peu, mais pire, je me sens un peu
démuni :)
Bref, je continue, je continue, et merci pour ton aide...
Julien-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tun'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message denews:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis
au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit
dans
le message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
lignedu fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
.
-----Message d'origine-----
Re moi;
Lorsque tu précises oRS.AddNew, tu demandes à écrire une
nouvelle ligne dans
laquelle oRS(0) est la première cellule, oRS(1) la
deuxième et ainsi de
suite sur la largeur de plage définie; ensuite,
oRS.Update entérine les
données que tu viens d'inscrire. Si tu veux ajouter une
nouvelle ligne, il
faut repréciser réitérer le processus avec oRS.AddNew
etc...
MP
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:045a01c3bb72$0848a3f0$a101280a@phx.gbl...
Michel,
Premierement, je dois te dire que je maitrise pas trop ni
Excel, ni ADO, et que je suis désolé de te demander tout
ca, tu m'as deja bcp aidé et je t en remercie, parce que
j'ai posté sur bcp de forum, et tu es le seul a m avoir
repondu...
Peux tu me donner encore une toute ptite info...
Effectivement, ca le fait,mais ce que je craignais arriva,
a savoir, qu'il fait un movenext, et un addnew pour chaque
element, or, moi je veux insérer une ligne entiere, et non
un colonne...
En gros, il faudrait que je puisse definir une condition
genre : "si c la premiere cellule du lot, addnew, sinon,
insere dans la cellule a droite"
Si j'ai bien compris, pour inserer sur une seul ligne,
je dois utiliser ors(0),ors(1),etc...
Le pb, c qu'il me sort une erreur sur:
ors(1).value=datatowrite
en me disant En Francais (donc d'origine ODBC, j'imagine
puisque je l'ai ajouté en francais,et que le systeme est
espagnol)
"Impossible de trouver l'objet dans la collection
correspondant au nom ou a la reference ordinale (1)
demandé", en gros, il existe pas ors(1)...
Et moi, je m'y perds un peu, mais pire, je me sens un peu
démuni :)
Bref, je continue, je continue, et merci pour ton aide...
Julien
-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tu
n'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:
oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:01a101c3bb5d$27046d20$a301280a@phx.gbl...
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis
au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" <anonymous@discussions.microsoft.com> a écrit
dans
le message de
news:0d5e01c3bb47$493a8570$a401280a@phx.gbl...
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
.
-----Message d'origine-----
Re moi;
Lorsque tu précises oRS.AddNew, tu demandes à écrire une
nouvelle ligne dans
laquelle oRS(0) est la première cellule, oRS(1) la
deuxième et ainsi de
suite sur la largeur de plage définie; ensuite,
oRS.Update entérine les
données que tu viens d'inscrire. Si tu veux ajouter une
nouvelle ligne, il
faut repréciser réitérer le processus avec oRS.AddNew
etc...
MP
a écrit dans le
message de
news:045a01c3bb72$0848a3f0$
Michel,
Premierement, je dois te dire que je maitrise pas trop ni
Excel, ni ADO, et que je suis désolé de te demander tout
ca, tu m'as deja bcp aidé et je t en remercie, parce que
j'ai posté sur bcp de forum, et tu es le seul a m avoir
repondu...
Peux tu me donner encore une toute ptite info...
Effectivement, ca le fait,mais ce que je craignais arriva,
a savoir, qu'il fait un movenext, et un addnew pour chaque
element, or, moi je veux insérer une ligne entiere, et non
un colonne...
En gros, il faudrait que je puisse definir une condition
genre : "si c la premiere cellule du lot, addnew, sinon,
insere dans la cellule a droite"
Si j'ai bien compris, pour inserer sur une seul ligne,
je dois utiliser ors(0),ors(1),etc...
Le pb, c qu'il me sort une erreur sur:
ors(1).valueÚtatowrite
en me disant En Francais (donc d'origine ODBC, j'imagine
puisque je l'ai ajouté en francais,et que le systeme est
espagnol)
"Impossible de trouver l'objet dans la collection
correspondant au nom ou a la reference ordinale (1)
demandé", en gros, il existe pas ors(1)...
Et moi, je m'y perds un peu, mais pire, je me sens un peu
démuni :)
Bref, je continue, je continue, et merci pour ton aide...
Julien-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tun'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message denews:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis
au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit
dans
le message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
lignedu fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
.
-----Message d'origine-----
Re moi;
Lorsque tu précises oRS.AddNew, tu demandes à écrire une
nouvelle ligne dans
laquelle oRS(0) est la première cellule, oRS(1) la
deuxième et ainsi de
suite sur la largeur de plage définie; ensuite,
oRS.Update entérine les
données que tu viens d'inscrire. Si tu veux ajouter une
nouvelle ligne, il
faut repréciser réitérer le processus avec oRS.AddNew
etc...
MP
a écrit dans le
message de
news:045a01c3bb72$0848a3f0$
Michel,
Premierement, je dois te dire que je maitrise pas trop ni
Excel, ni ADO, et que je suis désolé de te demander tout
ca, tu m'as deja bcp aidé et je t en remercie, parce que
j'ai posté sur bcp de forum, et tu es le seul a m avoir
repondu...
Peux tu me donner encore une toute ptite info...
Effectivement, ca le fait,mais ce que je craignais arriva,
a savoir, qu'il fait un movenext, et un addnew pour chaque
element, or, moi je veux insérer une ligne entiere, et non
un colonne...
En gros, il faudrait que je puisse definir une condition
genre : "si c la premiere cellule du lot, addnew, sinon,
insere dans la cellule a droite"
Si j'ai bien compris, pour inserer sur une seul ligne,
je dois utiliser ors(0),ors(1),etc...
Le pb, c qu'il me sort une erreur sur:
ors(1).valueÚtatowrite
en me disant En Francais (donc d'origine ODBC, j'imagine
puisque je l'ai ajouté en francais,et que le systeme est
espagnol)
"Impossible de trouver l'objet dans la collection
correspondant au nom ou a la reference ordinale (1)
demandé", en gros, il existe pas ors(1)...
Et moi, je m'y perds un peu, mais pire, je me sens un peu
démuni :)
Bref, je continue, je continue, et merci pour ton aide...
Julien-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tun'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message denews:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis
au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit
dans
le message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
lignedu fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
.
-----Message d'origine-----
Re moi;
Lorsque tu précises oRS.AddNew, tu demandes à écrire une
nouvelle ligne dans
laquelle oRS(0) est la première cellule, oRS(1) la
deuxième et ainsi de
suite sur la largeur de plage définie; ensuite,
oRS.Update entérine les
données que tu viens d'inscrire. Si tu veux ajouter une
nouvelle ligne, il
faut repréciser réitérer le processus avec oRS.AddNew
etc...
MP
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:045a01c3bb72$0848a3f0$a101280a@phx.gbl...
Michel,
Premierement, je dois te dire que je maitrise pas trop ni
Excel, ni ADO, et que je suis désolé de te demander tout
ca, tu m'as deja bcp aidé et je t en remercie, parce que
j'ai posté sur bcp de forum, et tu es le seul a m avoir
repondu...
Peux tu me donner encore une toute ptite info...
Effectivement, ca le fait,mais ce que je craignais arriva,
a savoir, qu'il fait un movenext, et un addnew pour chaque
element, or, moi je veux insérer une ligne entiere, et non
un colonne...
En gros, il faudrait que je puisse definir une condition
genre : "si c la premiere cellule du lot, addnew, sinon,
insere dans la cellule a droite"
Si j'ai bien compris, pour inserer sur une seul ligne,
je dois utiliser ors(0),ors(1),etc...
Le pb, c qu'il me sort une erreur sur:
ors(1).valueÚtatowrite
en me disant En Francais (donc d'origine ODBC, j'imagine
puisque je l'ai ajouté en francais,et que le systeme est
espagnol)
"Impossible de trouver l'objet dans la collection
correspondant au nom ou a la reference ordinale (1)
demandé", en gros, il existe pas ors(1)...
Et moi, je m'y perds un peu, mais pire, je me sens un peu
démuni :)
Bref, je continue, je continue, et merci pour ton aide...
Julien
-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tu
n'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:
oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:01a101c3bb5d$27046d20$a301280a@phx.gbl...
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis
au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" <anonymous@discussions.microsoft.com> a écrit
dans
le message de
news:0d5e01c3bb47$493a8570$a401280a@phx.gbl...
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
.
-----Message d'origine-----
Re moi;
Lorsque tu précises oRS.AddNew, tu demandes à écrire une
nouvelle ligne dans
laquelle oRS(0) est la première cellule, oRS(1) la
deuxième et ainsi de
suite sur la largeur de plage définie; ensuite,
oRS.Update entérine les
données que tu viens d'inscrire. Si tu veux ajouter une
nouvelle ligne, il
faut repréciser réitérer le processus avec oRS.AddNew
etc...
MP
a écrit dans le
message de
news:045a01c3bb72$0848a3f0$
Michel,
Premierement, je dois te dire que je maitrise pas trop ni
Excel, ni ADO, et que je suis désolé de te demander tout
ca, tu m'as deja bcp aidé et je t en remercie, parce que
j'ai posté sur bcp de forum, et tu es le seul a m avoir
repondu...
Peux tu me donner encore une toute ptite info...
Effectivement, ca le fait,mais ce que je craignais arriva,
a savoir, qu'il fait un movenext, et un addnew pour chaque
element, or, moi je veux insérer une ligne entiere, et non
un colonne...
En gros, il faudrait que je puisse definir une condition
genre : "si c la premiere cellule du lot, addnew, sinon,
insere dans la cellule a droite"
Si j'ai bien compris, pour inserer sur une seul ligne,
je dois utiliser ors(0),ors(1),etc...
Le pb, c qu'il me sort une erreur sur:
ors(1).valueÚtatowrite
en me disant En Francais (donc d'origine ODBC, j'imagine
puisque je l'ai ajouté en francais,et que le systeme est
espagnol)
"Impossible de trouver l'objet dans la collection
correspondant au nom ou a la reference ordinale (1)
demandé", en gros, il existe pas ors(1)...
Et moi, je m'y perds un peu, mais pire, je me sens un peu
démuni :)
Bref, je continue, je continue, et merci pour ton aide...
Julien-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tun'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message denews:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis
au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit
dans
le message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
lignedu fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
.
Encore moi;
Est-ce que par hasard, ton fichier est vierge ?
Il faut que dans le fichier dans lequel tu veux écrire, qu'au minimum, la
cellule A1 contienne une valeur.
MP
a écrit dans le message de
news:038301c3bb78$b10f37a0$
J'ai compris ca...
Mais il prends bien ors(0), mais des que j'essaie
d'affecter une valeur a ors(x) ou x>0, il plante en disant
le message que je t'ai mis sur le message precedent.
Pt etre bien que c comme les tableau, et qu'il faut que je
declare la taille de ors, mais je sais pas ou le faire....
En tout cas, tu dois pas etre loin de te coucher, alors
Bonne nuit (ici, il est 15.40 alors on continue a bosser :(
A+-----Message d'origine-----
Re moi;
Lorsque tu précises oRS.AddNew, tu demandes à écrire une
nouvelle ligne danslaquelle oRS(0) est la première cellule, oRS(1) la
deuxième et ainsi desuite sur la largeur de plage définie; ensuite,
oRS.Update entérine lesdonnées que tu viens d'inscrire. Si tu veux ajouter une
nouvelle ligne, ilfaut repréciser réitérer le processus avec oRS.AddNew
etc...MP
a écrit dans le
message denews:045a01c3bb72$0848a3f0$
Michel,
Premierement, je dois te dire que je maitrise pas trop ni
Excel, ni ADO, et que je suis désolé de te demander tout
ca, tu m'as deja bcp aidé et je t en remercie, parce que
j'ai posté sur bcp de forum, et tu es le seul a m avoir
repondu...
Peux tu me donner encore une toute ptite info...
Effectivement, ca le fait,mais ce que je craignais arriva,
a savoir, qu'il fait un movenext, et un addnew pour chaque
element, or, moi je veux insérer une ligne entiere, et non
un colonne...
En gros, il faudrait que je puisse definir une condition
genre : "si c la premiere cellule du lot, addnew, sinon,
insere dans la cellule a droite"
Si j'ai bien compris, pour inserer sur une seul ligne,
je dois utiliser ors(0),ors(1),etc...
Le pb, c qu'il me sort une erreur sur:
ors(1).valueÚtatowrite
en me disant En Francais (donc d'origine ODBC, j'imagine
puisque je l'ai ajouté en francais,et que le systeme est
espagnol)
"Impossible de trouver l'objet dans la collection
correspondant au nom ou a la reference ordinale (1)
demandé", en gros, il existe pas ors(1)...
Et moi, je m'y perds un peu, mais pire, je me sens un peu
démuni :)
Bref, je continue, je continue, et merci pour ton aide...
Julien-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tun'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message denews:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis
aumexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit
dansle message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
lignedu fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
.
Encore moi;
Est-ce que par hasard, ton fichier est vierge ?
Il faut que dans le fichier dans lequel tu veux écrire, qu'au minimum, la
cellule A1 contienne une valeur.
MP
<anonymous@discussions.microsoft.com> a écrit dans le message de
news:038301c3bb78$b10f37a0$a301280a@phx.gbl...
J'ai compris ca...
Mais il prends bien ors(0), mais des que j'essaie
d'affecter une valeur a ors(x) ou x>0, il plante en disant
le message que je t'ai mis sur le message precedent.
Pt etre bien que c comme les tableau, et qu'il faut que je
declare la taille de ors, mais je sais pas ou le faire....
En tout cas, tu dois pas etre loin de te coucher, alors
Bonne nuit (ici, il est 15.40 alors on continue a bosser :(
A+
-----Message d'origine-----
Re moi;
Lorsque tu précises oRS.AddNew, tu demandes à écrire une
nouvelle ligne dans
laquelle oRS(0) est la première cellule, oRS(1) la
deuxième et ainsi de
suite sur la largeur de plage définie; ensuite,
oRS.Update entérine les
données que tu viens d'inscrire. Si tu veux ajouter une
nouvelle ligne, il
faut repréciser réitérer le processus avec oRS.AddNew
etc...
MP
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:045a01c3bb72$0848a3f0$a101280a@phx.gbl...
Michel,
Premierement, je dois te dire que je maitrise pas trop ni
Excel, ni ADO, et que je suis désolé de te demander tout
ca, tu m'as deja bcp aidé et je t en remercie, parce que
j'ai posté sur bcp de forum, et tu es le seul a m avoir
repondu...
Peux tu me donner encore une toute ptite info...
Effectivement, ca le fait,mais ce que je craignais arriva,
a savoir, qu'il fait un movenext, et un addnew pour chaque
element, or, moi je veux insérer une ligne entiere, et non
un colonne...
En gros, il faudrait que je puisse definir une condition
genre : "si c la premiere cellule du lot, addnew, sinon,
insere dans la cellule a droite"
Si j'ai bien compris, pour inserer sur une seul ligne,
je dois utiliser ors(0),ors(1),etc...
Le pb, c qu'il me sort une erreur sur:
ors(1).valueÚtatowrite
en me disant En Francais (donc d'origine ODBC, j'imagine
puisque je l'ai ajouté en francais,et que le systeme est
espagnol)
"Impossible de trouver l'objet dans la collection
correspondant au nom ou a la reference ordinale (1)
demandé", en gros, il existe pas ors(1)...
Et moi, je m'y perds un peu, mais pire, je me sens un peu
démuni :)
Bref, je continue, je continue, et merci pour ton aide...
Julien
-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tu
n'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:
oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:01a101c3bb5d$27046d20$a301280a@phx.gbl...
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis
au
mexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update
-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" <anonymous@discussions.microsoft.com> a écrit
dans
le message de
news:0d5e01c3bb47$493a8570$a401280a@phx.gbl...
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
ligne
du fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
.
Encore moi;
Est-ce que par hasard, ton fichier est vierge ?
Il faut que dans le fichier dans lequel tu veux écrire, qu'au minimum, la
cellule A1 contienne une valeur.
MP
a écrit dans le message de
news:038301c3bb78$b10f37a0$
J'ai compris ca...
Mais il prends bien ors(0), mais des que j'essaie
d'affecter une valeur a ors(x) ou x>0, il plante en disant
le message que je t'ai mis sur le message precedent.
Pt etre bien que c comme les tableau, et qu'il faut que je
declare la taille de ors, mais je sais pas ou le faire....
En tout cas, tu dois pas etre loin de te coucher, alors
Bonne nuit (ici, il est 15.40 alors on continue a bosser :(
A+-----Message d'origine-----
Re moi;
Lorsque tu précises oRS.AddNew, tu demandes à écrire une
nouvelle ligne danslaquelle oRS(0) est la première cellule, oRS(1) la
deuxième et ainsi desuite sur la largeur de plage définie; ensuite,
oRS.Update entérine lesdonnées que tu viens d'inscrire. Si tu veux ajouter une
nouvelle ligne, ilfaut repréciser réitérer le processus avec oRS.AddNew
etc...MP
a écrit dans le
message denews:045a01c3bb72$0848a3f0$
Michel,
Premierement, je dois te dire que je maitrise pas trop ni
Excel, ni ADO, et que je suis désolé de te demander tout
ca, tu m'as deja bcp aidé et je t en remercie, parce que
j'ai posté sur bcp de forum, et tu es le seul a m avoir
repondu...
Peux tu me donner encore une toute ptite info...
Effectivement, ca le fait,mais ce que je craignais arriva,
a savoir, qu'il fait un movenext, et un addnew pour chaque
element, or, moi je veux insérer une ligne entiere, et non
un colonne...
En gros, il faudrait que je puisse definir une condition
genre : "si c la premiere cellule du lot, addnew, sinon,
insere dans la cellule a droite"
Si j'ai bien compris, pour inserer sur une seul ligne,
je dois utiliser ors(0),ors(1),etc...
Le pb, c qu'il me sort une erreur sur:
ors(1).valueÚtatowrite
en me disant En Francais (donc d'origine ODBC, j'imagine
puisque je l'ai ajouté en francais,et que le systeme est
espagnol)
"Impossible de trouver l'objet dans la collection
correspondant au nom ou a la reference ordinale (1)
demandé", en gros, il existe pas ors(1)...
Et moi, je m'y perds un peu, mais pire, je me sens un peu
démuni :)
Bref, je continue, je continue, et merci pour ton aide...
Julien-----Message d'origine-----
Re;
C'est probablement ta définition de RangeDest qui n'est
pas bonne; si tun'as qu'une feuille, laisse tomber DestFeuille et essaie
avec:oCmd.CommandText = "SELECT * FROM `A1:IV65536`"
MP
a écrit dans le
message denews:01a101c3bb5d$27046d20$
Michel, ya quelque chose de bon avec ce que tu me dis,
dans la mesure ou sur mon premier test, il m'a remplacé
une valeur, mais il a inséré la date la ou je voulais,
mais apres plus rien, et il me donne une erreur :
"No se puede expandir el intervalo con nombre" (je suis
aumexique),
ce qui signifie :
"On ne peut pas développer l'intervalle avec nom"
sur ton code que j'essaie d'adapter...
Mais je bataille grave sur cette erreur...
Merci pour tes conseils, j'espere y arriver dans pas trop
longtemps...
a+
oRS.MoveLast
'oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
'oRS(1).Value = DataToWrite
'oRS(2).Value = 9
oRS.Update-----Message d'origine-----
Salut Xoco;
Essaie avec :
'* Update Row
oRS.MoveLast
oRS(0).Value = DataToWrite
oRS.Update
'* Add a new row
oRS.AddNew
oRS(0).Value = Date
oRS(1).Value = DataToWrite
oRS(2).Value = 9
oRS.Update
MP
"Xoco" a écrit
dansle message denews:0d5e01c3bb47$493a8570$
Bonjour a tous,
Je cherche a ecrire dans un fichier fermé mais a un
emplacement dynamique, comme la derniere ligne...
grace a la macro de Rob Bovey, je sais ecrire dans un
fichier fermé en utilisant la connexion ADO, mais je ne
sais comment faire pour me positionner a la derniere
lignedu fichier fermé
voici le code de Rob Bovey
' 2 - Ecrire dans un classeur fermé
Sub EcritDatas()
Dim Fich$, cell As Range
Fich = "d:TestAdo.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:A5")
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
'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=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
Si vous avez une idee,
Meilleurs salutations...
Xoco
.
.
.