Bonjour à toutes et tous!

Je dispose d'une Base de données Accès contenant des informations de format varié : (reférence unique/ texte / dates / nombres) afin d'effectuer un suivi de dossier.

j'ai développé une feuille de création de nouveau dossier dans Excel me permettant d'ajouter/Mettre à jour la base de donnée Accès.

J'utilise une connexion ADODB pour ajouter de nouvelles entrée et tout fonctionne parfaitement bien.

Mon Objectif:

#1 Alimenter une listbox dans Excel contenant la base de donnée Accès afin de filter sur le dossier par mot clef
#2 Effectuer une recherche intuitive dans une textbox afin de retrouver le dossier désiré
#3 Refléter le contenu de la ligne selectionnée de la listbox dans la feuille du classeur contenant la macro.


Etat d'avancement:

La Listbox est alimentée par les bonnes infos.
Mais lors d'une recherche dans la textbox, une erreur apparait lorsque la recherche rencontre une cellule vide (NULL).
Run-Time error '-2147352571 (80020005)':
Could not set the list property. Type mismatch

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
 
 
Dim Liste()
Private Sub UserForm_Initialize()
   Set cnn = New ADODB.Connection
    cnn.Open "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=G:\BaseAccess.accdb"
  Set rs = cnn.Execute("SELECT count(*) as nb FROM [TABLE4]' where ID<>0")
  ReDim Liste(0 To rs("nb"), 1 To 10)
   Set rs = cnn.Execute("SELECT * FROM [TABLE4]' where ID<> 0")
  Me.ListBox1.Clear
  i = 0
  Do While Not rs.EOF
 
    On Error Resume Next 
 
    ListBox1.AddItem
    Liste(i, 1) = rs("ID")
    Liste(i, 2) = rs("1")
    Liste(i, 3) = rs("2")
    Liste(i, 4) = rs("3")
    Liste(i, 5) = rs("4")
    Liste(i, 6) = rs("5")
    Liste(i, 7) = rs("6")
    Liste(i, 8) = rs("7")
    Liste(i, 9) = rs("8")
    Liste(i, 10) = rs("9")
 
    On Error GoTo 0
    i = i + 1
    rs.MoveNext
  Loop
  With Me.ListBox1
     .ColumnWidths = "50;90;90;50;60;60;60;60;60;60"
    .List = Liste
  End With
 
  rs.Close
  cnn.Close
  Set rs = Nothing
  Set cnn = Nothing
 
 
  Liste = Me.ListBox1.List
 
End Sub


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
 
Private Sub TextBox1_Change()
   Me.ListBox1.Clear
   j = 0
   For i = LBound(Liste) To UBound(Liste)
 
     If UCase(Liste(i, 0)) Like "*" & UCase(Me.TextBox1) & "*" _
        Or "*" & UCase(Liste(i, 1)) Like "*" & UCase(Me.TextBox1) & "*" Then
 
        On Error GoTo 0
 
        Me.ListBox1.AddItem Liste(i, 0)
        Me.ListBox1.List(j, 1) = Liste(i, 1) 'l erreur apparait dans l'une de ces lignes lorsque la valeur recherchée rencontre une cellule vide de la base de donnée Access
        Me.ListBox1.List(j, 2) = Liste(i, 2) 'l erreur apparait dans l'une de ces lignes lorsque la valeur recherchée rencontre une cellule vide de la base de donnée Access
        Me.ListBox1.List(j, 3) = Liste(i, 3) 'l erreur apparait dans l'une de ces lignes lorsque la valeur recherchée rencontre une cellule vide de la base de donnée Access
        Me.ListBox1.List(j, 4) = Liste(i, 4) 'l erreur apparait dans l'une de ces lignes lorsque la valeur recherchée rencontre une cellule vide de la base de donnée Access
        Me.ListBox1.List(j, 5) = Liste(i, 5) 'l erreur apparait dans l'une de ces lignes lorsque la valeur recherchée rencontre une cellule vide de la base de donnée Access
        Me.ListBox1.List(j, 6) = Liste(i, 6) 'l erreur apparait dans l'une de ces lignes lorsque la valeur recherchée rencontre une cellule vide de la base de donnée Access 
        Me.ListBox1.List(j, 7) = Liste(i, 7) 'l erreur apparait dans l'une de ces lignes lorsque la valeur recherchée rencontre une cellule vide de la base de donnée Access
        Me.ListBox1.List(j, 8) = Liste(i, 8) 'l erreur apparait dans l'une de ces lignes lorsque la valeur recherchée rencontre une cellule vide de la base de donnée Access
        Me.ListBox1.List(j, 9) = Liste(i, 9) 'l erreur apparait dans l'une de ces lignes lorsque la valeur recherchée rencontre une cellule vide de la base de donnée Access
 
  On Error GoTo 0
        j = j + 1
     End If
   Next i
End Sub

J'ai essayé par traitement d'erreur (On error resume next ) (on error goto 0) mais cela ne fonctionne pas.
La solution consistant à remplir chacun des champs vide de la Base Access n'est pas viable bien entendu

Auriez vous la compétence et l'amabilité de m'indiquer comment modifier le code?

Merci d'avance!
Mandra