Erreur 'Type mismatch' + Copie range vers listbox

Bonjour,

Je crée un formulaire avec VBA que je connecte avec une DB access, en permettant d'insérer les données d'employés du formulaire directement sur la DB access. Je recontre cependant deux problèmes:

Lookup Matricule existant

Lorsque j'insère les données employés vers la table Employé dans access, je donne la possibilité de spécifier le matricule du manager de la personne mais ce matricule doit déjà exister dans la table access EMPLOYE. Voici le code que j'utilise:

Private sub creer_click ()
Dim conn as object
Dim rs as Object
Dim strconn as String
Dim qry as String
Dim msg

Set conn = createobject("ADODB.connection")
set rs = createobject("ADODB.recordset")

strconn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data source = C:\MyPath\MyDB.accdb"
qry = "select * from employesTB"

with rs
.adnew
if isnumeric(superviseurID) = false then
msgbox "Superviseur ID invalide"
exit sub
elseif application.worksheetfunction.dcount("matricule","employesTB","actif='Yes' and matricule='"  & [EmployesForm.superviseurID] & "'") = 0 then
msgbox "Superviseur n'existe pas"
exit sub
else 
. fields("superviseur_id").value = superviseurID
end if
end with

rs.update
with employes
.superviseurID.value = ""
rs.close
set rs = nothing
conn.close
set conn = nothing

msgbox "Collaborateur rajouté"
end sub ()

l'éxécution de ce code me ramène une erreur 'Type mismatch'. J'ai fait le tour du web et je comprends que cela pourrait venir du fait que le champ superviseurID du formulaire est un textbox (donc de type string je suppose) tandis que le champ Superviseur_ID de la table Access est un nombre. J'ai tenté toutes les modifications trouvées sur le net mais cela ne marche pas, d'où mon désarroi :'(. Aide svp...

Copie des donées d'une range vers une liste box

Sur le même formulaire, j'ai crée une listbox sur lequel je veux copié le résultat d'une recherche. Le processus que j'ai établi est que je copie les données présentes dans la table Access vers une feuille excel dans la dynamique range 'OutputSource' dont la formule est:

 OutputSource = OFFSET(EMPLOYES!$A$1;0;0;COUNTA(EMPLOYES!$A:$A);19) 

Le code que j'utilise est:

Private sub recherche_click ()
Dim conn as object
Dim rs as Object
Dim strconn as String
Dim qry as String
Dim var1

Set conn = createobject("ADODB.connection")
set rs = createobject("ADODB.recordset")

strconn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data source = C:\MyPath\MyDB.accdb"

var1 = me.matricule

if actif = true then
qry = "select * from employesTB where actif = 'Yes' and matricule =" & var1
else 
qry = "select * from employesTB where  matricule =" & var1
end if

application.Screenupdating = false
thisworkbook.worksheets("employes").range("a2:s10000").clearcontents

conn.open(strconn)
rs.open qry, conn

if rs.eof and rs.bof then
rs.close
conn.close
set rs = nothing
set conn= nothing
application.Screenupdating = true
msgbox "aucun résultat"
exit sub
end if
thisworkbook.worksheets("employes").range("a2").copyfromrecordset rs

rs.close
conn.close
set rs = nothing
set conn = nothing

application.screenupdating = true

me.listbox1.rowsources = "OutputSource"

end sub

Le code ne ramène aucune erreur mais le problème est que le résultat de la recherche dans la listbox ne fait appraître que la première colonne et pourtant j'ai bien vérifié que le range "OutputSource" était bien établi.

Petite aide sur ce point-ci également

Merci d'avance

Slt Jonathan,

sans fichiers exemples c‘est dur dur pour t‘aider

Salut m3ellem1,

Malheureusement je n'ai pas le droit de publier le fichier en ligne mais je me suis arrangé pour mettre l'entièreté du code dans la question .

N'est-il possible de déceler le problème en analysant simplement les codes ci-haut?

Merci d'avance

Rechercher des sujets similaires à "erreur type mismatch copie range listbox"