[RESOLU]Insérer données dans MsSQL depuis Excel

ganjakass

XLDnaute Nouveau
Bonjour
J'arrive très facilement à récupérer le contenu de ma base de données microsoft sur mon fichier Excel.

Cependant il faudrai que je fasse l'opération inverse.
CaD:
Pouvoir écrire, remplacer voir supprimer des écritures dans ma base de données directement depuis Excel.
le but est que les utilisateurs du fichier Excel puissent modifier simplement les données de la base.

J'ai vue qu'il existait plusieurs techniques (ADO oledb, ADO jet4.0, micro Query,etc.)
Malheureusement je n'ai aucune connaissance de ces outils.

Est-ce qqch a déja fait la manip?
Please Help-me
 
Dernière édition:

poulpor78

XLDnaute Junior
Re : Insérer données dans MsSQL depuis Excel

Bonjour,

Pour débuter, il faut comprendre le fonctionnement des opérations :

1/ Je crée ma connexion / me connecte à une bdd
2/ Je génère du code sql en vba (une variable string) => ce code SQL doit évidemment être testé sur MySql avant
3/ J'envoie mon SQL [si on est en Select, on travaillera sur les données sélectionnées]
4/ Je me déconnecte / détruit ma connexion

Une fois qu'on a compris cela, c'est plus facile pour tenter de comprendre les pages de ce type :

Inserting Data Into MySQL From Excel Using VBA - HTNet

ou

https://www.excel-downloads.com/threads/connection-excel-sur-mysql.92884/


Poulpor
 

ganjakass

XLDnaute Nouveau
Re : Insérer données dans MsSQL depuis Excel

Bonjour,

Pour débuter, il faut comprendre le fonctionnement des opérations :

1/ Je crée ma connexion / me connecte à une bdd
2/ Je génère du code sql en vba (une variable string) => ce code SQL doit évidemment être testé sur MySql avant
3/ J'envoie mon SQL [si on est en Select, on travaillera sur les données sélectionnées]
4/ Je me déconnecte / détruit ma connexion

Une fois qu'on a compris cela, c'est plus facile pour tenter de comprendre les pages de ce type :

Inserting Data Into MySQL From Excel Using VBA - HTNet

ou

https://www.excel-downloads.com/threads/connection-excel-sur-mysql.92884/


Poulpor

Oui effectivement je travaille avec microsoft server 2008 R2 et non MySQL mais je pense que le principe reste le même.
avez un exemple de code à me fournir afin de comprendre le fonctionnement?
D'avance merci
 

ganjakass

XLDnaute Nouveau
Re : Insérer données dans MsSQL depuis Excel


Oui merci j'ai lu ce lien cette après midi:
Cependant ca reste très vague pour un novice comme moi.
Faut-il utiliser Micro Query ou ADO oledb?
et j'aimerai bien comprendre ce que je fais
Je ne sais même pas ou il faut inserrer ce code dans VBA, créer un module, le mettre dans la feuille1,2

voila l'appli actuel.(sans encore la possibilité d'écrire dans la base)
 

Pièces jointes

  • analyse0019 - Copie.xlsm
    50.9 KB · Affichages: 63

poulpor78

XLDnaute Junior
Re : Insérer données dans MsSQL depuis Excel

OK, j'émets l'hypothèse que tu débutes en vba donc ne le prends pas mal :

1/ Alt+ F11 pour aller dans le visual basic editor

2/ Créer un module qui va se nommer modle1

3/ Outil Référence : cocher les références commençant par microsoft et qui continnent ADO ou Activex Data Objects.

4/ On peut commencer à coller le code dans le module


Il faudra au mieux coller une fonction de connexion, une fonction de déconnexion, une procédure de travail; soit tout écrire dans le même module.


As-tu déjà fait du vba ? Si la réponse est non, ça risque d'être difficile d'arriver à tes fins.


Poulpor
 
G

Guest

Guest
Re : Insérer données dans MsSQL depuis Excel

Re,

Je ne vois pas ce que je pourrais dire de plus que l'exemple du lien donné plus haut, qui est assez exhaustif.
A toi de potasser, faire tes tests et éventuellement de revenir avec des questions sur des points plus précis.

Sachant qu'excel ne sera jamais l'équivalent d'un SGBD.
A+
 
Dernière modification par un modérateur:

ganjakass

XLDnaute Nouveau
Re : Insérer données dans MsSQL depuis Excel

Non je ne le prend pas mal c'est simplement la réalité.
Oui je débute en VBA mais j'ai déja fais deux trois truc simplet comme tu px le voir si tu ouvre mon fichier excel.

Ok je vais commencer par la.
Qu'est ce que tu entend par il faudra au mieux coller une fonction de connexion et de déconnexion?
tu vx dire faire un bouton (command buton) avec lesquel tu te connecte à la base et un autre pour ce déconnecter?
Une procédure de travail??? c'est quoi? (lol reste calme?)
Merci déja pour ces infos.
 

ganjakass

XLDnaute Nouveau
Re : Insérer données dans MsSQL depuis Excel

Oui je vais faire des tests et revenir si j'ai des questions plus précise.
Cependant je ne savais même pas ou tester ce code avant que poulpor78 me le dise.
Je suis totalement conscient que excel n'est pas une SGDB.
Le but est juste de pouvoir écrire dans la base depuis excel. je ne vais pas faire de excel une SGDB.

Un peu plus de détail sur mon application:
Je récupère des état machine grace a un automate Wago (en prod, en panne, en attente, etc.)
Ses état son envoyer sur un serveur.

Puis le but est qu'une personne puisse utiliser le fichier excel pour faire des analyses des temps machine afin de dire:
tel J la machine était en production pendant 20h et en panne pendant 4h.
Cependant pour être juste dans nos anlayses, il faut pouvoir soustraire les temps de rebuts des pièces (soit suite à une faute d'usinage ou au fourniseur de fonderie, porosité ,etc.)

C'est pour cela que j'ai besoin d'écrire dans MsSQL depuis Excel. (car je ne px pas récupérer ses signaux depuis mon automate)
Afin que le responsable de sa machine puisse remplacer les heures de "en production" par "en rebut".

Merci
 

poulpor78

XLDnaute Junior
Re : Insérer données dans MsSQL depuis Excel

Re,

Je ne suis pas du tout énervé. Je n'ai pas de problème avec ça. Le truc, c'est qu'on s'attaque à une chose pas évidente. Quand on a un peu d'expérience en vba, ça évite de tout reprendre à la base; et je me demandais où tu en étais.


Donc, une fonction commence par function(), Une procédure commence par Sub()

Les deux se collent habituellement dans des modules. Ce qui existe dans le module1 du fichier Analyse. donc tu le savais déjà.


On écrit le code généralement dans une procédure. Mais on peut avoir des morceaux de code qu'on répète plusieurs fois (par exemple connexion/déconnexion à une bdd). Il peut donc être utile de placer ces morceaux de code dans des fonctions et de faire appel à ces fonctions.

Pour du MS SQL, mes fonctions sont :

Code:
Public DBCon As ADODB.CONNECTION

Function ConnexionBase()

    TheDatabase = "TOTO"

    DBCon.ConnectionTimeout = 20
    DBCon.ConnectionString = "Driver={SQL Server};Server=####;Database=" & TheDatabase & ";Trusted_Connection=True;"
    DBCon.Open 

End Function


où "TOTO" est le nom de la BDD
où #### est le serveur SQL


Et :

Code:
Function FermetureBase()
    If Not DBCon Is Nothing Then
        If DBCon.State = adStateOpen Then DBCon.Close
        Set DBCon = Nothing
    End If
End Function


Déjà, essaie de faire fonctionner correctement ces deux fonctions. Pour cela, il faut t'assurer d'avoir les bonnes variables de connexion et d'avoir cocher dans outil/Références les bonnes références (voir mon précédent post)


L'utilisation exemple dans mon cas (c'est un select car je ne me permets jamais d'écrire dans une base sql d'entreprise) :


Code:
Sub Montest()

    On Error GoTo Err:

    Dim MonSql As String
    Dim rstcomptes As New ADODB.Recordset
    Dim i As Integer
    CONNECTION.ConnexionBase

    MonSql = "SELECT F_COMPTET.CT_Num, F_COMPTET.CT_Intitule,F_COMPTET.CT_Sommeil FROM F_COMPTET WHERE F_COMPTET.CT_Type=0 AND F_COMPTET.CT_Sommeil=0 ORDER BY F_COMPTET.CT_Num;"
    rstcomptes.Open MonSql, DBCon, adOpenDynamic, adLockOptimistic

    rstcomptes.MoveFirst
    i = 1
    While Not rstcomptes.EOF
        ActiveSheet.Cells(i, 1).Value = rstcomptes("CT_Num")
        i = i + 1
        rstcomptes.MoveNext
    Wend

CONNECTION.FermetureBase

Err:
    If Err.Number <> 0 Then
        CONNECTION.FermetureBase

        MsgBox "Erreur : " & Err.Number & Chr(13) & Err.Description
    End If

End Sub


C'est juste une requête dans une base comptable SAGE où je vais chercher des numéros de comptes et je vais les rapatrier dans ma feuille excel.

A noter : CONNECTION.ConnexionBase et CONNECTION.FermetureBase sont des appels à mes fonctions que j'ai placé dans une module nommé CONNECTION

Ainsi, dans mon classeur, chaque fois que je veux me connecter à la base, je n'ai qu'une seule ligne à mettre, ce qui rend mon code plus visible.


Je te conseille donc de commencer par tester si tu arrives à te connecter (parfois ce n'est pas si évident), à tester une requête Select (ça ne détruira rien !). Une fois cela assimilé, il faut foncer vers des liens qui indiquent comment exécuter du sql.

En espérant te guider.

Poulpor
 

ganjakass

XLDnaute Nouveau
Re : Insérer données dans MsSQL depuis Excel

J'était entrain de regardre tes deux fonctions de connection et déconnexion.
Pour les tester, il faut que je les lient à deux boutons genre:

private sub connect click()
si BpConnect alors appel de la fonction connection
et BpDeconnect alors appel de la déconnexion??

c'est ca?
Comment tester ces fonctions?

Encore merci.
 

Discussions similaires

Statistiques des forums

Discussions
312 529
Messages
2 089 369
Membres
104 147
dernier inscrit
VICVIC