Liste déroulante et connexion multiple à une base de données
Fermé
slim025
-
Modifié le 14 mai 2017 à 13:39
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 - 16 mai 2017 à 13:44
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 - 16 mai 2017 à 13:44
A voir également:
- Liste déroulante et connexion multiple à une base de données
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Gmail connexion - Guide
- Supprimer liste déroulante excel ✓ - Forum Excel
- Effacer le contenue d'une cellule avec liste déroulante - Forum Excel
2 réponses
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
15 mai 2017 à 20:47
15 mai 2017 à 20:47
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
Kalissi
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
20
16 mai 2017 à 13:44
16 mai 2017 à 13:44
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
16 mai 2017 à 08:57
Je ne suis pas très bon en dev. Mais je vais essayer de faire ça.