XL 2019 Formule VLOOK dans un Userform

sgangbadjo

XLDnaute Nouveau
Bonsoir a tous

Please aider moi a corriger le code ci-dessous. J'essaie depuis une journee d'introduire une recherche avec VLOOK dans une formulaire. Mais j'ai un message d'erreur.

Private Sub UserForm_Click()

If Me.TextBox1 <> 0 Then

Me.TextBox2 = Application.WorksheetFunction.VLookup(Me.TextBox1.Value, Sheets("Feuil1").Range("A2:C8"), 2, False)

End If

End Sub
 

Rouge

XLDnaute Impliqué
Bonjour,

Quel est le type de valeur contenu dans la textbox1?
si c'est numérique, multipliez la textbox1 par 1
VB:
Me.TextBox2 = Application.WorksheetFunction.VLookup(Me.TextBox1.Value * 1, Sheets("Feuil1").Range("A2:C8"), 2, False)
Cdlt
 

Rouge

XLDnaute Impliqué
Alors, avec votre code inchangé, ça marche

sgangbadjo.gif
 

Rouge

XLDnaute Impliqué
Comme ceci, ça doit marcher
VB:
Private Sub UserForm_Click()
    On Error Resume Next
    If Me.TextBox1 <> "" Then
        Me.TextBox2 = Application.WorksheetFunction.VLookup(Me.TextBox1.Value, Sheets("Feuil1").Range("A2:D19"), 2, False)
    End If
End Sub
Cdlt
 

Rouge

XLDnaute Impliqué
Bonjour,

Vous avez utilisé un tableau structuré, très bien, mais pourquoi avoir désigné l'ensemble des lignes de la feuille dans ce tableau, seules les lignes occupés doivent faire partie du tableau. le tableau s'agrandira automatiquement lorsque vous ajouterez des lignes.
C'est aussi pour cela que votre fichier est énorme, alors qu'en réalité il ne pèse que 56ko.

Votre fichier avec le code corrigé.

Cdlt
 

Pièces jointes

  • sgangbadjo_Formule VLOOK dans un Userform.xlsm
    55.4 KB · Affichages: 10

ChTi160

XLDnaute Barbatruc
Bonjour sganbadjo
Bonjour le Fil ,le Forum
Bon pas tout compris Lol
mais je me suis dit si on doit faire une recherche (Userform2)
On pourrait passer par ce que j'ai fait ( Non finalisé ) juste pour voir ce que l'on peut avoir pour trier)
Bonne journée
jean marie
 

Pièces jointes

  • School Feeding data base May 2021 Cthi160.xlsm
    923.6 KB · Affichages: 3

sgangbadjo

XLDnaute Nouveau
Hello, je continue dans mon projet de base de donnees a laquelle je veux ajouter un boutton modifier. A aprtir du mois et du code de l'ecole renseignés par l'utilisateur à travers une InputBox, je voudrais remplir automatiquement (a partir de ma feuil "Ledger") les cases de mon formulaire afin de permettre la modification.

Pour l'instant je suis a ce niveau du code et j'ai une erreur sur la ligne "IF". Please help


Private Sub CommandButton2_Click()

'modification des donnees saisies

Dim mois_saisie As String, code_ecole As Variant, critere As Variant

mois_saisie = InputBox("Qual é o mês da apreensão?", "Alteração de dados")
code_ecole = InputBox("O que é o código da escola", "Código da escola")
critere = mois_saisie + code_ecole

With Sheets("Ledger")

If Application.WorksheetFunction.Match(critere, Range(AK), 0) = False Then

MsgBox ("O mês ou a informação do código está incorrecta. Por favor, verifique e reintroduza-os")

Exit Sub

End If
End With

End Sub
 

Rouge

XLDnaute Impliqué
Bonjour

vous faites un recherche sur la plage des colonnes de A à K, donc il faut séparer les lettres par ":" et encadrer le tout par des guillemets.
If Application.WorksheetFunction.Match(critere, Range("A:K"), 0) = False Then

il serait préférable de délimiter la plage plutôt que de prendre les colonnes entières, exemple:

VB:
Private Sub CommandButton2_Click()
    'modification des donnees saisies
    Dim mois_saisie As String, code_ecole As Variant, critere As Variant
    mois_saisie = InputBox("Qual é o mês da apreensão?", "Alteração de dados")
    code_ecole = InputBox("O que é o código da escola", "Código da escola")
    critere = mois_saisie + code_ecole
    With Sheets("Ledger")
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        If Application.WorksheetFunction.Match(critere, Range("A1:K" & DerLig), 0) = False Then
            MsgBox ("O mês ou a informação do código está incorrecta. Por favor, verifique e reintroduza-os")
        End If
    End With
End Sub

Cdlt
 

sgangbadjo

XLDnaute Nouveau
Bonjour

vous faites un recherche sur la plage des colonnes de A à K, donc il faut séparer les lettres par ":" et encadrer le tout par des guillemets.
If Application.WorksheetFunction.Match(critere, Range("A:K"), 0) = False Then

il serait préférable de délimiter la plage plutôt que de prendre les colonnes entières, exemple:

VB:
Private Sub CommandButton2_Click()
    'modification des donnees saisies
    Dim mois_saisie As String, code_ecole As Variant, critere As Variant
    mois_saisie = InputBox("Qual é o mês da apreensão?", "Alteração de dados")
    code_ecole = InputBox("O que é o código da escola", "Código da escola")
    critere = mois_saisie + code_ecole
    With Sheets("Ledger")
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        If Application.WorksheetFunction.Match(critere, Range("A1:K" & DerLig), 0) = False Then
            MsgBox ("O mês ou a informação do código está incorrecta. Por favor, verifique e reintroduza-os")
        End If
    End With
End Sub

Cdlt
Merci @Rouge pour l'orientation.
 

sgangbadjo

XLDnaute Nouveau
Bonjour,

J'essaie de rechercher la valeur stockée dans la variable "critère" dans la colonne A. la formule que j'utilise est la formule "MATCH". Ca ne marche pas malgré les améliorations pour l'instant.

Private Sub CommandButton2_Click()

'modification des donnees saisies

Dim mois_saisie As String, code_ecole As Variant, critere As Variant

debut:

mois_saisie = InputBox("Qual é o mês da apreensão?", "Alteração de dados")
code_ecole = InputBox("O que é o código da escola", "Código da escola")
critere = mois_saisie + code_ecole


If Application.WorksheetFunction.Match(critere, Sheets("Ledger").Range("A:A"), 0) = False Then

MsgBox ("O mês ou a informação do código está incorrecta. Por favor, verifique e reintroduza-os")
End If

GoTo debut:

End Sub
 

Rouge

XLDnaute Impliqué
Bonjour,

Dans la colonne A de la feuille "Ledger", sous quelle forme se présente le mois et l'école, sont-ils séparés par un espace, un tiret, autre chose?
Si c'est le cas, il faut ajouter c'est élément dans le critère, exemple si le séparateur est un tiret:
VB:
critere = mois_saisie & "-" &  code_ecole

Cdlt
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 117
Membres
103 477
dernier inscrit
emerica