OVH Cloud OVH Cloud

petit problème entre amis

9 réponses
Avatar
J-Dan
Bonjour =E0 tous,
qui peut me dire pourquoi dans la macro suivante, la=20
valeur maxi que peut prendre "num" est de 5460, elle=20
provoque =E0 5461 un message d'erreur "incompatibilit=E9 de=20
type".
Merci

Sub toto()
num =3D 5460
ReDim tableau(num)
For t =3D 1 To num
tableau(t) =3D Rnd(100000) + 1

Next

MsgBox WorksheetFunction.Average(tableau)
End Sub

9 réponses

Avatar
twinley
si les autres lecteurs sentent le pâté...merci pour eux.
tu relève du même cas que l'escamoteur du dessous. Un p'tit mot clé, msieu dame. Et ta réponse servira aux autres amis.

Je ne sais pas ce que j'ai aujourd'hui, mais je suis de petite humeur...
Avatar
J-Dan
salut twinley,
je te comptais parmi les amis !
Quand au pâté, tu me fais penser que j'ai un petit creux.
Sur le fond, tu as parfaitement raison, mais j'ai
découvert ce petit problème et je ne savais comment lui
donner un titre.
Peut-être "5460-5461" , "incompatibilité de (pôv)
type","WorksheetFunction bridé", ... si tu as une idée

-----Message d'origine-----
si les autres lecteurs sentent le pâté...merci pour
eux.

tu relève du même cas que l'escamoteur du dessous. Un
p'tit mot clé, msieu dame. Et ta réponse servira aux

autres amis.

Je ne sais pas ce que j'ai aujourd'hui, mais je suis de
petite humeur...

.



Avatar
isabelle
bonjour J-Dan,

c'est peut être un problème de mémoire, car je n'ai pas de message
d'erreur et ce pour num = 10000

isabelle


Bonjour à tous,
qui peut me dire pourquoi dans la macro suivante, la
valeur maxi que peut prendre "num" est de 5460, elle
provoque à 5461 un message d'erreur "incompatibilité de
type".
Merci

Sub toto()
num = 5460
ReDim tableau(num)
For t = 1 To num
tableau(t) = Rnd(100000) + 1

Next

MsgBox WorksheetFunction.Average(tableau)
End Sub


Avatar
Christian.L
Bonjour

Il faudrait peut être déjà dimensionné le tableau avant de le redimensionner
Dim tableau()

Pas testé

C.L.

"J-Dan" a écrit dans le message de
news:1145901c4418c$fd122c30$
Bonjour à tous,
qui peut me dire pourquoi dans la macro suivante, la
valeur maxi que peut prendre "num" est de 5460, elle
provoque à 5461 un message d'erreur "incompatibilité de
type".
Merci

Sub toto()
num = 5460
ReDim tableau(num)
For t = 1 To num
tableau(t) = Rnd(100000) + 1

Next

MsgBox WorksheetFunction.Average(tableau)
End Sub
Avatar
Clément Marcotte
Bonjour,

Si ton tableau est limité à 5460 entrées, c'est juste normal que cela
plante à la 5461e entrée.


"J-Dan" a écrit dans le message
de news:1145901c4418c$fd122c30$
Bonjour à tous,
qui peut me dire pourquoi dans la macro suivante, la
valeur maxi que peut prendre "num" est de 5460, elle
provoque à 5461 un message d'erreur "incompatibilité de
type".
Merci

Sub toto()
num = 5460
ReDim tableau(num)
For t = 1 To num
tableau(t) = Rnd(100000) + 1

Next

MsgBox WorksheetFunction.Average(tableau)
End Sub
Avatar
J-Dan
salut Clément,
en fait, ça plante si je déclare un tableau à 5461
entrées. A 5460, ça marche.
Je crois que c'est lié au fonctionnement des
fonctions "WorksheetFunction" et non à la mémoire, j'ai
en effet testé la capacité de mon PC, et je peux remplir
un tableau de 42 000 000 valeurs et quelques (tout à
l'heure j'avais la limite exacte, mais je l'ai oubliée).
C'est pour ça que 5460 pour WorksheetFunction.Max, Min,
Count ou autre ça me semble un peu folklo.
M'enfin doit y avoir une explication..
-----Message d'origine-----
Bonjour,

Si ton tableau est limité à 5460 entrées, c'est juste
normal que cela

plante à la 5461e entrée.


"J-Dan" a écrit
dans le message

de news:1145901c4418c$fd122c30$
Bonjour à tous,
qui peut me dire pourquoi dans la macro suivante, la
valeur maxi que peut prendre "num" est de 5460, elle
provoque à 5461 un message d'erreur "incompatibilité de
type".
Merci

Sub toto()
num = 5460
ReDim tableau(num)
For t = 1 To num
tableau(t) = Rnd(100000) + 1

Next

MsgBox WorksheetFunction.Average(tableau)
End Sub

.



Avatar
Jacquouille
Bonsoir
J'ai eu la même limite avec Excel 5, dans une longueur de plage pour
sommeprod et je n'ai jamais compris. J'ai opté pour une question de mémoire
..... ????
--
Jacquouille conseille : http://www.excelabo.net


"J-Dan" a écrit dans le message news:
1145901c4418c$fd122c30$
Bonjour à tous,
qui peut me dire pourquoi dans la macro suivante, la
valeur maxi que peut prendre "num" est de 5460, elle
provoque à 5461 un message d'erreur "incompatibilité de
type".
Merci

Sub toto()
num = 5460
ReDim tableau(num)
For t = 1 To num
tableau(t) = Rnd(100000) + 1

Next

MsgBox WorksheetFunction.Average(tableau)
End Sub
Avatar
michdenis
Bonjour J-Dan,

C'est effectivement une limitation d'excel lorsqu'il joue avec des tableaux.

Je suppose que tu as une version Excel 2000... Je crois me souvenir d'avoir déjà frappé le même mur ... et ça fait mal
...;-))

essaie ceci :

Dans le cas d'excel 2000, ça bloque à 5461 , tout est ok jusqu'à 5460

Tu inscris dans la plage A1:A5465 une série numérique d'un pas de 1

Et tu exécutes la macro suivante : La macro se plantera lorsque tu auras la variable A sera égale à

'----------------------------
Sub toto1()

Dim A As Integer, Borne as integer
Borne = 5459

For A = 1 To 3
T = Range("A1:A" & Borne + A).Value2
g = Application.WorksheetFunction.Match(borne + A, T, 0)
Next
End Sub
'----------------------------


Dans excel 2002, cette limite n'existe plus du moins jusqu'à 65536


Salutations!


"J-Dan" a écrit dans le message de news:1145901c4418c$fd122c30$
Bonjour à tous,
qui peut me dire pourquoi dans la macro suivante, la
valeur maxi que peut prendre "num" est de 5460, elle
provoque à 5461 un message d'erreur "incompatibilité de
type".
Merci

Sub toto()
num = 5460
ReDim tableau(num)
For t = 1 To num
tableau(t) = Rnd(100000) + 1

Next

MsgBox WorksheetFunction.Average(tableau)
End Sub
Avatar
J-Dan
eh oui Denis, je retrouve cette maudite limite ...

Me permettrez-vous, avant d'aller rejoindre mon plumard,
d'en remettre une couche en ajoutant que 5460, c'est
quand même pas mal, j'ai essayé avec un tableau à 2
dimensions, et là, on n'est plus très loin du boulier !

bonne nuit à tous

-----Message d'origine-----
Bonjour J-Dan,

C'est effectivement une limitation d'excel lorsqu'il
joue avec des tableaux.


Je suppose que tu as une version Excel 2000... Je crois
me souvenir d'avoir déjà frappé le même mur ... et ça

fait mal
....;-))

essaie ceci :

Dans le cas d'excel 2000, ça bloque à 5461 , tout est ok
jusqu'à 5460


Tu inscris dans la plage A1:A5465 une série numérique
d'un pas de 1


Et tu exécutes la macro suivante : La macro se plantera
lorsque tu auras la variable A sera égale à


'----------------------------
Sub toto1()

Dim A As Integer, Borne as integer
Borne = 5459

For A = 1 To 3
T = Range("A1:A" & Borne + A).Value2
g = Application.WorksheetFunction.Match(borne + A,
T, 0)

Next
End Sub
'----------------------------


Dans excel 2002, cette limite n'existe plus du moins
jusqu'à 65536



Salutations!


"J-Dan" a écrit
dans le message de news:1145901c4418c$fd122c30

$
Bonjour à tous,
qui peut me dire pourquoi dans la macro suivante, la
valeur maxi que peut prendre "num" est de 5460, elle
provoque à 5461 un message d'erreur "incompatibilité de
type".
Merci

Sub toto()
num = 5460
ReDim tableau(num)
For t = 1 To num
tableau(t) = Rnd(100000) + 1

Next

MsgBox WorksheetFunction.Average(tableau)
End Sub


.