OVH Cloud OVH Cloud

limite d'importation access

3 réponses
Avatar
Bauwens François
Bonjour,

Je m'étais déjà interessé à la question il y a quelques temps... Des liens
m'avait été proposés mais le message ne semble plus être disponible. Pouvez
m'orienter vers des solutions qui permette de faire du transfert de données
d'access vers excel mais en résolvant le problème de limite du nombre de
caractère par cellule d'excel.

Merci
Bonne journée
Frans

3 réponses

Avatar
Poulpor
Bonjour Francois,

Je reprends un de mes anciens posts. Il faut bien comprendre les 4 etapes :

1/Connection à la base de données
2/Création du jeu d'enregistrement
3/Récupération du jeu d'enregistrement dans Excel
4/On sort proprement en fermant et en se déconnectant

Pour ce qui est de la limitation du nombre de caractères, en référence à
l'exmple ci-dessous, au lieu de :

Sheets(1).Cells(i, 1).Value = MASELECTION("Nom_Communes")

tu peux mettre :

Sheets(1).Cells(i, 1).Value = left(MASELECTION("Nom_Communes"),32767)

... où 32767 représente le nombre de caractères max d'une cellule excel
(source : aide sur la formule "RPT").

Poulpor

Voici l'exemple concret :

Option Explicit

Sub MaRecherche()

Dim BaseSource, Querymag, MASELECTION As Variant
Dim MySql As String
Dim i As Integer

'---ne pas oublier de cocher les references Acces, voire ADO ou DAO pour la
suite, dans outilsReferences---"

'1/Connection à la base de données
Set BaseSource = DBEngine.Workspaces(0).OpenDatabase("C:Documents and
Settingsphilippe.krempfBureauCP.mdb")

'2/Création du jeu d'enregistrement
MySql = "SELECT LISTE_VILLES.Nom_communes FROM LISTE_VILLES;" '2.a Création
de la sequence SQL (un bon copier coller de l'assisant requete d'access (QBE)
sous mode SQL)

Set Querymag = BaseSource.CreateQueryDef("", MySql) '2.b Création du jeu
d'enregistrement
Set MASELECTION = Querymag.OpenRecordset() '2.c Ouverture du jeu
d'enregistrement

'2.d Sortir si aucun enregistrement
If MASELECTION.RecordCount = 0 Then
MsgBox "aucun enregistrement trouvé"
Exit Sub
End If
'2.e Se placer sur le premier enregistrement
MASELECTION.MoveFirst

'3/ Récupération du jeu d'enregistrement dans Excel
i = 1
While Not MASELECTION.EOF 'tant que ce n'est pas le dernier enregistrement
Sheets(1).Cells(i, 1).Value = MASELECTION("Nom_Communes")
i = i + 1
MASELECTION.MoveNext 'passer à l'enregistrement suivant
Wend

'4/On sort proprement en fermant et en se déconnectant
MASELECTION.Close
Querymag.Close
Set Querymag = Nothing
BaseSource.Close
Set BaseSource = Nothing

End Sub







Bonjour,

Je m'étais déjà interessé à la question il y a quelques temps... Des liens
m'avait été proposés mais le message ne semble plus être disponible. Pouvez
m'orienter vers des solutions qui permette de faire du transfert de données
d'access vers excel mais en résolvant le problème de limite du nombre de
caractère par cellule d'excel.

Merci
Bonne journée
Frans





Avatar
Bauwens François
Tout grand merci

François
"Poulpor" a écrit dans le message de
news:
Bonjour Francois,

Je reprends un de mes anciens posts. Il faut bien comprendre les 4 etapes
:


1/Connection à la base de données
2/Création du jeu d'enregistrement
3/Récupération du jeu d'enregistrement dans Excel
4/On sort proprement en fermant et en se déconnectant

Pour ce qui est de la limitation du nombre de caractères, en référence à
l'exmple ci-dessous, au lieu de :

Sheets(1).Cells(i, 1).Value = MASELECTION("Nom_Communes")

tu peux mettre :

Sheets(1).Cells(i, 1).Value = left(MASELECTION("Nom_Communes"),32767)

... où 32767 représente le nombre de caractères max d'une cellule excel
(source : aide sur la formule "RPT").

Poulpor

Voici l'exemple concret :

Option Explicit

Sub MaRecherche()

Dim BaseSource, Querymag, MASELECTION As Variant
Dim MySql As String
Dim i As Integer

'---ne pas oublier de cocher les references Acces, voire ADO ou DAO pour
la

suite, dans outilsReferences---"

'1/Connection à la base de données
Set BaseSource = DBEngine.Workspaces(0).OpenDatabase("C:Documents and
Settingsphilippe.krempfBureauCP.mdb")

'2/Création du jeu d'enregistrement
MySql = "SELECT LISTE_VILLES.Nom_communes FROM LISTE_VILLES;" '2.a
Création

de la sequence SQL (un bon copier coller de l'assisant requete d'access
(QBE)

sous mode SQL)

Set Querymag = BaseSource.CreateQueryDef("", MySql) '2.b Création du jeu
d'enregistrement
Set MASELECTION = Querymag.OpenRecordset() '2.c Ouverture du jeu
d'enregistrement

'2.d Sortir si aucun enregistrement
If MASELECTION.RecordCount = 0 Then
MsgBox "aucun enregistrement trouvé"
Exit Sub
End If
'2.e Se placer sur le premier enregistrement
MASELECTION.MoveFirst

'3/ Récupération du jeu d'enregistrement dans Excel
i = 1
While Not MASELECTION.EOF 'tant que ce n'est pas le dernier enregistrement
Sheets(1).Cells(i, 1).Value = MASELECTION("Nom_Communes")
i = i + 1
MASELECTION.MoveNext 'passer à l'enregistrement suivant
Wend

'4/On sort proprement en fermant et en se déconnectant
MASELECTION.Close
Querymag.Close
Set Querymag = Nothing
BaseSource.Close
Set BaseSource = Nothing

End Sub







Bonjour,

Je m'étais déjà interessé à la question il y a quelques temps... Des
liens


m'avait été proposés mais le message ne semble plus être disponible.
Pouvez


m'orienter vers des solutions qui permette de faire du transfert de
données


d'access vers excel mais en résolvant le problème de limite du nombre de
caractère par cellule d'excel.

Merci
Bonne journée
Frans







Avatar
Bauwens François
Re-salut,

Je n'ai pas réussi à adapter le code (1er contact avec VB Excel). Puis-je te
soumettre ma tentative ?
Extra est le nom de la bd
extra2006 le nom de la table
resume est le nom du champ à importer.

En fait, je ne sais pas très bien ce qui est à remplacer et ce qui est une
instruction.

Merci pour ton aide Poulpor



Dim BaseSource, Querymag, MASELECTION As Variant
Dim MySql As String
Dim i As Integer

'---ne pas oublier de cocher les references Acces, voire ADO ou DAO pour la
'suite, dans outilsReferences---"

'1/Connection à la base de données
Set BaseSource extra.Workspaces(0).OpenDatabase("U:DAJEPJEUNESSEFRANCOISextra.mbd")

'2/Création du jeu d'enregistrement
'2.a Création
'de la sequence SQL (un bon copier coller de l'assisant requete d'access
(QBE)
'sous mode SQL)
MySql = "SELECT extra2006.resume FROM extra;"

'2.b Création du jeu d 'enregistrement
Set Querymag = BaseSource.CreateQueryDef("", MySql)

'2.c Ouverture du jeu d 'enregistrement
Set MASELECTION = Querymag.OpenRecordset()

'2.d Sortir si aucun enregistrement

If MASELECTION.RecordCount = 0 Then
MsgBox "aucun enregistrement trouvé"
Exit Sub
End If
'2.e Se placer sur le premier enregistrement
MASELECTION.MoveFirst
'3/ Récupération du jeu d'enregistrement dans Excel
i = 1
While Not MASELECTION.EOF 'tant que ce n'est pas le dernier enregistrement
Sheets(1).Cells(i, 1).Value = Left(MASELECTION("Nom_Communes"), 32767)
i = i + 1
MASELECTION.MoveNext 'passer à l'enregistrement suivant
Wend

'4/On sort proprement en fermant et en se déconnectant
MASELECTION.Close
Querymag.Close
Set Querymag = Nothing
BaseSource.Close
Set BaseSource = Nothing

End Sub

--

"Poulpor" a écrit dans le message de
news:
Bonjour Francois,

Je reprends un de mes anciens posts. Il faut bien comprendre les 4 etapes
:


1/Connection à la base de données
2/Création du jeu d'enregistrement
3/Récupération du jeu d'enregistrement dans Excel
4/On sort proprement en fermant et en se déconnectant

Pour ce qui est de la limitation du nombre de caractères, en référence à
l'exmple ci-dessous, au lieu de :

Sheets(1).Cells(i, 1).Value = MASELECTION("Nom_Communes")

tu peux mettre :

Sheets(1).Cells(i, 1).Value = left(MASELECTION("Nom_Communes"),32767)

... où 32767 représente le nombre de caractères max d'une cellule excel
(source : aide sur la formule "RPT").

Poulpor

Voici l'exemple concret :

Option Explicit

Sub MaRecherche()

Dim BaseSource, Querymag, MASELECTION As Variant
Dim MySql As String
Dim i As Integer

'---ne pas oublier de cocher les references Acces, voire ADO ou DAO pour
la

suite, dans outilsReferences---"

'1/Connection à la base de données
Set BaseSource = DBEngine.Workspaces(0).OpenDatabase("C:Documents and
Settingsphilippe.krempfBureauCP.mdb")

'2/Création du jeu d'enregistrement
MySql = "SELECT LISTE_VILLES.Nom_communes FROM LISTE_VILLES;" '2.a
Création

de la sequence SQL (un bon copier coller de l'assisant requete d'access
(QBE)

sous mode SQL)

Set Querymag = BaseSource.CreateQueryDef("", MySql) '2.b Création du jeu
d'enregistrement
Set MASELECTION = Querymag.OpenRecordset() '2.c Ouverture du jeu
d'enregistrement

'2.d Sortir si aucun enregistrement
If MASELECTION.RecordCount = 0 Then
MsgBox "aucun enregistrement trouvé"
Exit Sub
End If
'2.e Se placer sur le premier enregistrement
MASELECTION.MoveFirst

'3/ Récupération du jeu d'enregistrement dans Excel
i = 1
While Not MASELECTION.EOF 'tant que ce n'est pas le dernier enregistrement
Sheets(1).Cells(i, 1).Value = MASELECTION("Nom_Communes")
i = i + 1
MASELECTION.MoveNext 'passer à l'enregistrement suivant
Wend

'4/On sort proprement en fermant et en se déconnectant
MASELECTION.Close
Querymag.Close
Set Querymag = Nothing
BaseSource.Close
Set BaseSource = Nothing

End Sub







Bonjour,

Je m'étais déjà interessé à la question il y a quelques temps... Des
liens


m'avait été proposés mais le message ne semble plus être disponible.
Pouvez


m'orienter vers des solutions qui permette de faire du transfert de
données


d'access vers excel mais en résolvant le problème de limite du nombre de
caractère par cellule d'excel.

Merci
Bonne journée
Frans