Microsoft 365 Fonction Match sur VBA

sgangbadjo

XLDnaute Nouveau
Please Help
La syntaxe ci-dessous ne me permet pas de récupérer la position de la valeur cible.
l'execution se bloque au niveau de la fonction MATCH



Private Sub CommandButton1_Click()

Dim f1 As Worksheet
Dim ligne As Long
Dim cible As Variant

Set f1 = Sheets("TRACKING")
cible = Me.TextBox1.Value
ligne = Application.WorksheetFunction.Match(cible, Sheets("TRACKING").Range("C1:C"), 0)

If MsgBox("Etes vous sûr de vouloir sauvegarder?", vbYesNo, "confirmation") = vbYes Then

With f1

.Cells(ligne, 13).Value = Me.TextBox4.Value
.Cells(ligne, 14).Value = Me.TextBox5.Value
.Cells(ligne, 12).Value = Me.ComboBox1.Value
.Cells(ligne, 18).Value = Me.TextBox6.Value
.Cells(ligne, 15).Value = Me.ComboBox2.Value
.Cells(ligne, 16).Value = Me.ComboBox3.Value
.Cells(ligne, 17).Value = Me.TextBox7.Value
.Cells(ligne, 19).Value = Me.TextBox8.Value
.Cells(ligne, 21).Value = Me.TextBox9.Value
.Cells(ligne, 20).Value = Me.TextBox10.Value
.Cells(ligne, 22).Value = Me.TextBox11.Value
.Cells(ligne, 23).Value = Me.TextBox12.Value

End With
End If
Unload Me

End Sub
 
Solution
re,

ok, tu recherches une chaine texte et c'est un nombre que tu veux trouver, match fonctionne avec le type de la valeur que tu envoies. En plus tu as ou du texte ou des nombres dans ta colonne
Précises le type au moment de ta recherche et ça fonctionnera avec du texte non numérique ou du nombre

Bien cordialement, @+

Code:
Private Sub CommandButton1_Click()

Dim F1 As Worksheet
Dim Ligne As String
Dim Cible As Variant
  
Set F1 = Sheets("TRACKING")
Cible = Me.TextBox1.Value
With F1
    Ligne = Application.WorksheetFunction.Match(IIf(IsNumeric(Cible), CDbl(Cible), Cible), .Range("C1:C" & .Range("C" & .Rows.Count).End(xlUp).Row), 0)
    If MsgBox("Etes vous sûr de vouloir sauvegarder?", vbYesNo, "confirmation") = vbYes Then...

sgangbadjo

XLDnaute Nouveau
Re,

Code:
Range("C:C")
mais match sur une colonne entière peut être long, vaudrait mieux
VB:
Range("C1:C" & Range("C" & Rows.Count).End(xlUp).Row)

Cordialement, @+
Merci pour le retour @Yeahou

Malheureusement le code n'est toujours pas bon. Je m'y prends certainement mal. C'est le Userform 2 du fichier joint.
 

Pièces jointes

  • PROCUREMENT TRACKING .xlsm
    63.4 KB · Affichages: 5
re,

ok, tu recherches une chaine texte et c'est un nombre que tu veux trouver, match fonctionne avec le type de la valeur que tu envoies. En plus tu as ou du texte ou des nombres dans ta colonne
Précises le type au moment de ta recherche et ça fonctionnera avec du texte non numérique ou du nombre

Bien cordialement, @+

Code:
Private Sub CommandButton1_Click()

Dim F1 As Worksheet
Dim Ligne As String
Dim Cible As Variant
  
Set F1 = Sheets("TRACKING")
Cible = Me.TextBox1.Value
With F1
    Ligne = Application.WorksheetFunction.Match(IIf(IsNumeric(Cible), CDbl(Cible), Cible), .Range("C1:C" & .Range("C" & .Rows.Count).End(xlUp).Row), 0)
    If MsgBox("Etes vous sûr de vouloir sauvegarder?", vbYesNo, "confirmation") = vbYes Then
        .Cells(Ligne, 13).Value = Me.TextBox4.Value
        .Cells(Ligne, 14).Value = Me.TextBox5.Value
        .Cells(Ligne, 12).Value = Me.ComboBox1.Value
        .Cells(Ligne, 18).Value = Me.TextBox6.Value
        .Cells(Ligne, 15).Value = Me.ComboBox2.Value
        .Cells(Ligne, 16).Value = Me.ComboBox3.Value
        .Cells(Ligne, 17).Value = Me.TextBox7.Value
        .Cells(Ligne, 19).Value = Me.TextBox8.Value
        .Cells(Ligne, 21).Value = Me.TextBox9.Value
        .Cells(Ligne, 20).Value = Me.TextBox10.Value
        .Cells(Ligne, 22).Value = Me.TextBox11.Value
        .Cells(Ligne, 23).Value = Me.TextBox12.Value
    End If
End With
Unload Me

End Sub
 

sgangbadjo

XLDnaute Nouveau
re,

ok, tu recherches une chaine texte et c'est un nombre que tu veux trouver, match fonctionne avec le type de la valeur que tu envoies. En plus tu as ou du texte ou des nombres dans ta colonne
Précises le type au moment de ta recherche et ça fonctionnera avec du texte non numérique ou du nombre

Bien cordialement, @+

Code:
Private Sub CommandButton1_Click()

Dim F1 As Worksheet
Dim Ligne As String
Dim Cible As Variant
 
Set F1 = Sheets("TRACKING")
Cible = Me.TextBox1.Value
With F1
    Ligne = Application.WorksheetFunction.Match(IIf(IsNumeric(Cible), CDbl(Cible), Cible), .Range("C1:C" & .Range("C" & .Rows.Count).End(xlUp).Row), 0)
    If MsgBox("Etes vous sûr de vouloir sauvegarder?", vbYesNo, "confirmation") = vbYes Then
        .Cells(Ligne, 13).Value = Me.TextBox4.Value
        .Cells(Ligne, 14).Value = Me.TextBox5.Value
        .Cells(Ligne, 12).Value = Me.ComboBox1.Value
        .Cells(Ligne, 18).Value = Me.TextBox6.Value
        .Cells(Ligne, 15).Value = Me.ComboBox2.Value
        .Cells(Ligne, 16).Value = Me.ComboBox3.Value
        .Cells(Ligne, 17).Value = Me.TextBox7.Value
        .Cells(Ligne, 19).Value = Me.TextBox8.Value
        .Cells(Ligne, 21).Value = Me.TextBox9.Value
        .Cells(Ligne, 20).Value = Me.TextBox10.Value
        .Cells(Ligne, 22).Value = Me.TextBox11.Value
        .Cells(Ligne, 23).Value = Me.TextBox12.Value
    End If
End With
Unload Me

End Sub

Ca marche @Yeahou, Merci pour la patience. je vais essayer d'ajouter quelques conditions supplémentaires
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof