Bonjour Pcvsfr,
Ceci permet de recopier un recordset vers une plage
de cellules de ton choix. Permet jusqu'à 32767 caractères
par cellules.
La difficulté, ce n'est pas le recordset avec ADO mais la
recopie vers la feuille de calcul.
'---------------------------------------
Sub ImporterAccessVersExcel()
Dim Tblo As Variant
Dim C As Integer, Requete As String
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim RG As Range, Requete As String
Dim Chemin As String, NomFeuille As String
'Feuille et plage recevant les données du recordset
With Worksheets("Feuil3")
Set RG = Range("A1")
End With
Chemin = "c:"
file = "Ado.xls"
NomFeuille = "Feuil1" 'La feuille source des données
Requete = "SELECT * From [" & NomFeuille & "$]"
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenStatic, adLockPessimistic
nb = Rst.RecordCount
If nb = 0 Then
MsgBox "Aucun enregistrement trouvé."
Exit Sub
End If
'Copie le nom des champs dans la première ligne
Do
RG.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Tblo = Rst.GetRows
Set RG = RG.Offset(1).Resize(nb, Rst.Fields.Count)
For A = 0 To UBound(Tblo, 1)
For B = 0 To UBound(Tblo, 2)
RG.Offset(B, A).Value = Tblo(A, B)
Next
Next
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing : Set Rg = Nothing
End Sub
'---------------------------------------
Salutations!
"pcvsfr" a écrit dans le message de news:
Bonjour,
Voila je modifie via ADO un fichier excel, la requete fonctionne et je
recupére les collections field
ensuite j'affecte une variable aux collections fields de cette facon
externe.Fields("commentaires").Value = commentaire
dans le but de modifier les valeurs
La modification se passe bien sauf que dans certains cas j'ai des
commentaires supérieur a 255 caractéres et il ne le prend pas
j'ai essaye de modifier le type de variable et d'augmenter la taille
possible j'ai utilise le code suivant
Set externe = New ADODB.Recordset
Set externe = New Recordset
externe.Fields.Append "Montant DI", adLongVarChar, 5000
mais les valeurs ne changent pas
Quelqu'un aurait il une idee ?
Bonjour Pcvsfr,
Ceci permet de recopier un recordset vers une plage
de cellules de ton choix. Permet jusqu'à 32767 caractères
par cellules.
La difficulté, ce n'est pas le recordset avec ADO mais la
recopie vers la feuille de calcul.
'---------------------------------------
Sub ImporterAccessVersExcel()
Dim Tblo As Variant
Dim C As Integer, Requete As String
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim RG As Range, Requete As String
Dim Chemin As String, NomFeuille As String
'Feuille et plage recevant les données du recordset
With Worksheets("Feuil3")
Set RG = Range("A1")
End With
Chemin = "c:"
file = "Ado.xls"
NomFeuille = "Feuil1" 'La feuille source des données
Requete = "SELECT * From [" & NomFeuille & "$]"
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenStatic, adLockPessimistic
nb = Rst.RecordCount
If nb = 0 Then
MsgBox "Aucun enregistrement trouvé."
Exit Sub
End If
'Copie le nom des champs dans la première ligne
Do
RG.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Tblo = Rst.GetRows
Set RG = RG.Offset(1).Resize(nb, Rst.Fields.Count)
For A = 0 To UBound(Tblo, 1)
For B = 0 To UBound(Tblo, 2)
RG.Offset(B, A).Value = Tblo(A, B)
Next
Next
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing : Set Rg = Nothing
End Sub
'---------------------------------------
Salutations!
"pcvsfr" <pcvsfr@discussions.microsoft.com> a écrit dans le message de news: FD00E624-D6AF-46CA-BFC0-40852E810292@microsoft.com...
Bonjour,
Voila je modifie via ADO un fichier excel, la requete fonctionne et je
recupére les collections field
ensuite j'affecte une variable aux collections fields de cette facon
externe.Fields("commentaires").Value = commentaire
dans le but de modifier les valeurs
La modification se passe bien sauf que dans certains cas j'ai des
commentaires supérieur a 255 caractéres et il ne le prend pas
j'ai essaye de modifier le type de variable et d'augmenter la taille
possible j'ai utilise le code suivant
Set externe = New ADODB.Recordset
Set externe = New Recordset
externe.Fields.Append "Montant DI", adLongVarChar, 5000
mais les valeurs ne changent pas
Quelqu'un aurait il une idee ?
Bonjour Pcvsfr,
Ceci permet de recopier un recordset vers une plage
de cellules de ton choix. Permet jusqu'à 32767 caractères
par cellules.
La difficulté, ce n'est pas le recordset avec ADO mais la
recopie vers la feuille de calcul.
'---------------------------------------
Sub ImporterAccessVersExcel()
Dim Tblo As Variant
Dim C As Integer, Requete As String
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim RG As Range, Requete As String
Dim Chemin As String, NomFeuille As String
'Feuille et plage recevant les données du recordset
With Worksheets("Feuil3")
Set RG = Range("A1")
End With
Chemin = "c:"
file = "Ado.xls"
NomFeuille = "Feuil1" 'La feuille source des données
Requete = "SELECT * From [" & NomFeuille & "$]"
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenStatic, adLockPessimistic
nb = Rst.RecordCount
If nb = 0 Then
MsgBox "Aucun enregistrement trouvé."
Exit Sub
End If
'Copie le nom des champs dans la première ligne
Do
RG.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Tblo = Rst.GetRows
Set RG = RG.Offset(1).Resize(nb, Rst.Fields.Count)
For A = 0 To UBound(Tblo, 1)
For B = 0 To UBound(Tblo, 2)
RG.Offset(B, A).Value = Tblo(A, B)
Next
Next
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing : Set Rg = Nothing
End Sub
'---------------------------------------
Salutations!
"pcvsfr" a écrit dans le message de news:
Bonjour,
Voila je modifie via ADO un fichier excel, la requete fonctionne et je
recupére les collections field
ensuite j'affecte une variable aux collections fields de cette facon
externe.Fields("commentaires").Value = commentaire
dans le but de modifier les valeurs
La modification se passe bien sauf que dans certains cas j'ai des
commentaires supérieur a 255 caractéres et il ne le prend pas
j'ai essaye de modifier le type de variable et d'augmenter la taille
possible j'ai utilise le code suivant
Set externe = New ADODB.Recordset
Set externe = New Recordset
externe.Fields.Append "Montant DI", adLongVarChar, 5000
mais les valeurs ne changent pas
Quelqu'un aurait il une idee ?
merci michdenis de ton aide
mais mon problème n'est pas d'exporter des cellules vers EXCEL, j'essaie de
m'expliquer plus clairement
j'ai un fichier que j'envoie a x personnes, c'est personnes doivent mettre à
jour les informations, ensuite c'est informations sont envoyés sur un autre
fichier excel via ADO.
Mon problème est que j'ai une case commentaires et quelle peut contenir plus
de 255 caractères
or ADO n'en prend que 255
Je cherche donc a pouvoir modifier le type de caratere ou la logueur de la
chaine
D'autres part j'ai repris ton code et il n'exporte pas non plus des chaines
superieures à 255 caractère
Merci de ton aideBonjour Pcvsfr,
Ceci permet de recopier un recordset vers une plage
de cellules de ton choix. Permet jusqu'à 32767 caractères
par cellules.
La difficulté, ce n'est pas le recordset avec ADO mais la
recopie vers la feuille de calcul.
'---------------------------------------
Sub ImporterAccessVersExcel()
Dim Tblo As Variant
Dim C As Integer, Requete As String
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim RG As Range, Requete As String
Dim Chemin As String, NomFeuille As String
'Feuille et plage recevant les données du recordset
With Worksheets("Feuil3")
Set RG = Range("A1")
End With
Chemin = "c:"
file = "Ado.xls"
NomFeuille = "Feuil1" 'La feuille source des données
Requete = "SELECT * From [" & NomFeuille & "$]"
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenStatic, adLockPessimistic
nb = Rst.RecordCount
If nb = 0 Then
MsgBox "Aucun enregistrement trouvé."
Exit Sub
End If
'Copie le nom des champs dans la première ligne
Do
RG.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Tblo = Rst.GetRows
Set RG = RG.Offset(1).Resize(nb, Rst.Fields.Count)
For A = 0 To UBound(Tblo, 1)
For B = 0 To UBound(Tblo, 2)
RG.Offset(B, A).Value = Tblo(A, B)
Next
Next
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing : Set Rg = Nothing
End Sub
'---------------------------------------
Salutations!
"pcvsfr" a écrit dans le message de news:
Bonjour,
Voila je modifie via ADO un fichier excel, la requete fonctionne et je
recupére les collections field
ensuite j'affecte une variable aux collections fields de cette facon
externe.Fields("commentaires").Value = commentaire
dans le but de modifier les valeurs
La modification se passe bien sauf que dans certains cas j'ai des
commentaires supérieur a 255 caractéres et il ne le prend pas
j'ai essaye de modifier le type de variable et d'augmenter la taille
possible j'ai utilise le code suivant
Set externe = New ADODB.Recordset
Set externe = New Recordset
externe.Fields.Append "Montant DI", adLongVarChar, 5000
mais les valeurs ne changent pas
Quelqu'un aurait il une idee ?
merci michdenis de ton aide
mais mon problème n'est pas d'exporter des cellules vers EXCEL, j'essaie de
m'expliquer plus clairement
j'ai un fichier que j'envoie a x personnes, c'est personnes doivent mettre à
jour les informations, ensuite c'est informations sont envoyés sur un autre
fichier excel via ADO.
Mon problème est que j'ai une case commentaires et quelle peut contenir plus
de 255 caractères
or ADO n'en prend que 255
Je cherche donc a pouvoir modifier le type de caratere ou la logueur de la
chaine
D'autres part j'ai repris ton code et il n'exporte pas non plus des chaines
superieures à 255 caractère
Merci de ton aide
Bonjour Pcvsfr,
Ceci permet de recopier un recordset vers une plage
de cellules de ton choix. Permet jusqu'à 32767 caractères
par cellules.
La difficulté, ce n'est pas le recordset avec ADO mais la
recopie vers la feuille de calcul.
'---------------------------------------
Sub ImporterAccessVersExcel()
Dim Tblo As Variant
Dim C As Integer, Requete As String
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim RG As Range, Requete As String
Dim Chemin As String, NomFeuille As String
'Feuille et plage recevant les données du recordset
With Worksheets("Feuil3")
Set RG = Range("A1")
End With
Chemin = "c:"
file = "Ado.xls"
NomFeuille = "Feuil1" 'La feuille source des données
Requete = "SELECT * From [" & NomFeuille & "$]"
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenStatic, adLockPessimistic
nb = Rst.RecordCount
If nb = 0 Then
MsgBox "Aucun enregistrement trouvé."
Exit Sub
End If
'Copie le nom des champs dans la première ligne
Do
RG.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Tblo = Rst.GetRows
Set RG = RG.Offset(1).Resize(nb, Rst.Fields.Count)
For A = 0 To UBound(Tblo, 1)
For B = 0 To UBound(Tblo, 2)
RG.Offset(B, A).Value = Tblo(A, B)
Next
Next
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing : Set Rg = Nothing
End Sub
'---------------------------------------
Salutations!
"pcvsfr" <pcvsfr@discussions.microsoft.com> a écrit dans le message de news: FD00E624-D6AF-46CA-BFC0-40852E810292@microsoft.com...
Bonjour,
Voila je modifie via ADO un fichier excel, la requete fonctionne et je
recupére les collections field
ensuite j'affecte une variable aux collections fields de cette facon
externe.Fields("commentaires").Value = commentaire
dans le but de modifier les valeurs
La modification se passe bien sauf que dans certains cas j'ai des
commentaires supérieur a 255 caractéres et il ne le prend pas
j'ai essaye de modifier le type de variable et d'augmenter la taille
possible j'ai utilise le code suivant
Set externe = New ADODB.Recordset
Set externe = New Recordset
externe.Fields.Append "Montant DI", adLongVarChar, 5000
mais les valeurs ne changent pas
Quelqu'un aurait il une idee ?
merci michdenis de ton aide
mais mon problème n'est pas d'exporter des cellules vers EXCEL, j'essaie de
m'expliquer plus clairement
j'ai un fichier que j'envoie a x personnes, c'est personnes doivent mettre à
jour les informations, ensuite c'est informations sont envoyés sur un autre
fichier excel via ADO.
Mon problème est que j'ai une case commentaires et quelle peut contenir plus
de 255 caractères
or ADO n'en prend que 255
Je cherche donc a pouvoir modifier le type de caratere ou la logueur de la
chaine
D'autres part j'ai repris ton code et il n'exporte pas non plus des chaines
superieures à 255 caractère
Merci de ton aideBonjour Pcvsfr,
Ceci permet de recopier un recordset vers une plage
de cellules de ton choix. Permet jusqu'à 32767 caractères
par cellules.
La difficulté, ce n'est pas le recordset avec ADO mais la
recopie vers la feuille de calcul.
'---------------------------------------
Sub ImporterAccessVersExcel()
Dim Tblo As Variant
Dim C As Integer, Requete As String
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim RG As Range, Requete As String
Dim Chemin As String, NomFeuille As String
'Feuille et plage recevant les données du recordset
With Worksheets("Feuil3")
Set RG = Range("A1")
End With
Chemin = "c:"
file = "Ado.xls"
NomFeuille = "Feuil1" 'La feuille source des données
Requete = "SELECT * From [" & NomFeuille & "$]"
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenStatic, adLockPessimistic
nb = Rst.RecordCount
If nb = 0 Then
MsgBox "Aucun enregistrement trouvé."
Exit Sub
End If
'Copie le nom des champs dans la première ligne
Do
RG.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Tblo = Rst.GetRows
Set RG = RG.Offset(1).Resize(nb, Rst.Fields.Count)
For A = 0 To UBound(Tblo, 1)
For B = 0 To UBound(Tblo, 2)
RG.Offset(B, A).Value = Tblo(A, B)
Next
Next
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing : Set Rg = Nothing
End Sub
'---------------------------------------
Salutations!
"pcvsfr" a écrit dans le message de news:
Bonjour,
Voila je modifie via ADO un fichier excel, la requete fonctionne et je
recupére les collections field
ensuite j'affecte une variable aux collections fields de cette facon
externe.Fields("commentaires").Value = commentaire
dans le but de modifier les valeurs
La modification se passe bien sauf que dans certains cas j'ai des
commentaires supérieur a 255 caractéres et il ne le prend pas
j'ai essaye de modifier le type de variable et d'augmenter la taille
possible j'ai utilise le code suivant
Set externe = New ADODB.Recordset
Set externe = New Recordset
externe.Fields.Append "Montant DI", adLongVarChar, 5000
mais les valeurs ne changent pas
Quelqu'un aurait il une idee ?
merci michdenis de ton aide
mais mon problème n'est pas d'exporter des cellules vers EXCEL, j'essaie de
m'expliquer plus clairement
j'ai un fichier que j'envoie a x personnes, c'est personnes doivent mettre à
jour les informations, ensuite c'est informations sont envoyés sur un autre
fichier excel via ADO.
Mon problème est que j'ai une case commentaires et quelle peut contenir plus
de 255 caractères
or ADO n'en prend que 255
Je cherche donc a pouvoir modifier le type de caratere ou la logueur de la
chaine
D'autres part j'ai repris ton code et il n'exporte pas non plus des chaines
superieures à 255 caractère
Merci de ton aideBonjour Pcvsfr,
Ceci permet de recopier un recordset vers une plage
de cellules de ton choix. Permet jusqu'à 32767 caractères
par cellules.
La difficulté, ce n'est pas le recordset avec ADO mais la
recopie vers la feuille de calcul.
'---------------------------------------
Sub ImporterAccessVersExcel()
Dim Tblo As Variant
Dim C As Integer, Requete As String
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim RG As Range, Requete As String
Dim Chemin As String, NomFeuille As String
'Feuille et plage recevant les données du recordset
With Worksheets("Feuil3")
Set RG = Range("A1")
End With
Chemin = "c:"
file = "Ado.xls"
NomFeuille = "Feuil1" 'La feuille source des données
Requete = "SELECT * From [" & NomFeuille & "$]"
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenStatic, adLockPessimistic
nb = Rst.RecordCount
If nb = 0 Then
MsgBox "Aucun enregistrement trouvé."
Exit Sub
End If
'Copie le nom des champs dans la première ligne
Do
RG.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Tblo = Rst.GetRows
Set RG = RG.Offset(1).Resize(nb, Rst.Fields.Count)
For A = 0 To UBound(Tblo, 1)
For B = 0 To UBound(Tblo, 2)
RG.Offset(B, A).Value = Tblo(A, B)
Next
Next
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing : Set Rg = Nothing
End Sub
'---------------------------------------
Salutations!
"pcvsfr" a écrit dans le message de news:
Bonjour,
Voila je modifie via ADO un fichier excel, la requete fonctionne et je
recupére les collections field
ensuite j'affecte une variable aux collections fields de cette facon
externe.Fields("commentaires").Value = commentaire
dans le but de modifier les valeurs
La modification se passe bien sauf que dans certains cas j'ai des
commentaires supérieur a 255 caractéres et il ne le prend pas
j'ai essaye de modifier le type de variable et d'augmenter la taille
possible j'ai utilise le code suivant
Set externe = New ADODB.Recordset
Set externe = New Recordset
externe.Fields.Append "Montant DI", adLongVarChar, 5000
mais les valeurs ne changent pas
Quelqu'un aurait il une idee ?
merci michdenis de ton aide
mais mon problème n'est pas d'exporter des cellules vers EXCEL, j'essaie de
m'expliquer plus clairement
j'ai un fichier que j'envoie a x personnes, c'est personnes doivent mettre à
jour les informations, ensuite c'est informations sont envoyés sur un autre
fichier excel via ADO.
Mon problème est que j'ai une case commentaires et quelle peut contenir plus
de 255 caractères
or ADO n'en prend que 255
Je cherche donc a pouvoir modifier le type de caratere ou la logueur de la
chaine
D'autres part j'ai repris ton code et il n'exporte pas non plus des chaines
superieures à 255 caractère
Merci de ton aide
Bonjour Pcvsfr,
Ceci permet de recopier un recordset vers une plage
de cellules de ton choix. Permet jusqu'à 32767 caractères
par cellules.
La difficulté, ce n'est pas le recordset avec ADO mais la
recopie vers la feuille de calcul.
'---------------------------------------
Sub ImporterAccessVersExcel()
Dim Tblo As Variant
Dim C As Integer, Requete As String
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim RG As Range, Requete As String
Dim Chemin As String, NomFeuille As String
'Feuille et plage recevant les données du recordset
With Worksheets("Feuil3")
Set RG = Range("A1")
End With
Chemin = "c:"
file = "Ado.xls"
NomFeuille = "Feuil1" 'La feuille source des données
Requete = "SELECT * From [" & NomFeuille & "$]"
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenStatic, adLockPessimistic
nb = Rst.RecordCount
If nb = 0 Then
MsgBox "Aucun enregistrement trouvé."
Exit Sub
End If
'Copie le nom des champs dans la première ligne
Do
RG.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Tblo = Rst.GetRows
Set RG = RG.Offset(1).Resize(nb, Rst.Fields.Count)
For A = 0 To UBound(Tblo, 1)
For B = 0 To UBound(Tblo, 2)
RG.Offset(B, A).Value = Tblo(A, B)
Next
Next
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing : Set Rg = Nothing
End Sub
'---------------------------------------
Salutations!
"pcvsfr" <pcvsfr@discussions.microsoft.com> a écrit dans le message de news:
FD00E624-D6AF-46CA-BFC0-40852E810292@microsoft.com...
Bonjour,
Voila je modifie via ADO un fichier excel, la requete fonctionne et je
recupére les collections field
ensuite j'affecte une variable aux collections fields de cette facon
externe.Fields("commentaires").Value = commentaire
dans le but de modifier les valeurs
La modification se passe bien sauf que dans certains cas j'ai des
commentaires supérieur a 255 caractéres et il ne le prend pas
j'ai essaye de modifier le type de variable et d'augmenter la taille
possible j'ai utilise le code suivant
Set externe = New ADODB.Recordset
Set externe = New Recordset
externe.Fields.Append "Montant DI", adLongVarChar, 5000
mais les valeurs ne changent pas
Quelqu'un aurait il une idee ?
merci michdenis de ton aide
mais mon problème n'est pas d'exporter des cellules vers EXCEL, j'essaie de
m'expliquer plus clairement
j'ai un fichier que j'envoie a x personnes, c'est personnes doivent mettre à
jour les informations, ensuite c'est informations sont envoyés sur un autre
fichier excel via ADO.
Mon problème est que j'ai une case commentaires et quelle peut contenir plus
de 255 caractères
or ADO n'en prend que 255
Je cherche donc a pouvoir modifier le type de caratere ou la logueur de la
chaine
D'autres part j'ai repris ton code et il n'exporte pas non plus des chaines
superieures à 255 caractère
Merci de ton aideBonjour Pcvsfr,
Ceci permet de recopier un recordset vers une plage
de cellules de ton choix. Permet jusqu'à 32767 caractères
par cellules.
La difficulté, ce n'est pas le recordset avec ADO mais la
recopie vers la feuille de calcul.
'---------------------------------------
Sub ImporterAccessVersExcel()
Dim Tblo As Variant
Dim C As Integer, Requete As String
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim RG As Range, Requete As String
Dim Chemin As String, NomFeuille As String
'Feuille et plage recevant les données du recordset
With Worksheets("Feuil3")
Set RG = Range("A1")
End With
Chemin = "c:"
file = "Ado.xls"
NomFeuille = "Feuil1" 'La feuille source des données
Requete = "SELECT * From [" & NomFeuille & "$]"
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & file & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""
Rst.Open Requete, Conn, adOpenStatic, adLockPessimistic
nb = Rst.RecordCount
If nb = 0 Then
MsgBox "Aucun enregistrement trouvé."
Exit Sub
End If
'Copie le nom des champs dans la première ligne
Do
RG.Offset(, C) = Rst.Fields(C).Name
C = C + 1
x = x + 1
Loop Until x = Rst.Fields.Count
Tblo = Rst.GetRows
Set RG = RG.Offset(1).Resize(nb, Rst.Fields.Count)
For A = 0 To UBound(Tblo, 1)
For B = 0 To UBound(Tblo, 2)
RG.Offset(B, A).Value = Tblo(A, B)
Next
Next
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing : Set Rg = Nothing
End Sub
'---------------------------------------
Salutations!
"pcvsfr" a écrit dans le message de news:
Bonjour,
Voila je modifie via ADO un fichier excel, la requete fonctionne et je
recupére les collections field
ensuite j'affecte une variable aux collections fields de cette facon
externe.Fields("commentaires").Value = commentaire
dans le but de modifier les valeurs
La modification se passe bien sauf que dans certains cas j'ai des
commentaires supérieur a 255 caractéres et il ne le prend pas
j'ai essaye de modifier le type de variable et d'augmenter la taille
possible j'ai utilise le code suivant
Set externe = New ADODB.Recordset
Set externe = New Recordset
externe.Fields.Append "Montant DI", adLongVarChar, 5000
mais les valeurs ne changent pas
Quelqu'un aurait il une idee ?