Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
721 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  fonction SQL dans macro excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction SQL dans macro excel

n°1577770
p'titmath
Posté le 21-06-2007 à 19:00:06  profilanswer
 

bonsoir,

 

pte question qui risque de sembler simple pour bcp mais mes connaissances en VB sont proches du Zero.

 

objectif :
dans un fichier excel, je dois lancer X requetes SQL afin de mettre à jour des cellules sachant que je vais avoir X requetes par onglet et j ai autant d'onglet que de machines

 

La macro semble tourner correctement (conencte bien à la base, change bien d'onglet) mais elle ne m'insere rien dans mes cellules excel.
en lancant juste la requete d'insertion cela fonctionne mais vu la volumétrie cela n'est pas jouable

 

si une ame charitable pouvait me dire comment faire SVP  :)  

 


Code :
  1. Sub Run()
  2. Dim name
  3. '--------------------------------
  4. 'GS11SLWI001
  5. '--------------------------------
  6. Sheets("GS11SLWI001" ).Select
  7. name = "GS11SLWI001"
  8. Call requete
  9. '--------------------------------
  10. 'GS11SLWI025
  11. '--------------------------------
  12. Sheets("GS11SLWI025" ).Select
  13. name = "GS11SLWI025"
  14. Call requete
  15. End Sub
  16. Sub requete()
  17. Conn = "ODBC;"
  18. Conn = Conn & "DSN=glpi;"
  19. Conn = Conn & "SERVER=10.10.10.10;"
  20. Conn = Conn & "UID=admin;"
  21. 'type OS
  22. With ActiveSheet.QueryTables.Add(Connection:=Conn, Destination:=Range("B4" ))
  23.         .CommandText = Array("SELECT glpi_dropdown_os.name FROM glpi_dropdown_os RIGHT OUTER JOIN glpi_computers ON glpi_computers.os = glpi_dropdown_os.id WHERE glpi_computers.name = '" & name & "' " )
  24.         .name = "Lancer la requête à partir de glpi"
  25.         .FieldNames = False
  26.         .RowNumbers = False
  27.         .FillAdjacentFormulas = False
  28.         .PreserveFormatting = True
  29.         .RefreshOnFileOpen = False
  30.         .BackgroundQuery = True
  31.         .RefreshStyle = xlInsertDeleteCells
  32.         .SavePassword = False
  33.         .SaveData = True
  34.         .AdjustColumnWidth = False
  35.         .RefreshPeriod = 0
  36.         .PreserveColumnInfo = True
  37.         .Refresh BackgroundQuery:=False
  38. End With
  39. 'OS Version
  40. With ActiveSheet.QueryTables.Add(Connection:=Conn, Destination:=Range("B5" ))
  41.         .CommandText = Array("SELECT glpi_dropdown_os_version.name FROM glpi_dropdown_os_version RIGHT OUTER JOIN glpi_computers ON glpi_computers.os_version = glpi_dropdown_os_version.id WHERE glpi_computers.name = '" & name & "' " )
  42.         .name = "Lancer la requête à partir de glpi"
  43.         .FieldNames = False
  44.         .RowNumbers = False
  45.         .FillAdjacentFormulas = False
  46.         .PreserveFormatting = True
  47.         .RefreshOnFileOpen = False
  48.         .BackgroundQuery = True
  49.         .RefreshStyle = xlInsertDeleteCells
  50.         .SavePassword = False
  51.         .SaveData = True
  52.         .AdjustColumnWidth = False
  53.         .RefreshPeriod = 0
  54.         .PreserveColumnInfo = True
  55.         .Refresh BackgroundQuery:=False
  56. End With
  57. End Sub
    



Message édité par p'titmath le 21-06-2007 à 19:05:04
mood
Publicité
Posté le 21-06-2007 à 19:00:06  profilanswer
 

n°1577895
p'titmath
Posté le 22-06-2007 à 10:07:27  profilanswer
 

help no one?

n°1577900
jpcheck
Pioupiou
Posté le 22-06-2007 à 10:13:44  profilanswer
 

n'utilisant pas ce type de bdd, je tente qd même une réponse.
tu veux le résultat de ta requête, mais est-ce qu'il est possible d'avoir, via ta destination, plusieurs solutions ?
j'entends par là, si le recordset de ta requete contient plusieurs résultats, iront-ils en b5, puis b6 b7 etc. ?
et test tout bete a faire, est-ce que la requete que tu fais hors d'excel te donne un résultat ou pas ? :)

n°1577902
p'titmath
Posté le 22-06-2007 à 10:17:56  profilanswer
 

en fait qd je n'appelle pas de fonction mais que je tape les requetes à la mano les unes à la suites des autres , cela fonctionne bien sans souci. (mes cellules sont biens remplis).
 
ce qui est bizarre, c'est qu'excel lance bien la connection ODBC, se connecte à la base mais je n'ai aucun retrour dans les cellules.
 
il doit me manquer un truc tout bete mais quoi ;<
 
 

n°1577913
p'titmath
Posté le 22-06-2007 à 10:28:53  profilanswer
 

des news !
 
en fait en passant la commande
 
name = "gs11slwi025" directement dans la fonction requete il me sort bien des valeurs.
 
donc en fait il faut arriver à faire passer la variable name dans la fonction requete.
 
est ce que qqn sait?

n°1577924
jpcheck
Pioupiou
Posté le 22-06-2007 à 10:41:24  profilanswer
 

ben ...
sans le call tu fais direct
 

Code :
  1. requete(name)


 
et dans la définition de la fonction tu mets
 

Code :
  1. sub requete (name as string)

n°1577930
tegu
Posté le 22-06-2007 à 10:46:57  profilanswer
 

On devrait interdire les débutants :)

 

Tu dois déclarer un paramètre à ta fonction requete() comme ça :
Sub requete(name As String)

 

et appeler cette procédure avec la syntaxe suivante
Call requete(name)

 

Vérifie bien quand même que tu n'as pas, en plus, un problème de majuscules/minuscules (gs11slwi025 ou GS11SLWI025)

 

edit: grillé, voilà ce que c'est de faire plusieurs trucs en même temps :)


Message édité par tegu le 22-06-2007 à 10:47:35
n°1577931
p'titmath
Posté le 22-06-2007 à 10:56:42  profilanswer
 

lol
oui je sais, j'avoue que le dev et moi ca fait 40, mais j apprend =)
comme on dit c'est en forgeant qu'on devient forgeron
 
merci en tt cas ca marche


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  fonction SQL dans macro excel

 

Sujets relatifs
[SQL] Fonctionnement des sous-requêtes[SQL] aide avec la fonction MAX()
[VBA Excel]Passage d'une variable d'un Userform à un autre[RESOLU] librairie C pour le buzzer pc ? fonction frequence ?
connection ODBC Persistante sous ExcelRequêtes SQL sur AS400 via lien ODBC ? (PHP)
Problème d'insert into en masse MySql / Sqlcopier coller cellule excel dans word à partir d'excel
Faire un ping sous excel 
Plus de sujets relatifs à : fonction SQL dans macro excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR