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
 

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
 

sgangbadjo

XLDnaute Nouveau
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
Bonjour @Rouge

Dans le fichier Ledger, la colonne A comporte une formule pour constituer le critère de recherche en faisant la somme de la colonne B et C. J'ai ajouter le séparateur "-", mais j'ai toujours le message de bug.


1621945131123.png



apperçu de la feuille "Ledger"

1621944755905.png
 

Pièces jointes

  • 1621944567388.png
    1621944567388.png
    67.8 KB · Affichages: 8

Rouge

XLDnaute Impliqué
Comme ceci
VB:
Private Sub CommandButton2_Click()
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    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
    On Error Resume Next
    Position = Application.WorksheetFunction.Match(critere, Sheets("Ledger").Range("A1:A" & DerLig), 0)
    If Position = "" Then
         Exit Sub
    Else
        'la suite de votre code
    End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 169
Messages
2 085 922
Membres
103 040
dernier inscrit
badi