Bonjour à tous,
j'ai fait un programme sous vba excel qui permet d'afficher un certains nombre d'info venant de base de donnée sql server.Pour cela j'ai établi une connectionn vers sql server et j'ai aussi fait la requete sql me permettant d'afficher les informations dont j'ai besoin en changeant un num de serie sur une case excel dans j'ai moi meme spécifié l'emplacement. vOILA MON PROGRAMME
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
'D'abord pour accéder à une base de donnée SQL Server, il faut se connecter à cette source de donnée
'Utiliser un recordset pour accéder aux données
'Le recordset est l'objet qui parcourt le résultat d'une requête SQL
'Ajouter les références requises pour pouvoir déclarer l'objet de connection: Microsft DAO 3.6 Object Library et Microsoft Data Object 2.8 Library
 
Sub FP56_5G2()
 
Dim cN As ADODB.Connection 'Declarer l'objet de connexion
Dim rs As ADODB.Recordset 'Declarer le recordset
Dim Z As Integer
Dim SerialNumber As Integer 'numéro de série appareil
 
Worksheets("FP56").Range("A9").CurrentRegion.Borders.LineStyle = xlNone 'efface bordures
Worksheets("FP56").Range("A10:N50").ClearContents 'efface données
Worksheets("FP56").Range("E10:E50").FormatConditions.Delete 'efface format conditionnel
Worksheets("FP56").Range("I10:I50").FormatConditions.Delete
Worksheets("FP56").Range("I10:I50").Font.ColorIndex = xlColorIndexAutomatic
Worksheets("FP56").Range("E10:E50").Font.ColorIndex = xlColorIndexAutomatic
Worksheets("FP56").Range("A9").CurrentRegion.Font.ColorIndex = xlColorIndexAutomatic 'efface la couleur du texte
 
    Set cN = New ADODB.Connection 'Instnacier l'objet de connexion
    Set rs = New ADODB.Recordset 'Instancier l'objet de connection
    dbPath = Path
'Définir une connexion string(chaine de connection) et l'affecter à la connexion
'Cette chaine doit renseigner sur le provider( fournisseur de BDD ou SGBD), le nom de la BDD et les paramètres de Login et mot de passe(optionnels)
 
SerialNumber = Worksheets("FP56").Range("C4").Value
Application.ScreenUpdating = False
Z = 10
 
 'connection à la base de données
    cN.ConnectionString = "Provider=SQLOLEDB;Data Source=VERPACWS016\ENTERPRISE;Initial Catalog=enterprise; User ID=sa;Password=Alpha2000;"
    cN.Open 'Ouvrir la connexion en utilisant l'objet de connexion instancié et la connection string
 
'Selection des enregistrements en fonction du numéro de série de l'appareil et de l'échantillon
rs.Open "select T.[Sample Name],T.[Start Time], T.Method, T.[Instrument Serial],RD.xValue " _
      & "from  dbo.tempresultsgrid_950ece74eeff4749bf7c08b8d3632653 as T " _
      & "inner join dbo.ResultData as RD on T.result_id=RD.result_id " _
      & "inner join dbo.Result as R on R.result_id= T.result_id " _
      & "inner join dbo.xVariable as V on RD.variable_id=V.variable_id " _
      & "inner join dbo.Instrument as I on R.instrument_id=I.instrument_id " _
      & "where V.identifier in('FP56_EFP1Flash') " _
      & "and I.instrumenttype_id = cast('73354290-e09a-4c17-aa26-43a4b579e1db'as uniqueidentifier) " _
      & " and T.[Sample Name]='P-XYLENE' " _
      & " and T.[Instrument Serial]=" & SerialNumber & " order by T.[Start Time] DESC", cN, adOpenKeyset, adLockOptimistic
 
    If Not rs.EOF Then
        While Not rs.EOF
            Worksheets("FP56").Cells(Z, 1).Value = rs.Fields("Sample Name").Value
            Worksheets("FP56").Cells(Z, 2).Value = rs.Fields("xValue").Value
            Worksheets("FP56").Cells(Z, 3).Value = rs.Fields("Start Time").Value
            Worksheets("FP56").Cells(Z, 4).Value = rs.Fields("Method").Value
            rs.MoveNext
            Z = Z + 1
        Wend
    End If
rs.Close
cN.Close
Set rs = Nothing
Set cN = Nothing
 
'Selection des enregistrements en fonction du numéro de série de l'appareil et de l'echantillon
Z = 23
cN.Open
rs.Open "select T.[Sample Name],T.[Start Time], T.Method, T.[Instrument Serial],RD.xValue " _
      & "from  dbo.tempresultsgrid_950ece74eeff4749bf7c08b8d3632653 as T " _
      & "inner join dbo.ResultData as RD on T.result_id=RD.result_id " _
      & "inner join dbo.Result as R on R.result_id= T.result_id " _
      & "inner join dbo.xVariable as V on RD.variable_id=V.variable_id " _
      & "inner join dbo.Instrument as I on R.instrument_id=I.instrument_id " _
      & "where V.identifier in('FP56_EFP1Flash') " _
      & "and I.instrumenttype_id = cast('73354290-e09a-4c17-aa26-43a4b579e1db'as uniqueidentifier) " _
      & " and T.[Sample Name]='CRM 256-51' " _
      & " and T.[Instrument Serial]=" & SerialNumber & " order by T.[Start Time] DESC", cN, adOpenKeyset, adLockOptimistic
 
    If Not rs.EOF Then
        While Not rs.EOF
            Worksheets("FP56").Cells(Z, 1).Value = rs.Fields("Sample Name").Value
            Worksheets("FP56").Cells(Z, 2).Value = rs.Fields("xValue").Value
            Worksheets("FP56").Cells(Z, 3).Value = rs.Fields("Start Time").Value
            Worksheets("FP56").Cells(Z, 4).Value = rs.Fields("Method").Value
            rs.MoveNext
            Z = Z + 1
        Wend
    End If
rs.Close
cN.Close
Set rs = Nothing
Set cN = Nothing
 
 
End Sub
Quand je compile il y'a une erreur venant apparemment du 2eme cN.Open mais je ne vois pas tro pourquoi et comment y remédier. Voila le message d'erreur
Erreur d'exécution '91'
Variable objet ou variable de bloc With non définie
Merci d'avance pour vos réponses