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 :

Transfert des données vers une base SQL à l'aide d'un codage VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Transfert des données vers une base SQL à l'aide d'un codage VBA
    Bonjour à tous,

    j'espère que vous allez bien.

    Pour la validation de mon stage de fin d'étude je souhaite créer un fichier Excel qui permet de transférer des données d'Excel vers une base qui existe sur SQL server puis les supprimer à l'aide d'un code VBA ( Bouton "Transfert").

    Objectif:

    -Transférer les données vers la base SQL server

    -Supprimer les données qui existe sur Excel.

    je serais très reconnaissant si quelqu'un peut m'aider à propos ce sujet.

    j'ai trouver un code sur internet pour la connexion entre Excel/SQL server mais comme je n'ai pas d'idée à propos le codage VBA du coup je n'ai pas compris comment le réajuster pour faire le transfert vers ma base SQL.

    Le code

    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
    47
    Sub Connexion_SQL()
    Dim conn As ADODB.Connection
     
    Dim RsSelect As New ADODB.Recordset
     
    Dim sConnString, sSQL As String
     
    On Error GoTo ErreurSQL ' si erreur alors on va dans la section ErreurSQL:
     
    ' chaine de connexion vers la base de données
     
    sConnString = "Provider=SQLOLEDB;Data Source=DESKTOP-0ELQ5BU\TEW_SQLEXPRESS; Initial Catalog=produits;User ID=SIG;Password=MDP_ICI;"
     
    ' Ouverture de la connexion
     
    Set conn = New ADODB.Connection
     
    conn.Open sConnString
     
    RsSelect.CursorLocation = adUseClient
     
    'Encapsulation dans une transaction (très important pour garantir l’intégrité des données en base)
     
    conn.BeginTrans
     
    ' definition de l’ordre SQL
     
    sSQL = " SELECT * FROM table "
     
    'Execution de l'ordre SQL
     
    RsSelect.Open sSQL, conn, adOpenStatic, adLockOptimistic, adCmdText
     
    ' Pas d’erreur, on valide la transaction
     
    conn.CommitTrans
     
    GoTo Suite
     
    ErreurSQL:
     
    conn.RollbackTrans 'la transaction s’est mal passée : on annule tout
     
    Suite:
     
    conn.Close 'fermeture de la connexion à la base de données
    End Sub

  2. #2
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Bonjour,
    Il faut parcourir ta plage de cellules Excel pour écrire ta requête SQL {insert} !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL="INSERT INTO client (prenom, nom, ville, age)  " & _
     "VALUES  " & _
     "('Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24),  " & _
     "('Aimée', 'Hebert', 'Marigny-le-Châtel', 36),  " & _
     "('Marielle', 'Ribeiro', 'Maillères', 27)"
    Cn.execute SQL
    https://sql.sh/cours/insert-into

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    J'ai écrit 4 billets de blog sur le sujet. Voici le lien vers le premier.

    Au passage, je n'aime pas trop l'insertion à la volée car il faut prévoir les différents cas de figure, et notamment ici le risque de caractères à échapper lors de la création de la requête. Si tu dois insérer le nom, le prénom et la ville de Natacha ursule Marie Madeleine de l'Eau qui dort qui habite à Aigrefeuille d'Aunis, tu vas avoir des problèmes à cause des apostrophes. Perso, je préfère utiliser les paramètres de la requête pour laisse ADODB gérer ces cas problématiques.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Bonsoir pierre,
    Oui tu as raison mais je n'aime pas gaver mes victimes au premier poste !

    Mais j'aurais abordé le problème et offaire la solution.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,
    merci pour vos réponses.
    honnêtement je n'ai pas des idées à propos du codage VBA.
    voici le tableau que j'ai commencer a créé, peut être vous comprenez un peu ce que je vise
    en faite, je souhaite une fois que j'ai finis à faire ma saisie des données transférer et sur supprimer le contenue à l'aide du bouton "Transfert"
    merci à vous
    Fichiers attachés Fichiers attachés

  6. #6
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Bonjour,
    Dans ton fichier il faut mettre du texte dans les champs texte, des nombres dans les champs numérique et des dates dans les champs date !

Discussions similaires

  1. [XL-2016] Copie et transfert de données vers une autre feuille à l'aide d'un code VBA
    Par cool762 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/10/2017, 09h27
  2. [Débutant] transfert des données d'une base données mysql vers logiciel d'historisation de données
    Par thierry2012 dans le forum Accès aux données
    Réponses: 0
    Dernier message: 29/03/2012, 17h13
  3. Export des données d'une base SQL Server 2000 SP3
    Par zanyth dans le forum Administration
    Réponses: 5
    Dernier message: 25/03/2009, 17h18
  4. importer des données d'une base SQL vers word?
    Par Jayceblaster dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/10/2007, 09h43
  5. [Access 2002] Exporter des données vers une base Access 2.0
    Par SamLeChiseuji dans le forum Access
    Réponses: 27
    Dernier message: 01/06/2006, 11h41

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