XL 2016 Problème erreur 13 incompatibilité de type

  • Initiateur de la discussion Initiateur de la discussion moi64
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

moi64

XLDnaute Nouveau
Bonjour à tous,

Voici quelques temps j'ai monté un fichier qui permet de récupérer des informations dans une userform en renseignant une textbox. Le but est de commencer à écrire un mot, et la macro cherche dans une feuille BD, les données qui s'y rapportent pour les faire apparaître dans la list box.

Tout allait bien, sauf que maintenant quand on renseigne la textbox une erreur 13 apparaît au niveau de la ligne en rouge. J'ai essayé de trouver l'erreur mais sans succès et j'ai aggravé le truc puisque maintenant j'ai une erreur au niveau de la ligne verte...

J'ai bien essayé de shunter l'erreur, mais même si cela fonctionne, le tri ne se fait plus.

Pourriez vous m'éclairer sur ce qui ne fonctionne pas/ plus dans ce code ? Je joins le fichier pour plus de clarté.

Je vous remercie pour votre aide précieuse.


Option Explicit

Dim f, choix(), Rng, Ncol

Private Sub Label1_Click()

End Sub

Private Sub UserForm_Initialize()
Set f = Sheets("BD")
Set Rng = f.Range("a2:L" & f.[a65000].End(xlUp).Row)
TblTmp = Rng.Value
Ncol = Rng.Columns.Count
For i = LBound(TblTmp) To UBound(TblTmp)
ReDim Preserve choix(1 To i)
For k = LBound(TblTmp) To UBound(TblTmp, 2)
choix(i) = choix(i) & TblTmp(i, k) & " * "
Next k
Next i
Me.ListBox1.List = Rng.Value
End Sub

Private Sub TextBox1_Change()

If Me.TextBox1 <> "" Then
mots = Split(Trim(Me.TextBox1), " ")
Tbl = choix
For i = LBound(mots) To UBound(mots)
Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
Next i
n = 0: Dim b()
For i = LBound(Tbl) To UBound(Tbl)
a = Split(Tbl(i), "*")
n = n + 1: ReDim Preserve b(1 To Ncol, 1 To n)
For k = 1 To Ncol
b(k, i + 1) = a(k - 1)
Next k
Next i
If n > 0 Then
ReDim Preserve b(1 To Ncol, 1 To n + 1)
Me.ListBox1.List = Application.Transpose(b)
Me.ListBox1.RemoveItem n
End If
Me.Label1.Caption = UBound(Tbl) + 1

If Me.Label1.Caption = "0" Then

Call MsgBox("Le fournisseur n'est pas existant. Souhaitez vous le créer? ", 4 + vbInformation, "Attention")
 

Pièces jointes

Bonjour moi64, bienvenue sur XLD,

Le fichier joint est vérolé, il y a un avertissement à l'ouverture.

En l'état il y a bug dès l'ouverture du fichier et erreur de compilation à l'ouverture de l'UserForm.

Joignez un fichier qui tienne un peu mieux la route.

A+
 
Re,

J'ai quand même pu voir que les bugs dans UserForm_Initialize et TextBox1_Change sont dus à ce que plusieurs variables ne sont pas déclarées.

Quand on utilise Option Explicit toutes les variables doivent être déclarées.

A+
 
Bonjour Job 75

Jje vous prie de bien vouloir m'excuser pour le fichier qu'effectivement je ai envoyé en l'état et vous remercie pour votre retour.

Votre remarque m'a toutefois aidé car en remodelant le premier fichier j'ai fais quelques modifications pour le rendre plus acceptable et ... je n'ai plus l'erreur 13...

Je devais avoir des erreurs dans la déclaration des variables en effet, j'ai également supprimé Option Explicit, plus d'erreur...

Pourriez vous m'éclairer ?
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
144
Réponses
3
Affichages
665
Réponses
1
Affichages
704
Réponses
3
Affichages
504
Réponses
3
Affichages
796
Réponses
4
Affichages
177
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
10
Affichages
281
Réponses
5
Affichages
780
Retour