OVH Cloud OVH Cloud

Recherche dans un tableau

7 réponses
Avatar
DesseJ
Bonjour,

Je boucle sur la recherche d'une valeur dans une variable tableau
(macro ex suivante). Le r=E9sultat est toujours "Chaine non trouv=E9e",
bien que la valeur existe. Je pense que l'erreur est dans le match.

Merci pour votre aide
Steph D.

'--------------------------------------------------------------------------=
--------------
Sub test()
Dim chaine As String
Dim MonTab As Variant
chaine =3D Range("A11").Value
MonTab =3D Range("A1:A50")
If Not (IsError(Application.Match(chaine, MonTab, 0))) Then
Debug.Print Application.Match(chaine, MonTab, 0)
Else
Debug.Print "Chaine non trouv=E9e"
End If
End Sub

7 réponses

Avatar
JB
Bonjour,

-Vérifier qu'il n'y a pas d'espaces à la fin, de double espace?
-Vérifier avec la fonction Type() si A11 et A1:A50 ont bien le même
type.

JB
Bonjour,

Je boucle sur la recherche d'une valeur dans une variable tableau
(macro ex suivante). Le résultat est toujours "Chaine non trouvée",
bien que la valeur existe. Je pense que l'erreur est dans le match.

Merci pour votre aide
Steph D.

'------------------------------------------------------------------------ ----------------
Sub test()
Dim chaine As String
Dim MonTab As Variant
chaine = Range("A11").Value
MonTab = Range("A1:A50")
If Not (IsError(Application.Match(chaine, MonTab, 0))) Then
Debug.Print Application.Match(chaine, MonTab, 0)
Else
Debug.Print "Chaine non trouvée"
End If
End Sub


Avatar
JB
Ce programme fonctionne sur mon poste:http://cjoint.com/?bxoviQYjp0

JB

Bonjour,

Je boucle sur la recherche d'une valeur dans une variable tableau
(macro ex suivante). Le résultat est toujours "Chaine non trouvée",
bien que la valeur existe. Je pense que l'erreur est dans le match.

Merci pour votre aide
Steph D.

'------------------------------------------------------------------------ ----------------
Sub test()
Dim chaine As String
Dim MonTab As Variant
chaine = Range("A11").Value
MonTab = Range("A1:A50")
If Not (IsError(Application.Match(chaine, MonTab, 0))) Then
Debug.Print Application.Match(chaine, MonTab, 0)
Else
Debug.Print "Chaine non trouvée"
End If
End Sub


Avatar
JB
Si A1:A50 contient des nombres, ce pgm ne fonctionne pas (la variable
chaine déclaré en string)

JB
Bonjour,

Je boucle sur la recherche d'une valeur dans une variable tableau
(macro ex suivante). Le résultat est toujours "Chaine non trouvée",
bien que la valeur existe. Je pense que l'erreur est dans le match.

Merci pour votre aide
Steph D.

'------------------------------------------------------------------------ ----------------
Sub test()
Dim chaine As String
Dim MonTab As Variant
chaine = Range("A11").Value
MonTab = Range("A1:A50")
If Not (IsError(Application.Match(chaine, MonTab, 0))) Then
Debug.Print Application.Match(chaine, MonTab, 0)
Else
Debug.Print "Chaine non trouvée"
End If
End Sub


Avatar
DesseJ
Merci JB pour ta précieuse aide. Bien joué, le type détecté pourla
valeur cherchée était le 16. Celle-ci contient des espaces en fin de
ligne et des sauts de ligne, la voici :

IMPORTANT : CONTRAINTES LIEES A L'UTILISATION NUMERIQUE

Un Bus S0 direct sur le réseau NUMERIS ou un Bus S0 Complet avec SDA,
si vous êtes équipés d'un standard gérant les Bus S0, doit être
présent à moins d'un mètre cinquante de la machine accueillant
l'adaptateur RNIS. Si la ligne passe par le standard téléphonique,
elle ne doit supporter aucune contrainte d'accès vers l'extérieur.



La fonction Match ne peut peut-être pas effectuer une recherche sur
une valeur si longue.

Cordialement,
Stéphane DESVOYE
Avatar
DesseJ
Me revoici. La macro fonctionne si le texte recherché ne dépasse pas
les 255 caractères.
Une idée pour contourner cette "limite" ?

Merci et bonne fin de journée
Avatar
JB
Peut-être ça?

Sub essai()
x = [A3]
If monEquiv(x, [A2:A5]) > 0 Then
MsgBox "ok"
Else
MsgBox "non"
End If
End Sub

Function monEquiv(v, champ As Range)
Application.Volatile
monEquiv = 0
For i = 1 To champ.Count
If champ(i) = v Then monEquiv = i
Next i
End Function

Function monEquiv2(v, champ As Range)
Application.Volatile
temp = champ ' transfert dans un tableau
monEquiv2 = 0
For i = 1 To UBound(temp, 1)
If champ(i, 1) = v Then monEquiv2 = i
Next i
End Function

JB

Me revoici. La macro fonctionne si le texte recherché ne dépasse pas
les 255 caractères.
Une idée pour contourner cette "limite" ?

Merci et bonne fin de journée


Avatar
DesseJ
Merci JB pour le temps passé à m'aider, c'est royal !!!

Bonne journée;
Steph