Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Match et VBA sur XL2010

3 réponses
Avatar
Yopop
Bonjour,
je viens de m'apercevoir que Match ne fonctionne pas en vba sur une
plage >65536.

par exemple :

sub Test()

tablo=range("a1:a100000")

resu= worksheet.function.match("toto",tablo,0)

end sub

Si on descend la plage à "a1:a65536", ça fonctionne.

Est-ce une limitation de Excel 2010 ?


j-p

3 réponses

Avatar
MichD
Bonjour,

La fonction "Match()" en VBA a un bogue si tu utilises
cette syntaxe :

X = Application.WorksheetFunction.Match(x, Range("A1:A65536"),0)

La solution : utilise plutôt cette syntaxe sans l'expression
WorksheetFunction.

X = Application.Match(x, Range("A1:A65536"),0)

Si tu utilises un objet "Range" comme 2 ième argument,
tu peux faire référence à la colonne complète.

Si le deuxième argument est un Tableau (array), il est plus
que possible que le nombre d'éléments du tableau soit limité.
C'était vrai pour la version Excel 2000 à Excel 2003. Je suppose
cependant que ce nombre a augmenté significativement depuis
Excel 2007.

MichD
---------------------------------------------------------------
Avatar
Yopop
Le 20/08/2013 16:04, MichD a écrit :
Bonjour,

La fonction "Match()" en VBA a un bogue si tu utilises
cette syntaxe :

X = Application.WorksheetFunction.Match(x, Range("A1:A65536"),0)

La solution : utilise plutôt cette syntaxe sans l'expression
WorksheetFunction.

X = Application.Match(x, Range("A1:A65536"),0)

Si tu utilises un objet "Range" comme 2 ième argument,
tu peux faire référence à la colonne complète.

Si le deuxième argument est un Tableau (array), il est plus
que possible que le nombre d'éléments du tableau soit limité.
C'était vrai pour la version Excel 2000 à Excel 2003. Je suppose
cependant que ce nombre a augmenté significativement depuis
Excel 2007.

MichD
---------------------------------------------------------------




Bonjour Denis,

merci pour ta réponse.
Mon problème est avec Excel 2010 :
Ca fonctionne en utilisant un Range mais avec un tableau, ça plante dès
que le nombre de ligne dépasse 65536. On va supposer que Microsoft n'a
pas mis à jour la fonction Match en Vba.

j-p
Avatar
MichD
|ça plante dès que le nombre de ligne dépasse 65536

La fonction Match() a toujours eu une limite quant au
nombre d'items qu'un tableau pouvait contenir. C'est ce
que j'ai indiqué dans ma réponse précédente.

Ce n'est pas un bogue, mais une limite d'Excel.
Heureux pour toi que cette limite soit de 65536, car dans
les versions antérieures à 2007, cette valeur était beaucoup
plus basse.


MichD
---------------------------------------------------------------