Les meilleurs sources pour ExcelConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 65, dernière mise à jour : 8 février 2020 

 
OuvrirSommaireAutomationBases 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 )

Vba
Sélectionnez
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
Créé le 15 mai 2007  par Cafeine

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 )

Vba
Sélectionnez
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
Créé le 15 mai 2007  par Cafeine

Cette procédure montre comment transférer un fichier CSV vers une nouvelle table Access, depuis une macro Excel.

Vba
Sélectionnez
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
Créé le 15 mai 2007  par SilkyRoad
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.