Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/09/2011, 15h25   #1
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Par défaut Exécution d'une procédure SQL Server à partir d'Excel en VBA

Salut,

j'essaye d'exécuter une procédure stockées sous SQL Server à partir d'Excel, mais ça ne veut point fonctionner.

La-dite procédure (qui ajoute un utilisateur dans une base) :
Code :
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
PROCEDURE [dbo].[sps_AddUser]  
	@ID 				uniqueidentifier OUTPUT,
	@GRP_ID 			uniqueidentifier,
	@CREATEUR 			varchar(255),
	@DATE_CREATION 		datetime,
	@USR_LOGIN 			varchar(255),
	@USR_PWD 			varchar(255),
	@USR_MAIL 			varchar(255),
	@USR_PRENOM 		varchar(50),
	@USR_NOM 			varchar(50),
	@ENV_ID 		    uniqueidentifier,
	@USR_GROUPE_Ids 		varchar(MAX),
	@USR_GROUPE_PRINCIPAL 	uniqueidentifier,
	@IS_ADMIN 			bit,
	@IS_ALLOWED_SENDING_MAIL bit,
	@IS_ALLOWED_MANAGE_USER bit,
	@IS_FILTERED bit,
	@DEFAULT_PAGE_ID uniqueidentifier
AS
declare @is_log int
DECLARE @LANGUE varchar(10)
begin
	SET NOCOUNT ON
	SET @ID = NEWID()
...
END
Le code VBA que j'ai tenté de créer :
Code :
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
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rec As New ADODB.Recordset
 
cnn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=xxx\xxx;User ID=xxx;Password=xxx;Trusted_Connection=False"
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
 
 
cmd.CommandText = "mabase.dbo.sps_AddUser"
 
cmd.Parameters.Append cmd.CreateParameter("@ID", adGUID, adParamOutput, 36, Uid)
cmd.Parameters.Append cmd.CreateParameter("@GRP_ID", adGUID, adParamInput, 36, "55555555-5555-5555-5555-555555555555")
cmd.Parameters.Append cmd.CreateParameter("@CREATEUR", adVarChar, adParamInput, 255, "support")
cmd.Parameters.Append cmd.CreateParameter("@DATE_CREATION", adDate, adParamInput, 10, "30/09/2011")
cmd.Parameters.Append cmd.CreateParameter("@USR_LOGIN", adVarChar, adParamInput, 255, "moi")
cmd.Parameters.Append cmd.CreateParameter("@USR_PWD", adVarChar, adParamInput, 255, "PKYPn9BxBmaKnK1mKjCMZQ==")
cmd.Parameters.Append cmd.CreateParameter("@USR_MAIL", adVarChar, adParamInput, 255, "demo@demo.com")
cmd.Parameters.Append cmd.CreateParameter("@USR_PRENOM", adVarChar, adParamInput, 50, "Robert")
cmd.Parameters.Append cmd.CreateParameter("@USR_NOM", adVarChar, adParamInput, 50, "Dupont")
cmd.Parameters.Append cmd.CreateParameter("@ENV_ID", adGUID, adParamInput, 36, "36cf3fd6-9962-4d10-a34a-b2ee4fae6986")
cmd.Parameters.Append cmd.CreateParameter("@USR_GROUPE_Ids", adVarChar, adParamInput, 36, "55555555-5555-5555-5555-555555555555")
cmd.Parameters.Append cmd.CreateParameter("@USR_GROUPE_PRINCIPAL", adGUID, adParamInput, 2048, "55555555-5555-5555-5555-555555555555")
cmd.Parameters.Append cmd.CreateParameter("@IS_ADMIN", adBoolean, adParamInput, 1, False)
cmd.Parameters.Append cmd.CreateParameter("@IS_ALLOWED_SENDING_MAIL", adBoolean, adParamInput, 1, True)
cmd.Parameters.Append cmd.CreateParameter("@IS_ALLOWED_MANAGE_USER", adBoolean, adParamInput, 1, False)
cmd.Parameters.Append cmd.CreateParameter("@IS_FILTERED", adBoolean, adParamInput, 1, False)
cmd.Parameters.Append cmd.CreateParameter("@DEFAULT_PAGE_ID", adGUID, adParamInput, 36, "22222222-2222-2222-2222-222222222222")
 
rec.Open cmd, , adOpenDynamic, adLockReadOnly
Déjà je ne suis pas sûr de la syntaxe (en particulier du Output, que je n'ai pas besoin de récupérer dans Excel soit dit en passant) et des déclarations.

Et quand j'exécute j'ai le message
Citation:
Erreur d'exécution '-2147217887 (80040e24)':
Valeur de caractère non valide pour la spécification.
Quelqu'un saurait ce qui coince dans mon code ?
Au niveau de la date, des UID ou des précisions peut-être ?

PS : quand je scanne avec SQL Server Profiler, je ne vois passer que ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Microsoft Office 2003 :
-- network protocol: TCP/IP
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language Français
set dateformat dmy
set datefirst 1
set transaction isolation level read committed
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 16h14   #2
Membre actif
 
Avatar de Peanut
 
Inscription : décembre 2003
Messages : 375
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 375
Points : 192
Points : 192
Bon, j'ai recréé des tables temporaires pour tester ligne par ligne avec 10 essais à chaque fois et j'ai fini par trouver la syntaxe exacte (enfin pas exactement pour la date mais ça me convient comme ça) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cmd.Parameters.Append cmd.CreateParameter("@ID", adGUID, adParamOutput, , Uid)
cmd.Parameters.Append cmd.CreateParameter("@GRP_ID", adGUID, adParamInput, , "{55555555-5555-5555-5555-555555555555}")
cmd.Parameters.Append cmd.CreateParameter("@CREATEUR", adVarChar, adParamInput, 255, "support")
cmd.Parameters.Append cmd.CreateParameter("@DATE_CREATION", adDBDate, adParamInput, 8, Date)
cmd.Parameters.Append cmd.CreateParameter("@USR_LOGIN", adVarChar, adParamInput, 255, "moi")
cmd.Parameters.Append cmd.CreateParameter("@USR_PWD", adVarChar, adParamInput, 255, "PKYPn9BxBmaKnK1mKjCMZQ==")
cmd.Parameters.Append cmd.CreateParameter("@USR_MAIL", adVarChar, adParamInput, 255, "demo@demo.com")
cmd.Parameters.Append cmd.CreateParameter("@USR_PRENOM", adVarChar, adParamInput, 50, "Robert")
cmd.Parameters.Append cmd.CreateParameter("@USR_NOM", adVarChar, adParamInput, 50, "Dupont")
cmd.Parameters.Append cmd.CreateParameter("@ENV_ID", adGUID, adParamInput, , "{36cf3fd6-9962-4d10-a34a-b2ee4fae6986}")
cmd.Parameters.Append cmd.CreateParameter("@USR_GROUPE_Ids", adVarChar, adParamInput, 2048, "55555555-5555-5555-5555-555555555555")
cmd.Parameters.Append cmd.CreateParameter("@USR_GROUPE_PRINCIPAL", adGUID, adParamInput, , "{55555555-5555-5555-5555-555555555555}")
cmd.Parameters.Append cmd.CreateParameter("@IS_ADMIN", adBoolean, adParamInput, , False)
cmd.Parameters.Append cmd.CreateParameter("@IS_ALLOWED_SENDING_MAIL", adBoolean, adParamInput, , True)
cmd.Parameters.Append cmd.CreateParameter("@IS_ALLOWED_MANAGE_USER", adBoolean, adParamInput, , False)
cmd.Parameters.Append cmd.CreateParameter("@IS_FILTERED", adBoolean, adParamInput, , False)
cmd.Parameters.Append cmd.CreateParameter("@DEFAULT_PAGE_ID", adGUID, adParamInput, , "{22222222-2222-2222-2222-222222222222}")
Peanut est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h31.


 
 
 
 
Partenaires

Hébergement Web