1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
   |  
'Ajouter la bibliothèque suivante :
'Microsoft ActiveX Data Objects x.x Library
 
Private Sub ConnecterBase(ConnectBD As ADODB.Connection, _
                          Fichier As String, _
                          Optional Rs)
 
 
    Set ConnectBD = New ADODB.Connection
 
    'initialise le jeux d'enregistrements si on l'utilise
    If Not IsMissing(Rs) Then
 
        Set Rs = New ADODB.Recordset
 
    End If
 
    'ouvre la connexion
    ConnectBD.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=" & Fichier & ";" & _
                   "Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""
 
End Sub
 
Private Sub AjoutALaFeuille()
 
    Dim ConnectBD As ADODB.Connection
    Dim NomFeuille As String
    Dim ChaineSQL As String
    Dim Nom As String
    Dim Prenom As String
    Dim Adresse As String
    Dim CP As String
    Dim Ville As String
    Dim I As Integer
    Dim Fichier As String
 
    'Chemin du fichier, à adapter...
    Fichier = "F:\Base de données.xls"
 
    'ouvre la connexion au fichier
    ConnecterBase ConnectBD, Fichier
 
    'nom de la feuille devant recevoir les valeurs
    NomFeuille = "BDD"
 
    'boucle sur la feuille "Feuil2" pour récupérer les valeurs des différents champs
    'afin de les tranférer vers la feuille "BDD" qui se trouve dans le même classeur
    With Worksheets("Feuil2")
 
        For I = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
 
            'ici tu peux éviter les variables en entrant directement
            'dans la chaine les valeurs mais c'est moins clair
            Nom = .Cells(I, 1)
            Prenom = .Cells(I, 2)
            Adresse = .Cells(I, 3)
            CP = .Cells(I, 4)
            Ville = .Cells(I, 5)
 
            'construit la chaine SQL
            'Col A = F1, Col B = F2, etc...
            'les valeurs texte entre apostrophes (') les valeurs date ente dièse (#)
            ChaineSQL = "INSERT INTO `" & NomFeuille & "$` "
            ChaineSQL = ChaineSQL & "(F1,F2,F3,F4,F5)"
            ChaineSQL = ChaineSQL & "VALUES ('" & Nom & "','" & Prenom & "','" & Adresse & "','" & CP & "','" & Ville & "')"
 
            'entre les valeurs dans la feuille servant de base de données
            ConnectBD.Execute ChaineSQL
 
        Next I
 
    End With
 
    'ferme la connexion
    ConnectBD.Close
 
End Sub | 
Partager