OVH Cloud OVH Cloud

[VBA] incompatibilité de type 13

11 réponses
Avatar
twinley
Bonjour à tous,

J'applique la déclaration de var public donné dans le fil "tuer une
procédure", une solution donnée par ChrisV.
Je dois arrêter huit OnTime si je veux fermer proprement ma feuille à tout
moment.
Depuis le temps que je bricole sur ce truc, qui n'a jamais tourné rond, je
me dis que c'est pas si simple.

Ces variables public en option explicit m'on fait avancer sur la question.
Elles n'ont voulue s'installer que dans le module1 uniquement alors que les
macros qui lancent les OnTime et les macro associées sont en Feuil1.
Mais à la fermeture des OnTime je rencontre dans une sub une "erreur 13
incompatibilité de type". Cela ne semble pas lié au OnTime en mode stop,
enfin je pense.

c'est une proc qui fait un autoscale sur un graphique, et qui fonctionne
bien, sans erreur.
voici les lignes où ça coince :
Dim Min As Integer
Dim Max As Integer
' max & min des bars affichées dans la graphique
Max = Int([MAX(Yhigh)])
Min = Int([MIN(Ylow)])

Yhigh, Ylow est un nom défini par =DECALER.... à la façon pour avoir un
graphique dynamique.

Quand je lance la série de Application.OnTime Now, proD, 0 pour
l'arrêt complet,
XL bute sur la ligne Max = Int([MAX(Yhigh)]) avec l'erreur 13

Un coup de main serait apprécié pour tordre le cou à cette erreur qui bloque
tout. Merci pour votre aide.

à+
twinley

10 réponses

1 2
Avatar
Emcy
un Integer à une valeur max de 32 000. as-tu vérifié que les chiffres que tu
mets dans ces variables ne sont pas en dehors de cette limite ?

"twinley" a écrit dans le message de
news:
Bonjour à tous,

J'applique la déclaration de var public donné dans le fil "tuer une
procédure", une solution donnée par ChrisV.
Je dois arrêter huit OnTime si je veux fermer proprement ma feuille à tout
moment.
Depuis le temps que je bricole sur ce truc, qui n'a jamais tourné rond, je
me dis que c'est pas si simple.

Ces variables public en option explicit m'on fait avancer sur la question.
Elles n'ont voulue s'installer que dans le module1 uniquement alors que
les

macros qui lancent les OnTime et les macro associées sont en Feuil1.
Mais à la fermeture des OnTime je rencontre dans une sub une "erreur 13
incompatibilité de type". Cela ne semble pas lié au OnTime en mode stop,
enfin je pense.

c'est une proc qui fait un autoscale sur un graphique, et qui fonctionne
bien, sans erreur.
voici les lignes où ça coince :
Dim Min As Integer
Dim Max As Integer
' max & min des bars affichées dans la graphique
Max = Int([MAX(Yhigh)])
Min = Int([MIN(Ylow)])

Yhigh, Ylow est un nom défini par ÞCALER.... à la façon pour avoir un
graphique dynamique.

Quand je lance la série de Application.OnTime Now, proD, 0 pour
l'arrêt complet,
XL bute sur la ligne Max = Int([MAX(Yhigh)]) avec l'erreur 13

Un coup de main serait apprécié pour tordre le cou à cette erreur qui
bloque

tout. Merci pour votre aide.

à+
twinley






Avatar
twinley
Bonjour Emcy

Max et Min sont autour de 4000.
En test, j'ai quand même déclaré en Long et j'ai toujours l'erreur 13.
Curieusement, l'err13 vient quand je lance la procédure d'arrêt des OnTime.
Quand je me sers des Min et Max dans leur macro d'adaptation d'échelle, ça
marche sans erreur.
Troublant.

Merci pour ton aide

à+
twinley

--
à+D
"Emcy" a écrit dans le message de
news:
un Integer à une valeur max de 32 000. as-tu vérifié que les chiffres que
tu

mets dans ces variables ne sont pas en dehors de cette limite ?

"twinley" a écrit dans le message de
news:
Bonjour à tous,

J'applique la déclaration de var public donné dans le fil "tuer une
procédure", une solution donnée par ChrisV.
Je dois arrêter huit OnTime si je veux fermer proprement ma feuille à
tout


moment.
Depuis le temps que je bricole sur ce truc, qui n'a jamais tourné rond,
je


me dis que c'est pas si simple.

Ces variables public en option explicit m'on fait avancer sur la
question.


Elles n'ont voulue s'installer que dans le module1 uniquement alors que
les

macros qui lancent les OnTime et les macro associées sont en Feuil1.
Mais à la fermeture des OnTime je rencontre dans une sub une "erreur 13
incompatibilité de type". Cela ne semble pas lié au OnTime en mode stop,
enfin je pense.

c'est une proc qui fait un autoscale sur un graphique, et qui fonctionne
bien, sans erreur.
voici les lignes où ça coince :
Dim Min As Integer
Dim Max As Integer
' max & min des bars affichées dans la graphique
Max = Int([MAX(Yhigh)])
Min = Int([MIN(Ylow)])

Yhigh, Ylow est un nom défini par ÞCALER.... à la façon pour avoir un
graphique dynamique.

Quand je lance la série de Application.OnTime Now, proD, 0
pour


l'arrêt complet,
XL bute sur la ligne Max = Int([MAX(Yhigh)]) avec l'erreur 13

Un coup de main serait apprécié pour tordre le cou à cette erreur qui
bloque

tout. Merci pour votre aide.

à+
twinley










Avatar
ru-th
Salut

pas testé

mais des variables nommées max et min qui sont des noms reservés pour excel,
c'est peu prudent
essaie en changeant le nom de tes variables

a+
rural thierry
"twinley" a écrit dans le message de news:

Bonjour Emcy

Max et Min sont autour de 4000.
En test, j'ai quand même déclaré en Long et j'ai toujours l'erreur 13.
Curieusement, l'err13 vient quand je lance la procédure d'arrêt des
OnTime.

Quand je me sers des Min et Max dans leur macro d'adaptation d'échelle, ça
marche sans erreur.
Troublant.

Merci pour ton aide

à+
twinley

--
à+D
"Emcy" a écrit dans le message de
news:
un Integer à une valeur max de 32 000. as-tu vérifié que les chiffres
que


tu
mets dans ces variables ne sont pas en dehors de cette limite ?

"twinley" a écrit dans le message de
news:
Bonjour à tous,

J'applique la déclaration de var public donné dans le fil "tuer une
procédure", une solution donnée par ChrisV.
Je dois arrêter huit OnTime si je veux fermer proprement ma feuille à
tout


moment.
Depuis le temps que je bricole sur ce truc, qui n'a jamais tourné
rond,



je
me dis que c'est pas si simple.

Ces variables public en option explicit m'on fait avancer sur la
question.


Elles n'ont voulue s'installer que dans le module1 uniquement alors
que



les
macros qui lancent les OnTime et les macro associées sont en Feuil1.
Mais à la fermeture des OnTime je rencontre dans une sub une "erreur
13



incompatibilité de type". Cela ne semble pas lié au OnTime en mode
stop,



enfin je pense.

c'est une proc qui fait un autoscale sur un graphique, et qui
fonctionne



bien, sans erreur.
voici les lignes où ça coince :
Dim Min As Integer
Dim Max As Integer
' max & min des bars affichées dans la graphique
Max = Int([MAX(Yhigh)])
Min = Int([MIN(Ylow)])

Yhigh, Ylow est un nom défini par ÞCALER.... à la façon pour avoir
un



graphique dynamique.

Quand je lance la série de Application.OnTime Now, proD, 0
pour


l'arrêt complet,
XL bute sur la ligne Max = Int([MAX(Yhigh)]) avec l'erreur 13

Un coup de main serait apprécié pour tordre le cou à cette erreur qui
bloque

tout. Merci pour votre aide.

à+
twinley














Avatar
twinley
D'ailleurs pour voir les process en cours je n'ai rien trouvé de plus
élégant que d'enregistrer une macro et il n'y a aucune macro qui utilise la
macro d'autoscale ou sont les var Min & Max qui pose Pb. Cette macro tourne
un pouillème de seconde une ou deux fois par jour, guère plus.
Le compilateur ne se plaint pas de ces variables ni de la macro "autoscale"
et elles font leur boulot.

' Ce qui tourne par exemple quand je lance "StopOnTime"

Application.Run "flux.xls!versUT1inv"
Application.Run "flux.xls!versUT2inv"
Application.Run "flux.xls!lock2"
Application.Run "flux.xls!lock1"

Faut-il tester la présence des OnTime en cours car quand je lance le stop,
je stoppe 8 OnTime alors qu'il y en a 4 qui tourne dans cet exemple pris à
un instant t.
Si oui comment faire le test des applications en cours ?

à+
twinley
--
à+D
"Emcy" a écrit dans le message de
news:
un Integer à une valeur max de 32 000. as-tu vérifié que les chiffres que
tu

mets dans ces variables ne sont pas en dehors de cette limite ?

"twinley" a écrit dans le message de
news:
Bonjour à tous,

J'applique la déclaration de var public donné dans le fil "tuer une
procédure", une solution donnée par ChrisV.
Je dois arrêter huit OnTime si je veux fermer proprement ma feuille à
tout


moment.
Depuis le temps que je bricole sur ce truc, qui n'a jamais tourné rond,
je


me dis que c'est pas si simple.

Ces variables public en option explicit m'on fait avancer sur la
question.


Elles n'ont voulue s'installer que dans le module1 uniquement alors que
les

macros qui lancent les OnTime et les macro associées sont en Feuil1.
Mais à la fermeture des OnTime je rencontre dans une sub une "erreur 13
incompatibilité de type". Cela ne semble pas lié au OnTime en mode stop,
enfin je pense.

c'est une proc qui fait un autoscale sur un graphique, et qui fonctionne
bien, sans erreur.
voici les lignes où ça coince :
Dim Min As Integer
Dim Max As Integer
' max & min des bars affichées dans la graphique
Max = Int([MAX(Yhigh)])
Min = Int([MIN(Ylow)])

Yhigh, Ylow est un nom défini par ÞCALER.... à la façon pour avoir un
graphique dynamique.

Quand je lance la série de Application.OnTime Now, proD, 0
pour


l'arrêt complet,
XL bute sur la ligne Max = Int([MAX(Yhigh)]) avec l'erreur 13

Un coup de main serait apprécié pour tordre le cou à cette erreur qui
bloque

tout. Merci pour votre aide.

à+
twinley










Avatar
twinley
Bonjour ru-th,

J'ai bien cru que tu avais mis le doigt dessus, mais non.
j'ai changé en

Dim Mini As Integer
Dim Maxi As Integer
' maxi & mini des bars affichées dans la graphique
Maxi = Int([MAX(Yhigh)])
Mini = Int([MIN(Ylow)])

l'adaptation d'echelle continue a bien marcher, la compil passe sans Pb, et
l'arrêt des OnTime génère une err13 sur la ligne
Maxi = Int([MAX(Yhigh)])

du coup j'en ai profité pour déclarer
Dim Yhigh As Variant
Dim YlowAs Variant
mais c'est toujours pareil. Incompatibilité de type.
merci pour tes lumières

à+twinley


"ru-th" a écrit dans le message de
news:
Salut

pas testé

mais des variables nommées max et min qui sont des noms reservés pour
excel,

c'est peu prudent
essaie en changeant le nom de tes variables

a+
rural thierry
"twinley" a écrit dans le message de news:

Bonjour Emcy

Max et Min sont autour de 4000.
En test, j'ai quand même déclaré en Long et j'ai toujours l'erreur 13.
Curieusement, l'err13 vient quand je lance la procédure d'arrêt des
OnTime.

Quand je me sers des Min et Max dans leur macro d'adaptation d'échelle,
ça


marche sans erreur.
Troublant.

Merci pour ton aide

à+
twinley

--
à+D
"Emcy" a écrit dans le message de
news:
un Integer à une valeur max de 32 000. as-tu vérifié que les chiffres
que


tu
mets dans ces variables ne sont pas en dehors de cette limite ?

"twinley" a écrit dans le message de
news:
Bonjour à tous,

J'applique la déclaration de var public donné dans le fil "tuer une
procédure", une solution donnée par ChrisV.
Je dois arrêter huit OnTime si je veux fermer proprement ma feuille
à




tout
moment.
Depuis le temps que je bricole sur ce truc, qui n'a jamais tourné
rond,



je
me dis que c'est pas si simple.

Ces variables public en option explicit m'on fait avancer sur la
question.


Elles n'ont voulue s'installer que dans le module1 uniquement alors
que



les
macros qui lancent les OnTime et les macro associées sont en
Feuil1.




Mais à la fermeture des OnTime je rencontre dans une sub une "erreur
13



incompatibilité de type". Cela ne semble pas lié au OnTime en mode
stop,



enfin je pense.

c'est une proc qui fait un autoscale sur un graphique, et qui
fonctionne



bien, sans erreur.
voici les lignes où ça coince :
Dim Min As Integer
Dim Max As Integer
' max & min des bars affichées dans la graphique
Max = Int([MAX(Yhigh)])
Min = Int([MIN(Ylow)])

Yhigh, Ylow est un nom défini par ÞCALER.... à la façon pour avoir
un



graphique dynamique.

Quand je lance la série de Application.OnTime Now, proD, 0
pour


l'arrêt complet,
XL bute sur la ligne Max = Int([MAX(Yhigh)]) avec l'erreur
13





Un coup de main serait apprécié pour tordre le cou à cette erreur
qui




bloque
tout. Merci pour votre aide.

à+
twinley


















Avatar
JpPradier
Bonjour Twinley

Ne cherche pas plus loin : Un integer est compris entre -32768 et + 32767. il faut le dimensionner
en long par exemple.

j-p
Avatar
Emcy
Je crois que j'ai trouvé:
qu'elle type de variable renvoie la commande MAX(Yhigh) ?
il ne faut pas que ça soit un chiffre... remplaces Max = Int([MAX(Yhigh)])
par Max = MAX(Yhigh]
ou essaies ça (c'est pas très jolie, mais bon si ça marche...) : Max Int(Str(MAX(Yhigh)))

A quoi servent tes crochets dans Max = Int([MAX(Yhigh)]) ?


Max = Int([MAX(Yhigh)])


"JpPradier" a écrit dans le message
de news:
Bonjour Twinley

Ne cherche pas plus loin : Un integer est compris entre -32768 et + 32767.
il faut le dimensionner

en long par exemple.

j-p



Avatar
twinley
Bonjour JpPradier,

J'avais déjà fais ce test auquel je n'avais pas pensé, en suivant le conseil
de Emcy.
Je viens de le recommencer.
Même en Long, ça ne marche toujours pas.
Il semble même que les OnTime sont bien arrêter car quand je reprend la main
dans l'éditeur après l'erreur, je sauve et la feuille se ferme.
Il n'y a plus de process qui relance la feuille.

Merci pour le coup de main

à+twinley

--
à+D
"JpPradier" a écrit dans le message
de news:
Bonjour Twinley

Ne cherche pas plus loin : Un integer est compris entre -32768 et + 32767.
il faut le dimensionner

en long par exemple.

j-p



Avatar
twinley
J'ai modifié Max et Min en Maxi et Mini pour ne pas avoir de confusion avec
le code réservé.

Maxi et Mini retourne un entier 3700 et 3650 par exemple. Ce sont les bornes
de l'echelle Y d'un graphique dynamique.
Yhigh est un nom défini qui fait référence à
ÞCALER(flux.xls!XValues;0;2)
Ylow est un nom défini qui fait référence à ÞCALER(flux.xls!XValues;0;3)
XValues est un nom défini qui fait référence à
ÞCALER(Graph1!$B$11;Graph1!$A$11-1;0;Graph1!$B$11;1)

Maxi = Int(Str(MAX(Yhigh))) crée une erreur de compil sub ou fonction non
définie et XL passe MAX en minuscule Max
Maxi= MAX(Yhigh)
ou
Maxi = MAX[Yhigh] idem erreur de compil

et ma macro autoscale ne marche plus.

merci

a+twinley



--
à+D
"Emcy" a écrit dans le message de
news:
Je crois que j'ai trouvé:
qu'elle type de variable renvoie la commande MAX(Yhigh) ?
il ne faut pas que ça soit un chiffre... remplaces Max = Int([MAX(Yhigh)])
par Max = MAX(Yhigh]
ou essaies ça (c'est pas très jolie, mais bon si ça marche...) : Max > Int(Str(MAX(Yhigh)))

A quoi servent tes crochets dans Max = Int([MAX(Yhigh)]) ?


Max = Int([MAX(Yhigh)])


"JpPradier" a écrit dans le message
de news:
Bonjour Twinley

Ne cherche pas plus loin : Un integer est compris entre -32768 et +
32767.


il faut le dimensionner
en long par exemple.

j-p







Avatar
JpPradier
Re twinley

J'ai cette erreur (type 13) quand un des noms (Yhigh ou Ylow) n'est pas défini. A creuser ?

j-p
1 2