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:
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...
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 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 ()
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:
Le code que j'utilise est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part OutputSource = OFFSET(EMPLOYES!$A$1;0;0;COUNTA(EMPLOYES!$A:$A);19)
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.
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 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
Petite aide sur ce point-ci également
Merci d'avance
Partager