Les Allergies
Alimentaires
Posez votre question Signaler

Lancer procédure SQL via VB Excel [Résolu]

Ludivine50 113Messages postés 9 février 2009Date d'inscription 2 février 2012Dernière intervention - Dernière réponse le 24 mars 2009 à 19:03
Bonjour à tous,
Je me demande comment on peut lancer une procédure stockée sql server, à partir de VB Excel.
Pour être plus précise, un agent va ouvrir un fichier excel, il lance une macro qui va transformer le fichier pour le préparer à une importation par sql server. Ensuite, j'aimerais que la routine lance l'importation du fichier excel par Sql server, en appelant le nom de la procédure stockée qui réalise cet import, c'est à dire sans écrire la procédure stockée dans VB Excel.
Quelqu'un sait-il si c'est réalisable?
Merci
Lire la suite 

Lancer procédure SQL via VB Excel »

7 réponses
Réponse
+1
moins plus
Bonjour Ludivine,

Il m'a fallut beaucoup de temps pour comprendre ta question
et "la modélisé" dans un fait vécu, et oui j'ai fait quelque chose
comme ce que tu énonce et si je ne m'abuse c'était exactement
cela mais pas sur la BD de SQL Serveur mais sur IMAX, un système
propriétaire.

Ceci dit, sous excel tu peux lancer des requêtes directement sur ta BDs
qui utiliseras les procédures stockèes de ta BD.

Je l'ai réalisé sous Excel 95, alors comme tu vois ça ne date pas d'hier!
Toutefois, avec l'assistant de création, ça devrait se faire.

Je vais faire quelque tests, et tu peux essayer aussi, lance dans
le menu Excel :

// Menu / Données / Données externes / Créer une requête...

À partir de la, tu peux si je me souviens bien on peut lire/écrire
dans toute sorte de BDs connus.

Ceci dit, peut-être que d'autres verront autres choses :-)

Lupin
Ludivine50- 11 mars 2009 à 09:15
Bonjour Lupin et merci de ta réponse,

J'ai du mal m'expliquer. Je ne veux pas importer dans excel dans données de bases de données externes.
Je vais essayer d'être plus claire:

Le fichier Excel sert d'outil de collecte de données. Un agent reçoit ce fichier, le contrôle visuellement, puis clique sur un bouton pour valider. Cela lance une macro vb, qui crée un nouvel onglet et range les données en "mode base de données" pour être ensuite importées par sql server. Si je ne fais pas ce retraitement, il m'est impossible de récupérer les données par une procédure sql dans le fichier à l'état brut.

Le stockage des données s'effectue sous SQL SERVER; j'ai une procédure stockée actuellement dans un fichier .sql qui fait les traitements suivants, pour simplifier: faire un lien ODBC vers le fichier Excel à importer, importer les données dans sql server.
Mais cet import doit être réalisé régulièrement; il est donc nécessaire d'automatiser l'exécution de cette procédure stockée. Dans un premier temps, j'ai donc réalisé un "travail" sous sql server: j'ai créé une tâche planifiée qui exécute quotidiennement ma procédure stockée à 22h. Notez que pour réaliser une tâche planifiée, je suis obligée de recopier dedans mon script .sql.

Mais l'import quotidien des données n'est suffisant. Je voudrais que lorsque l'agent clique sur le bouton "valider", cela lance la procédure de transformation du fichier pour une préparation à l'import par sql server (comme maintenant), puis que cela lance la procédure que j'ai créée dans mon fichier .sql (ce que je n'arrive pas à réaliser).

J'espère avoir été plus claire. Je déteste quand les gens font des romans pour expliquer leur problème! J'espère que vous non! ;-)
Merci
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour à tous,

voici la solution à mon problème:

En effet, mon problème finalement était le suivant: je ne savais pas où mettre ma procédure stockée.

Il fallait simplement faire un CREATE procedure PS_TEST AS... dans sql server.

Et dans VB faire la connexion à la bd sql server et cN.Execute ("exec dbo.PS_TEST").

Bon courage à tous
Ajouter un commentaire
Réponse
+0
moins plus
Quelqu'un a-t-il une idée? J'ai écumé les forums mais les rares réponses sont en chinois. Une solution simple, et compréhensible serait la bienvenue! ;-)) Souvent, ils écrivent la procédure sql directement dans le vb. La mienne est relativement longue, donc je souhaiterais la lancer en écrivant le titre de la procédure. Peut-être n'ais-je pas trouvé les bons posts?
SOS d'une développeuse en herbe en détresse!
Ajouter un commentaire
Réponse
+0
moins plus
Coucou,
Si ton import peut s'effectuer en dehors de ton appli excel via une petite routine externe exécutable, tu dois pouvoir te servir de la fonction shell() en vb
Syntaxe
Shell(pathname[,windowstyle])

Exemple :
' Si vous attribuez la valeur 1 au deuxième argument,
' l'application s'ouvre à sa taille normale
' et devient l'application active.
Dim RetVal
' Exécute la calculatrice.
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)

Cette fonction marche avec les .exe, les .bat
Option 0 pour masquer la fenêtre

A plus.
Ludivine50- 12 mars 2009 à 12:56
Bonjour mikebzh et merci pour ta réponse,

Pour ta solution, je dois transformer un fichier .sql en exécutable. J'ai cherché mais apparemment ce n'est pas possible à réaliser. Peut-être peux-tu me donner un indice?
Ajouter un commentaire
Réponse
+0
moins plus
Salut Monsieur
Je voulais savoir comment je peux débuter pour créer par exemple un Logiciel (Programme)
Donc je demande si possible de me donner la procedure.
Merci.
Ajouter un commentaire
Ce document intitulé « Lancer procédure SQL via VB Excel » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?