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 : 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
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 : 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
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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