Puisque tu as trop de problèmes, je te propose une méthode fastidieuse mais qui résoud ton problème:
Tu crées 4 fonctions du même nom avec comme différence le nombre de paramètres. Ex
1/ Function db_Sql(query As String, connect_db As ADODB.Connection, type_req As String)
2/ Function db_Sql(query As String, connect_db As ADODB.Connection, type_req As String, curseurRec)
3/ Function db_Sql(query As String, connect_db As ADODB.Connection, type_req As String, curseurRec, typeRec)
4/ Function db_Sql(query As String, connect_db As ADODB.Connection, type_req As String, curseurRec, typeRec, Chaine)
5/ .... y en a d'autres jusqu'à 12 ou 24
Maintenant tu fais des test (if) en fonction des arguments facultatifs renseignés; tu choisis la fonction correspondante.
Laborieux mais ki marche