Match et VBA sur XL2010

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #25604742
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
---------------------------------------------------------------
Yopop
Le #25604732
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
MichD
Le #25604752
|ç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
---------------------------------------------------------------
Publicité
Poster une réponse
Anonyme