A voir également:
- Liste déroulante et connexion multiple à une base de données
- Liste déroulante excel - Guide
- Gmail connexion - Guide
- Liste déroulante en cascade - Guide
- Base de registre - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
2 réponses
Bonjour,
Dans un premier temps, isoler la création de la connexion dans une méthode à part avec comme paramètre le nom de la connexion.
Une méthode pour ouvrir la connexion.
Une méthode pour fermer la connexion.
Procède par petit changement.
1.) Isole la connexion dans une méthode.
2.) Ajoute le nom de la connexion dans un paramètre.
Diviser pour régner. Structurer pour solidifier.
K
Dans un premier temps, isoler la création de la connexion dans une méthode à part avec comme paramètre le nom de la connexion.
Une méthode pour ouvrir la connexion.
Une méthode pour fermer la connexion.
Procède par petit changement.
1.) Isole la connexion dans une méthode.
2.) Ajoute le nom de la connexion dans un paramètre.
Diviser pour régner. Structurer pour solidifier.
K
Bonjour,
Voici un exemple de ce que je ferais ...
K
Voici un exemple de ce que je ferais ...
Option Explicit
Dim cn As ADODB.Connection
Public Sub GenerateReport()
Dim sqlQuery As String
Dim rs As ADODB.Recordset
Dim resultSheet As Worksheet
Dim i As Long, j As Long
Dim row As Long, nStep As Long
Dim nMax As Long
Dim msn As String
'Create or clear result sheet
CreateOrClearSheet (SHEET_NAME_RESULTS)
Set resultSheet = ThisWorkbook.Sheets(SHEET_NAME_RESULTS)
'Get the selected NUMBER
If (Len(ThisWorkbook.Sheets(SHEET_NAME_STARTHERE).Cells(12, 3)) > 0) Then
msn = ThisWorkbook.Sheets(SHEET_NAME_STARTHERE).Cells(12, 3).Value
'Build the SQL request to be executed
sqlQuery = getSqlRequest(SHEET_NAME_SQL_REQUESTS)
'Replace ##NUMBER## token with selected MSN
sqlQuery = Replace(sqlQuery, "##NUMBER##", Number)
Else
sqlQuery = getSqlRequest(PARAM_QUERY_WITHOUT_NUMBER)
End If
sqlQuery = Replace(sqlQuery, "##FAM_STDPT##", GetSTDPList)
sqlQuery = Replace(sqlQuery, "##D_LIST##", GetDList)
If Not (Len(sqlQuery) = 0) Then
OuvrirConnexion (SERVER_NAME1)
'Init DB connection
Set rs = New ADODB.Recordset
'Open recordset
rs.Open sqlQuery, cn
' Loading header
For j = 1 To rs.Fields.Count
resultSheet.Cells(1, j).Value = rs.Fields(j - 1).Name
resultSheet.Cells(1, j).Interior.Color = RGB(64, 128, 192) 'blue
resultSheet.Cells(1, j).Font.Color = RGB(255, 255, 255) 'white
resultSheet.Cells(1, j).Columns.AutoFit
Next
' Loading data
resultSheet.Cells(2, 1).CopyFromRecordset rs
FermerConnexion
'Display the results
resultSheet.Activate
' Length of columns autofit
resultSheet.Range("A1:XFD10").Columns.AutoFit
' Length of column F fixed to 60
resultSheet.Columns("F").ColumnWidth = 60
MsgBox "Report generated successfully.", vbInformation, "Report"
Else
MsgBox "SQL query is empty.", vbCritical
End If
End Sub
'
Public Sub OuvrirConnexion(ByVal pNomServeur As String)
Set cn = New ADODB.Connection
'Open connection to the DB and execute query
With cn
.Provider = "sqloledb"
.ConnectionString = "Data Source=" & pNomServeur & ";Initial Catalog=" & DB_CATALOG & ";Integrated Security=SSPI;Application Name=" & APPLICATION_NAME & ";"
.ConnectionTimeout = 30
.CommandTimeout = SQL_COMMAND_TIMEOUT
.CursorLocation = adUseClient
.Open
End With
End Sub
'
Public Sub FermerConnexion()
cn.Close
End Sub
K
Je ne suis pas très bon en dev. Mais je vais essayer de faire ça.