XL 2019 Erreur 1004 propriété vlookup

Dominique-evrard

XLDnaute Nouveau
Bonjour à tous les membres du forum,

Je tenais à vous remercier pour l'occasion que vous nous donner d'exprimer nos soucis à travers cette plateforme.

Mon souci est le suivant, j'ai une base de donnée avec laquelle je veux exécuter une recherche V dans un userform. A chaque fois que je lance le code, j'obtiens le message figurant ci-dessous.

Comment le résoudre s'il vous plaît ?

PS: je suis débutant dans la programmation VBA

je vous mets le fichier en PJ

ffff.PNG
 

Pièces jointes

  • SUIVI M'BATTO.xlsm
    39.7 KB · Affichages: 4

Phil69970

XLDnaute Barbatruc
Bonjour @Dominique-evrard

Je te propose ceci :

VB:
Private Sub Tb1_AfterUpdate()
If WorksheetFunction.CountIf(Sheets("BD").Range("A:A"), Me.Tb1.Value) <> 0 Then
    With Me
        .Tb2 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 2, 0)
        .Tb3 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 3, 0)
        .Tb4 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 4, 0)
        .Tb5 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 5, 0)
        .Tb6 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 6, 0)
    End With
Else
    MsgBox "Cette immat n'existe pas", vbInformation + vbOKOnly, "Avertissement"
End If
End Sub

*Merci de ton retour

@Phil69970
 

Dominique-evrard

XLDnaute Nouveau
Bonjour @Dominique-evrard

Je te propose ceci :

VB:
Private Sub Tb1_AfterUpdate()
If WorksheetFunction.CountIf(Sheets("BD").Range("A:A"), Me.Tb1.Value) <> 0 Then
    With Me
        .Tb2 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 2, 0)
        .Tb3 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 3, 0)
        .Tb4 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 4, 0)
        .Tb5 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 5, 0)
        .Tb6 = Application.WorksheetFunction.VLookup(CStr(Me.Tb1), Sheets("BD").Range("Tbase"), 6, 0)
    End With
Else
    MsgBox "Cette immat n'existe pas", vbInformation + vbOKOnly, "Avertissement"
End If
End Sub

*Merci de ton retour

@Phil69970
Bonjour Phil69970

Merci pour ton aide, mais le problème persiste toujours
 

Dominique-evrard

XLDnaute Nouveau
Bonjour,
Suis pas un spécialiste vba mais
1) dans ton fichier je ne retrouve pas ce code et tbl ... est null part ... sur une feuille que t'as suppr. pour l'anonymisation?)
2) Par contre sur ta capture tu as pour la valeur cherchée "me.tbl" ... je ne suis pas certain que cela te renvoie une valeur unique ... t'as mis un espion sur cette valeur en mode débogage pour voir ce qu'il y avait dedans ?
et tu passes ton code en faisant F8 pour exécuter ligne à ligne :)
A+
1- Ce code est dispo en cliquant sur la 1ère Textbox de l'userform
2- Non non je n'ai pas mis d'espion sur cette valeur
j'essaie ce que tu m'as dis
 

Deadpool_CC

XLDnaute Accro
Tu testes avec quelle valeur ?
Et en Vba je sais pas mais en formule incluse dans la cellule cette fonction nécéssite que ta matrice dans laquelle tu cherche soit triée par ordre croissant (colonne contenant les données comparées à celle que tu cherche) ... car un fois qu'il a dépassé la valeur, il s'arrete et te renvoie une erreur , même si la valeur est plus bas.
 

Pièces jointes

  • SUIVI M'BATTO.xlsm
    36.4 KB · Affichages: 3

Phil69970

XLDnaute Barbatruc
Le fil

@Deadpool_CC
Ta solution est exactement celle que je propose au post #1
J'ai simplement modifié
If WorksheetFunction.CountIf(Sheets("BD").Range("A:A"), Me.Tb1.Value) <> 0 Then
et donc l'ordre du "else " ;)

CQFD

@Dominique-evrard n'a surement pas vu la subtilité et n'a surement pas recopié toute la solution que je proposais au post #2 sinon il aurait vu que ma solution fonctionnait !!!

@Phil69970
 

Dominique-evrard

XLDnaute Nouveau
Tu testes avec quelle valeur ?
Et en Vba je sais pas mais en formule incluse dans la cellule cette fonction nécéssite que ta matrice dans laquelle tu cherche soit triée par ordre croissant (colonne contenant les données comparées à celle que tu cherche) ... car un fois qu'il a dépassé la valeur, il s'arrete et te renvoie une erreur , même si la valeur est plus bas.
Je recherche avec la valeur "815"
 

Discussions similaires

Statistiques des forums

Discussions
312 202
Messages
2 086 180
Membres
103 152
dernier inscrit
Karibu