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 :

Stockage des données sur server Sql 2005 a travers classeur excel.


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 25
    Points : 10
    Points
    10
    Par défaut Stockage des données sur server Sql 2005 a travers classeur excel.
    Bonjour le forum des developpeurs,

    Je vous sollicite encore une fois afin de m'eclaircire sur ce que fait se code si-dessous.
    C'est un collegue anglophone qui me l'a refilé et étant pas encore familier avec la langue de shakespear et encore moins avec les bases de données, en plus de VBA.
    En fait, j'extrait des données de configurations provenant des Automates Programmables sur plusieurs feuilles excel se trouvant dans un classeur ensuite ce dernier sera consultable sur sharepoint.
    Ce code se trouvant dans un module de mon classeur permet de parcourir toutes les feuilles de mon classeur et de les stocker ensuite dans le server SQL.

    C'est ce que j'ai compris lorsque mon collègue me l'avait filé.
    Par curiosité et pour moi même, j'aimerai comprendre ce code ligne par ligne.

    En vous remerciant par avance.


    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
    Sub UpdateDataInBDMSheet(Obj As String, Source As String, Name As String, Value As String)
     
        Dim SqlString As String
        Dim ExecuteState As Object
        On Error GoTo ErrorHandler   
        Dim cst As String
        Dim conn As New ADODB.Connection
        cst = "Provider=sqloledb;Data Source=TestW2K8Srv07;Integrated Security=SSPI;Persist Security Info=False;"
        cst = cst + "Initial Catalog=PointManagement;"
        conn.ConnectionString = cst
        conn.Open
     
        SqlString = "execute ABB_800xA_Objects_InsertUpdate '" + Obj + "', '" + Source + "', '" + Name + "', '" + Value + "'"
        Set ExecuteState = conn.Execute(SqlString)
        'ParentId = ExecuteState("Code")
        conn.Close
        Exit Sub     
     
    ErrorHandler:    
        Select Case Err.Number    
            Case Else
                ' Handle other situations here...
                MsgBox ("Source: '" + Err.Source + " Description: " + Err.Description + " SQL: " + SqlString)
                Resume Next
        End Select
     
    End Sub
    Et si par hasard je suis dans le mauvais forum, n'hésitez à me le dire!

    Cordialement,

    Lele79.

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    J'ai ajouté quelques commentaires

    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
    Sub UpdateDataInBDMSheet(Obj As String, Source As String, Name As String, Value As String)
        'Gestion des erreurs : si ereur aller vers sous procedure ErrorHndler
        On Error GoTo ErrorHandler
     
        'Déclaration des vaiables
        Dim SqlString As String
        Dim ExecuteState As Object
        Dim cst As String
        Dim conn As New ADODB.Connection
     
        'Mettre dans la variable CST la chaine de connexion à la base de données
        cst = "Provider=sqloledb;Data Source=TestW2K8Srv07;Integrated Security=SSPI;Persist Security Info=False;"
        cst = cst + "Initial Catalog=PointManagement;"
     
        'Connexion a la base de donnée
        conn.ConnectionString = cst
        conn.Open
     
        'Lancer la procedure stockée "On Error GoTo ErrorHandler" en utlisant les parametres  de la procedure
        SqlString = "execute ABB_800xA_Objects_InsertUpdate '" + Obj + "', '" + Source + "', '" + Name + "', '" + Value + "'"
        Set ExecuteState = conn.Execute(SqlString)
     
        'ParentId = ExecuteState("Code")
     
        'Fermer la connexion
        conn.Close
        Exit Sub
     
    ErrorHandler:
        'Gestion du message d'erreur
        Select Case Err.Number
            Case Else
                ' Handle other situations here...
                MsgBox ("Source: '" + Err.Source + " Description: " + Err.Description + " SQL: " + SqlString)
                Resume Next
        End Select
     
    End Sub
    Jérôme

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    Bonjour jfontaine, le forum,

    Merci jfontaine, j'ai egalement oublie, egalement,de mentionner si ce code fait bien ce que je disais precedemment, c'est a dire qu'il scrute chaque feuille de mon classeur pour les stocker dans la base de donnees. Car, avec les commentaires que tu viens d'ajouter, je ne vois pas quelque chose du genre :
    .....for each worksheet.....scrute les valeurs dans chaque colonne et stock les dans la base de donnees!. c'est ca qui me perturbe dans ce code.
    Mais si ce code permets le stockage des valeurs alors tant mieux.

    Cordialement,

    lele79.

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Ce code est appelé par une autre procedure que tu n'as pas mis en ligne.
    C'est probablement la qu'il y a la boucle
    Jérôme

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    bonjour jfontaine, le forum,

    Ce code est appelé par une autre procedure
    c'est exact!.
    En fait, lorsque l'importation des données provenant de l'API est terminée, j'exétute les codes VB de chaques feuilles pour les exportées dans une autre application.
    Je dois appeller ce code a chaque fois que j'identifie chaque colonne des différentes feuilles.

    Merci jfontaine.

    Bonne journée à tous.

    lele79.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/03/2010, 16h09
  2. Gestion des données avec MS sql server 2005
    Par rezgui_fawzi dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/01/2008, 15h55
  3. MySqL Stockage des données sur disque
    Par djezair31 dans le forum Administration
    Réponses: 5
    Dernier message: 23/08/2007, 17h28
  4. question théorique sur le stockage des données
    Par jp_rennes dans le forum Administration
    Réponses: 1
    Dernier message: 18/09/2006, 18h28
  5. Rafraichissement des données avec ADOConnection -SQL Server
    Par newfsch dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/01/2006, 21h48

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