IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Travailler sur des bases de données SQL avec le VBA de Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de morpheuss
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut Travailler sur des bases de données SQL avec le VBA de Excel
    Bonjour,

    Y a-t-il moyen de lire, écrire, modifier des bases SQL avec le VBA dans Excel ?

    C'est une base SQL sur un serveur local dont voici les caractéristiques:

    Serveur : Localhost via UNIX socket
    Type de serveur : MariaDB
    Version du serveur : 5.5.51-MariaDB - MariaDB Server
    Version du protocole : 10

    Est-ce possible ?
    Si oui, avez-vous un lien ou un tuto d'exemple d'application ?

    D'avance merci,

    Steph

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Bonjour,

    En effet, c'est possible, via un connecteur ADODB qui permet d'effectuer des requêtes SQL ou d'appeler des procédures stockées.

    Je te réfère au tutoriel suivant concernant plutôt le VBA access mais applicable pour Excel.

    https://vb.developpez.com/bidou/recordset-ado/

    Par contre, il te faudra un connecteur pour ta base de données. Il me semble que tu peux en trouver ici :

    https://mariadb.com/kb/en/library/ab...onnector-odbc/

    Bien cordialement,

    Edit : Petit exemple de fonction permettant d'exécuter une requête SQL (J'ai fait quelques simplifications et je ne l'ai pas testé, mais ça devrait te permettre de voir le principe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub RunQuery(Query As String, Connection_string As String)
        Dim CON As Object 'ADODB.CONNECTION
        Dim RST As Object 'ADODB.RECORDSET
        Dim i As Integer 'Itérateur de boucle
        Dim CurCalc As XlCalculation 'Mode de calcul actuellement actif
        Dim Wb As Workbook
        Dim Wks As Worksheet
        Dim StartTime As Variant
     
    On Error GoTo Err_hANdler_2:
     
        Set CON = CreateObject("ADODB.Connection")
        Set RST = CreateObject("ADODB.recordset")
        Set Wb = ActiveWorkbook
     
        'Ouverture de la connexion
        CON.Open Connection_string
     
        'Exécution de la requête
        Set RST = CON.Execute(Query)
     
     
        'Vérfie si le jeu d'enregistrement contient des données ou non
        If RST.EOF And RST.BOF Then
            Call MsgBox("Aucune donnée correspondant aux critères spécifiés n'a pu être trouvée", vbOKOnly, "Aucune donnée")
            Exit Sub
        End If
        Set Wks = Wb.Worksheets.Add
        CurCalc = Application.Calculation
        Application.Calculation = xlCalculationManual
        Wks.Range("A2").CopyFromRecordset RST
     
        'Inscription des noms de champs dans l'onglet
        For i = 1 To RST.Fields.Count
            Wks.Cells(1, i) = RST.Fields(i - 1).Name
        Next i
        CON.Close
        Application.Calculation = CurCalc
        Set CON = Nothing
        Set RST = Nothing
        MsgBox "Fin d'exécution. Aucune erreur détectée", vbInformation + vbOKOnly, "Fin d'exécution"
    Exit Sub
     
    Err_hANdler_2:
        Call MsgBox(err.Number & " : " & err.Description, vbCritical, "Erreur survenue pendant l'exécution")
    End Sub

  3. #3
    Membre confirmé Avatar de morpheuss
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Merci, je vais tester ça.

Discussions similaires

  1. Travailler sur des bases de données distinctes
    Par Norbert luc dans le forum F#
    Réponses: 0
    Dernier message: 06/04/2018, 14h08
  2. Réponses: 5
    Dernier message: 30/12/2015, 10h07
  3. Réponses: 10
    Dernier message: 25/11/2007, 10h30
  4. [MySQL] travail sur 2 bases de données
    Par jani dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/01/2007, 20h04
  5. Travailler sur une base de donnée
    Par nolan76 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 31/01/2006, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo