Bonsoir tout le monde,

Je viens vous demander de l'aide car je bloque totalement sur un petit projet pour lequel j'ai été mandaté.

Dans mon projet, j'ai une base de donnée contenant une liste de serveur ainsi que des dates de production de ces serveurs par journée (01.01.2014 - 02.01.2014 - 03.01.2014 - etc.). Tous les serveurs ne fonctionnent pas forcément tous les jours.

Avec une macro excel je dois effectuer des requêtes SQL sur ma base de donnée. Pour celà c'est bon j'arrive à me connecter à ma base de donné et à faire des requêtes sur celle-ci comme par exemple récupérer ma liste de serveur suivant des dates ou encore récupérer ma liste de serveur tout simplement.

J'utilise l'objet recordset.

Maintenant le problème c'est que je dois pouvoir récupérer une liste de serveurs qui ont fonctionné en production entre deux dates (ex : 01.01.2014 et 31.01.2014) et sur cette liste de serveurs je devrai mettre en couleur les serveurs qui n'ont pas fonctionné pendant ou moins 1 jour etc.. Je me dis qu'il faut que je vérifie une date après l'autre pour chacun de ces serveurs donc effectuer une double boucle (une boucle sur les serveurs et une boucle sur les dates). Toutefois je ne vois pas du tout comment faire avec un objet comme recordset. J'ai cherché sur google mon ami si je pouvais trouver un début de solution à mon problème mais sans succès.

Est-ce que l'un d'entre vous à t-il déjà effectuer une double boucle de la sorte avec un object recordset ?

Voici mon code pour plus de précision :

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
Option Explicit
 
Sub DataExtract()
 
' 1) et 2) Create a connection object.
' 3) Provide the connection string.
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
Dim strConn As String
' Create a recordset object.
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim Rowcnt, Fieldcnt As Integer
Rowcnt = 2
 
 
'Connect to the Pubs database on the local server. A METTRE EN VARIABLE PUBLIC
strConn = "PROVIDER=SQLOLEDB;" & _
          "Server=SQLEXPRESS;" & _
          "Database=Server;" & _
          "UserID=id; Password=*****; Trusted_Connection=yes"
 
'Now open the connection.
cn.Open strConn
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
 
    With rs
        .ActiveConnection = cn
        .Open "SELECT DISTINCT Serveur FROM test WHERE date BETWEEN '01/01/2014' AND '31/01/2014'"
    End With
 
While Not rs.EOF
    For Fieldcnt = 0 To rs.Fields.Count - 1
        Cells(Rowcnt, Fieldcnt + 1).Value = _
        rs.Fields(Fieldcnt).Value
    Next Fieldcnt
    rs.MoveNext
    Rowcnt = Rowcnt + 1
Wend
' Tidy up
rs.Close
Set rs = Nothing
 
cn.Close
 
Set cn = Nothing
 
End Sub