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
Sommaire→Automation→Bases de données
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


