Erreurs renvoyées avec fonction Match

Bonjour,

J'ai intégré dans une macro un petit bout de code qui doit rechercher une valeur dans une colonne. J'ai déjà utilisé ça dans plusieurs fichiers (merci d'ailleurs à Yvouille, je crois bien que c'était lui qui me l'avait donné), à chaque fois j'ai toujours copié collé puis adapté le bout de macro, et ça a toujours fonctionné.

Mais cette fois ci, je m'arrache les cheveux. J'ai deux versions qui me renvoient chacune une erreur différente.

Avec cette version :

Dim Ligne_Item As Integer

Range("P" & Ligne_Item ) = TextBox19

j'ai une erreur 1004 "Impossible de lire la propriété Match de la classe Worksheet Function sur la ligne 2

Et avec cette version :

Set MyRange = Range("B:B").Columns(0)

Range("P" & MyRange) = TextBox19

J'ai une erreur 13 "Incompatibilité de type sur la ligne 3

Lorsque je positionne ma souris sur les lignes 3,4,5 et 6, sur les TextBox, quand je suis en déboguage, la bulle d'info me renvoie une valeur correct (TextBox1 = "Valeur attendue")

Ca devrait plutôt être bon signe... Mais bon, ça ne veut pas y aller.

Quelqu'un peut-il m'aider, avant que je n'explose mon écran d'un poing rageur ?

Merci d'avance,

Laure

Ligne_Item = Application.WorksheetFunction.Match(TextBox1.value, Range("B:B"), 0)

Merci EngueEngue de te pencher sur mon problème.

Malheureusement, même avec ta correction, la ligne renvoie toujours une erreur 1004 "Impossible de lire la propriété Match de la classe Worksheet"...

Une autre idée ?

Cordialement,

Laure

S'il ne trouve pas il va renvoyer une erreur.. Normal

if not Application.WorksheetFunction.Match(TextBox1.value, Sheets("Lenomdetonsheet").Range("B:B"), 0) is nothing then
Ligne_Item = Application.WorksheetFunction.Match(TextBox1.value, Sheets("Lenomdetonsheet").Range("B:B"), 0)
end if

Merci !

Et là, il me met Erreur de compilation, incompatibilité de type....

Peut-être aurai-je plus de chance en joignant le fichier... Le problème se trouve dans le code du UserForm2.

Merci d'avance !!

Bien cordialement,

Laure

49f-cmf-028.zip (44.74 Ko)

Bonjour,

Essaies de déclarer Ligne_Item en 'Double' et non en 'Integer'.

Voir l'aide vba sur 'Match'

Cdlt

Ligne_Item = Application.Match(CDbl(TextBox1.Value), Sheets("SAISIE").Range("B:B"), 0)

Bonjour

Justement comme Match risque de retourner une erreur il faut déclarer Ligne_Item en Variant

Soit comme ceci

Dim Ligne_Item      ' Variant est le mode par défaut

ou comme cela

Dim Ligne_Item As Variant

Voilà ce que je ferai

Private Sub CommandButton1_Click()
Dim Ligne_Item      ' Variant est le mode par défaut

  Sheets("SAISIE").Activate
  Ligne_Item = Application.Match(Val(TextBox1.Value), Sheets("SAISIE").Range("B:B"), 0)
  If Not IsError(Ligne_Item) Then
    Range("L" & Ligne_Item) = TextBox13
    Range("N" & Ligne_Item) = TextBox13
    Range("O" & Ligne_Item) = TextBox20
    Range("P" & Ligne_Item) = TextBox19
    Unload UserForm2
    UserForm2.Hide
  End If

End Sub

Merci à tous !!

Cela fonctionne enfin (avec une combinaison des deux dernières réponses, soit la ligne de de EngueEngue et le Variant de Banzaï) !

Mon écran a échappé grâce à vous à une mort certaine et vous remercie !

Bien cordialement,

Laure

Rechercher des sujets similaires à "erreurs renvoyees fonction match"