Les meilleurs sources pour Excel
Les meilleurs sources pour ExcelConsultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 65, dernière mise à jour : 26 mars 2022
Voici un code qui permet de récupérer dans Excel une requête sur un fichier Texte. dans l'exemple, il s'agit de récupérer
une colonne. ( Nota: DAO étant utilisé il faut ajouter la référence : Microsoft DAO 3.X )
Sub
RequeteFichierTexte
(
)
'
' Rajouter la référence = Microsof DAO 3.X
'
Sub
GetCol
(
)
Dim
strPath As
String
Dim
strTable As
String
Dim
strFolder As
String
Dim
db As
DAO.Database
Dim
rs As
DAO.Recordset
strPath =
"c:\temp\dat.csv"
strTable =
Right
(
strPath, Len
(
strPath) -
InStrRev
(
strPath, "\"
))
strFolder =
Left
(
strPath, InStrRev
(
strPath, "\"
) -
1
)
Set
db =
DAO.OpenDatabase
(
strFolder, False
, False
, _
"Text;Database="
&
strFolder &
";HDR=NO;Table="
&
strTable)
' F1 = Field numéro 1
Set
rs =
db.OpenRecordset
(
"SELECT F1 FROM ["
&
strTable &
"]"
, DAO.dbOpenSnapshot
, _
DAO.dbReadOnly
, DAO.dbReadOnly
)
ActiveSheet.Range
(
"A2"
).CopyFromRecordset
rs
Set
rs =
Nothing
Set
db =
Nothing
End
Sub
Voici un code VBA Excel pour remplir une zone de liste à partir d'une requête sur une table Access.
Les données sont placés dans le 1° combobox issue de la barre à outils formulaire d'Excel et trouvé dans le classeur..
( Nota: DAO étant utilisé il faut ajouter la référence : Microsoft DAO 3.X )
Sub
FillCombo
(
)
Dim
db As
DAO.Database
Dim
rec As
DAO.Recordset
curshname =
ActiveSheet.Name
Set
db =
DAO.OpenDatabase
(
ThisWorkbook.Path
&
"\Membres1.mdb"
, False
, False
)
Set
rec =
db.OpenRecordset
(
"SELECT NomFamille FROM Membres WHERE DepartOuRegionTravail = 'WA'"
, DAO.dbOpenSnapshot
)
For
Each
sh In
ActiveWorkbook.Sheets
(
curshname).Shapes
If
sh.Type
=
msoFormControl And
sh.Name
Like "Drop*"
Then
sh.Select
Do
While
Not
(
rec.EOF
)
Selection.AddItem
rec.Fields
(
0
).Value
rec.MoveNext
Loop
Exit
For
End
If
Next
sh
rec.Close
db.Close
Set
rec =
Nothing
Set
db =
Nothing
End
Sub
Cette procédure montre comment transférer un fichier CSV vers une nouvelle table Access, depuis une macro Excel.
Sub
tranfertCSV_Vers_NouvelleTableAccess
(
)
'Transfére un fichier CSV vers une nouvelle table Access
'depuis une macro Excel.
'
'Nécessite d'activer la référence
'"Microsoft ActiveX Data Objects x.x Library
'
Dim
AccessCn As
ADODB.Connection
Dim
AccessRst As
ADODB.Recordset
Dim
Csv_CN As
New
ADODB.Connection
Dim
Csv_Rst As
New
ADODB.Recordset
Dim
DossierCSV As
String
, NomTable As
String
Dim
FichCSV As
String
, MaBase As
String
Dim
nbEnr As
Long
'Répertoire du fichier CSV
DossierCSV =
"C:\Documents and Settings\mimi\dossier"
'Nom du fichier CSV à transfèrer
FichCSV =
"LeFichierCSV.csv"
'Chemin et nom de la base Access
MaBase =
"C:\Documents and Settings\mimi\dossier\dataBase.mdb"
'Nom de la nouvelle Table Access
NomTable =
"MaNouvelleTable"
'Connection au fichier CSV
Csv_CN.Open
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
&
_
DossierCSV &
";Extended Properties='text;FMT=Delimited'"
'Requète dans le fichier CSV
Csv_Rst.Open
"SELECT * FROM "
&
FichCSV, Csv_CN, _
adOpenStatic
, adLockOptimistic
'Connection à la base de données Access
Set
AccessCn =
New
ADODB.Connection
AccessCn.Open
"Provider=Microsoft.Jet.OLEDB.4.0;"
&
_
"Data Source="
&
MaBase
Csv_CN.Execute
"SELECT * INTO ["
&
NomTable &
"] IN '"
&
_
MaBase &
"' From ["
&
FichCSV &
"]"
, nbEnr
AccessCn.Close
Csv_Rst.Close
Csv_CN.Close
Set
AccessRst =
Nothing
Set
AccessCn =
Nothing
Set
Csv_Rst =
Nothing
Set
Csv_CN =
Nothing
End
Sub