Fonction VBA

Bonjour

Je souhaite crée une fonction qui prend en paramètre une requetés , une destination de stockage de résultat de requeté et qui permet de remplir directement une Listbox , mon problème est dans le troisième paramètre ,

Si vous pouvez résoudre mon problème ou me proposer autre chose je vous serai reconnaissant

mon objectif est avoir une fonction qui prend en paramètre une requeté et une liste box et qui place le résultat de la requeté dans la lisBox

Merci

Ma Fonction :

Function RequetSelectDEX(Requet As String, Destination As MSForms.ListBox, Cherched As Variant)

Dim recTmp As Recordset

Dim cnn As Connection

Dim strSQL As String

Set cnn = New Connection

' Définition de la connexion

cnn.Provider = "Microsoft.ACE.OLEDB.12.0"

' Ouverture

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\pcfj672\Desktop\Tableau de bord\tbd.accdb;;Persist Security Info=False" 'Je defini un chêne de texte qui contient les information de ma connection

' Définition de la source

strSQL = Requet

' Ouverture de la source

Set recTmp = New Recordset

recTmp.Open strSQL, cnn

' Lecture de la source jusqu'à la fin

Do While Not recTmp.EOF

Destination.AddItem recTmp!Cherched

recTmp.MoveNext

Loop

recTmp.Close

Set recTmp = Nothing

End Function

L'appel de fonction :

Call RequetSelectDEX("SELECT DISTINCT DEX FROM Table1", Setting.ListBox1, DEX)

Bonjour

Pourquoi ne pas mettre le résultat de votre requête dans un onglet dans un premier temps

Ensuite le VBA parcourt votre liste ( 1 colonne par ex ) ligne par ligne en l'ajoutant dans la list box

Exemple

Sub Alimenter_listbox

'Recherche derniere ligne de produite renseignée en colonne A
Derniere_cellule_A = Range("A65536").End(xlUp).Row

For Each d In Sheets("Feuil1").Range("A2:A" & Derniere_cellule_A)

    If d <> "" then
    Listbbox1.additem d.value
    End if            

Next

cdt,

Bonjour , je n'arrive pas a récuperer les résultats de la requet SQL que je lance depuis excel , pour récuperer le résultat d'un select

Bon but et de lancer une requet de excel pour récuperer des élement de access dans excel

Merci pour votre aide

Sub SelectDEX()

Chaine = "C:\Users\pcfj672\Desktop\Tableau de bord\tbd.accdb"

Dim recTmp As recordSet
Dim cnn As connection
Dim strSQL As String

Set cnn = New connection

' Définition de la connexion
cnn.Provider = "Microsoft.ACE.OLEDB.12.0"
' Ouverture
 cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Chaine & ";;Persist Security Info=False" 'Je defini un chêne de texte qui contient les information de ma connection
' Définition de la source
'strSQL = "SELECT DISTINCT DO FROM Table1 where DEX='Occitanie'"
strSQL = "SELECT DISTINCT DO FROM Table1"

' Ouverture de la source
Set recTmp = New recordSet
recTmp.Open strSQL, cnn

Derniere_cellule_A = Range("A65536").End(xlUp).Row

For Each d In Sheets("Feuil1").Range("A2:A" & Derniere_cellule_A)

    If d <> "" Then
    recTmp.AddItem d.Value
    End If

Next
' Lecture de la source jusqu'à la fin
Do While Not recTmp.EOF
Setting.ListBox1.AddItem recTmp!DO
recTmp.MoveNext
Loop
recTmp.Close
Set recTmp = Nothing

End Sub

Bonjour

En pas a pas a quelle etape bloque t il ?

Cdt

Merci pour votre réponse ,

La requet passe a la base de donnée , je pense c'est au moment de l'affectation du résultat de la requet a une colonne que sa bloque

voici une capture d'ecran du bug

Merci d'avance

err

Bonjour

En fait il faudrait deverser le contenu de votre requete c est a dire les valeurs ds une feuille.

Ensuite vous parcourez votre feuille et pour chaque valeur vous l ajoutez ds la listbox

Essayez ds ce sens et je regarderais si vous bloquez

Cdt

Rechercher des sujets similaires à "fonction vba"