Bonjour!
J'ai fait un petit outil, qui marche, mais qui n'est pas très propre vu que je débutais (et je ne maitrise pas vraiment, j'adapte, je teste, ça prend du temps donc!)
Pour faire plus propre, je veux essayer de rajouter des fonctions auxquelles je ferai appel.
Seulement en créant ces fonctions j'ai toujours des problèmes "Objet Requis" quand je cherche par exemple à avoir la valeur d'une liste box contenue dans mon Userform.
Pour illustrer tout ça :
Sauf que là j'ai beaucoup d'éléments récurrents, que j'utilise souvent (Set... Rs.close etc...)
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 Sub Attachement_Aff_Click() Set Cn = New ADODB.Connection Set Rs = New ADODB.Recordset Cn.Open "dsn=" & BASE_IBI & "" ' ouverture de la connexion à la base Rs.Open "Select * from affaires where afNumero = '" & Attachement_Aff.Value & "';", Cn While Rs.EOF = False 'Label9.Caption = Rs.Fields(2).Value Label9.Caption = Rs!afDescriptC.Value Rs.MoveNext Wend Rs.Close ' Pour fermer le Recordset Cn.Close ' \\ Pour ne pas fermer la connexion Set Rs = Nothing ' Pour vider le RecordSet Set Cn = Nothing ' \\ Pour ne pas vider la connexion Label9.Visible = True End Sub
Donc je crée la fonction suivante :
Qui me servirait de "tronc commun", et appellerait la fonction suivante (car déclarer en variables globales mes commandes sql etc... ça ne marchait pas en dehors d'une procédure)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub Connexion_Base() Set Cn = New ADODB.Connection Set Rs = New ADODB.Recordset Cn.Open "dsn=" & BASE_IBI & "" ' ouverture de la connexion à la base Call Remp_Affaires Rs.Close ' Pour fermer le Recordset Cn.Close ' \\ Pour ne pas fermer la connexion Set Rs = Nothing ' Pour vider le RecordSet Set Cn = Nothing ' \\ Pour ne pas vider la connexion End Sub
Attachement_Aff.Value est la valeur que je veux récupérer de la listbox sur laquelle je clique (et qui lance le code à ce moment là)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Function Remp_Affaires() Code_Connexion = "Rs.Open ""Select * from affaires where afNumero = '" & Attachement_Aff.Value & "';"", Cn" Code_Connexion = Code_Connexion & "While Rs.EOF = False" Code_Connexion = Code_Connexion & "Attachement_Label_Desc.Caption = Rs!afDescriptC.Value" Code_Connexion = Code_Connexion & "Rs.MoveNext" Code_Connexion = Code_Connexion & "Wend" End Function
et Attachement_Label_Desc.Caption est un label que je remplis avec certaines infos récupérées avec la requête SQL.
Or justement, ce sont ces deux là qui bloquent et ne sont pas reconnus.
J'ai testé de déclarer Attachement_Aff.Value en variable, ça marche, mais je ne trouve pas ça optimal, je devrais pouvoir récupérer cette valeur sans avoir à déclarer une variable la récupérant non ?
Merci pour vos conseils.
Partager