Fonction VBA ne s'exécute pas automatiquement

Bonjour

J'ai récemment changé d'ordinateur, et depuis je n'arrive plus à exécuter automatiquement une fonction crée sous VBA.

Je m'explique: la fonction que j'ai crée sous VBA est utilisé dans de nombreuses cellules de ma feuille, mais à l'ouverture du fichier, toutes les cellules comprenant cette fonction indiquent "#VALUE": je suis obligé de cliquer sur la formule et taper sur "Entrée" pour qu'elle s'exécute.

Une fois que j'ai exécuté 'manuellement' la fonction, elle marche parfaitement. Pour info voici ma fonction:

Function Interp2D(Tx, Ty, T, x, y)

'Avec extrapolation

Dim nbx, nby, Y1, Y2, nx, ny As Single

    nbx = Tx.Count

    nby = Ty.Count

'Recherche de l'encadrement en x

    nx = 1

    If x <= Tx(1) Then

        nx = 2

    ElseIf x >= Tx(nbx) Then

        nx = nbx

    Else

        While x > Tx(nx)

            nx = nx + 1

        Wend

    End If

'Recherche de l'encadrement en y

    ny = 1

    If y <= Ty(1) Then

        ny = 2

    ElseIf y >= Ty(nby) Then

        ny = nby

    Else

        While y > Ty(ny)

            ny = ny + 1

        Wend

    End If

'Calculs

    Y1 = T(ny - 1, nx - 1) + (T(ny - 1, nx) - T(ny - 1, nx - 1)) / (Tx(nx) - Tx(nx - 1)) * (x - Tx(nx - 1))

    Y2 = T(ny, nx - 1) + (T(ny, nx) - T(ny, nx - 1)) / (Tx(nx) - Tx(nx - 1)) * (x - Tx(nx - 1))

    Interp2D = Y1 + (Y2 - Y1) / (Ty(ny) - Ty(ny - 1)) * (y - Ty(ny - 1))

End Function

Lorsque je glisse ma souris sur l'icone d'erreur, la phrase suivante s'affiche: "A value used in the formula is of the wrong data type".

Je précise que mon excel est calcul automatique, et que malgré mes nombreuses recherches je ne trouve pas de réponse.

A noter que l'ancien différence était en français, le nouveau est en anglais: pour autant le problème n'intervient que sur cette fonction.

En vous remerciant.

Salut,

A ajouter au début de ta fonction

Application.Volatile

Bonjour

Merci beaucoup pour le retour.

Je viens d'essayer et malheureusement même problème..

Bonjour,

la traduction de ton message d'erreur est "Une valeur utilisée dans la formule est du mauvais type de données"

Regarde du côté de tes déclarations de variable

Re,

Bonjour

Merci beaucoup pour le retour.

Je viens d'essayer et malheureusement même problème..

Sans ça, compliqué de pouvoir t'aider

Salut MJ2

Bonjour,

la traduction de ton message d'erreur est "Une valeur utilisée dans la formule est du mauvais type de données"

Regarde du côté de tes déclarations de variable

C'est un message d'erreur du vérificateur de formule, perso je désactive cette option qui ne fonctionne jamais comme il faut

Bonsoir à vous

Merci pour votre retour.

J'ai essayé différentes déclarations de variable, mais je pense que je passe à côté de quelque chose...

Mon fichier est en pièce jointe, la cellule posant problème étant la E10.

Encore merci!

7book2.xlsm (22.33 Ko)

Re,

Pourquoi utiliser CTRL+SHIFT+Entrée pour une fonction qui est déjà matricielle

2020 04 15 21h55 29

Bonjour Bruno

Je n’ai pas compris ton commentaire?

Aller sur la cellule E10 puis cliquer sur entrée est la seule manière chez moi d’exécuter la fonction, et c’est ce que je ne comprend pas justement ?

Bonjour,

Ta fonction personnalisée est une fonction matricielle

Et dans ton fichier on peut voir que tu essayes calculer de façon matricielle {} une fonction qui l'est

2020 04 16 11h43 54

D'où ton message d'erreur pour moi

Le résultat qui est affiché chez moi n'est pas celui escompté

@+

Ce qui est étonnant c'est que dans mon fichier je n'utilise pas ces {} ..

untitled

Re,

Étrange effectivement, mais sinon

Peut être faut-il aller plus loin dans l'idée de M12 et chercher plus loin dans les déclarations de variable?

J'ai essayé plusieurs manières de les déclarer, mais je suis loin d'être expert et j'ai peut être loupé un truc :/

Re,

Est-ce que tu sais au moins le résultat que tu dois avoir

Nous attendons toujours la réponse

Oui, le résultat affiché une fois que j'ai fait 'entrée' sur la cellule est correct.

Le but de la fonction est de faire une interpolation 2D:

Mes inputs sont x et y: pour une combinaison de x/y, je veux trouver ma correspondance dans ma matrice. Si x et y ne correspondent pas parfaitement à des breakpoints de mes axes (x correspond à l'axe P7:X7; y correspond à l'axe O7:O37), il interpole.

Exemple: si x=2500 et y=82; ca va chercher 1.8652:

untitled

Si=2600 et y=83, ca vient interpoler entre mes breakpoints.

Bonsoir,

Je pense que tu es perdu dans tes idées/pensées

ton problème initial était

J'ai récemment changé d'ordinateur, et depuis je n'arrive plus à exécuter automatiquement une fonction crée sous VBA.

Je t'ai donc donné la solution

https://forum.excel-pratique.com/viewtopic.php?p=858425#p858425

Tu nous as dis ensuite

Lorsque je glisse ma souris sur l'icone d'erreur, la phrase suivante s'affiche: "A value used in the formula is of the wrong data type".

Je t'ai dit que pour moi, l'erreur affichée par Excel n'en était pas une

https://forum.excel-pratique.com/viewtopic.php?p=858586#p858586

Je t'ai demandé alors ton fichier et dans ce que tu m'envois, la formule est matricielle pour une fonction matrcielle

https://forum.excel-pratique.com/viewtopic.php?p=858999#p858999

D'habitude, je laisse tomber, mais je veux te montrer que je t'ai donné fonctionne

Voici la vidéo de ce qui se passe chez moi

https://youtu.be/nw9gpo9Q9m0

Et voici le fichier comme tu aurais l'avoir

Si après tout cela, tu as toujours un soucis, il faudra te faire démarabouter

11jozmich-book2.xlsm (22.81 Ko)
Rechercher des sujets similaires à "fonction vba execute pas automatiquement"