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

Problème de déclenchement de macros excel

3 réponses
Avatar
Elkochta
Bonjour,
Pour commencer, je suis débutant en vba.
J'ai un code avec des fonctions contenant des inputbox, les valeurs rentrées
dans celles-ci sont utilisées dans des cellules de mes tableaux pour mes
calculs. Jusque là, rien de bien original.

Problème: Lorsque je veux enregistrer mon fichier excel, toutes les inputbox
qui ont étées utilisées sont à nouveau appelées, et on doit à nouveau
re-rentrer toutes les valeurs. Il arrive même que celles ci soit déclenchées
à la moindre modification du classeur, et je n'arrive pas a y trouver
d'explication.

Un exemple de fonction utilisée:

Public function entree_donnees(v) as Double

entree_donnees = Inputbox("Entrez la valeur souhaitée pour le coefficient de
conduction thermique en W/m.K: ")

End Function

L'appel de cette fonction se fait dans une cellule avec pout expression:
"SI(lam1n=2; entree_donnees(lam1n); RECHERCHE(lam1n;T14:T51;S14:S51)" Qui me
retourne une valeur en fonction d'un choix dans un menu déroulant comportant
l'option donnée par l'utilisateur en position 2.

Voilà, j'espère avoir été assez clair, et j'espère que quelqu'un arrivera à
trouver solution à mon problème.

3 réponses

Avatar
lSteph
Bonsoir,

Pour stocker des valeurs utilise plutôt une définition de nom.
Insertion Nom Définir
noms dans le classeur:
cctBois

réfère à: 0,23

Et garde l'élaboration de fonctions pour ce qui n'est pas dans excel
A ce propos , une fonction est destinée à renvoyer un résultat et non
à de l'execution (utiliser plutôt une Sub)
si l'inputbox fonctionne néanmoins, ce n'est pas recommandé, à cet
égard.

Le pb inverse va se poser quand tu utilises des fonctions perso à bon
escient
le recalcul n'est pas redéclenché dès lors qu'une valeur est obtenue
pour ce faire
il faut utiliser Application.Volatile
que l'on place au début.


Cordialement.

lSteph


On 6 juil, 17:44, Elkochta wrote:
Bonjour,
Pour commencer, je suis débutant en vba.
J'ai un code avec des fonctions contenant des inputbox, les valeurs rentr ées
dans celles-ci sont utilisées dans des cellules de mes tableaux pour mes
calculs. Jusque là, rien de bien original.

Problème: Lorsque je veux enregistrer mon fichier excel, toutes les inp utbox
qui ont étées utilisées sont à nouveau appelées, et on doit à nouveau
re-rentrer toutes les valeurs. Il arrive même que celles ci soit décl enchées
à la moindre modification du classeur, et je n'arrive pas a y trouver
d'explication.

Un exemple de fonction utilisée:

Public function entree_donnees(v) as Double

entree_donnees = Inputbox("Entrez la valeur souhaitée pour le coeffic ient de
conduction thermique en W/m.K: ")

End Function

L'appel de cette fonction se fait dans une cellule avec pout expression:
"SI(lam1n=2; entree_donnees(lam1n); RECHERCHE(lam1n;T14:T51;S14:S51)" Q ui me
retourne une valeur en fonction d'un choix dans un menu déroulant compo rtant
l'option donnée par l'utilisateur en position 2.

Voilà, j'espère avoir été assez clair, et j'espère que quelqu'u n arrivera à
trouver solution à mon problème.


Avatar
Elkochta
Merci ISteph de ta réponse si rapide, cependant, je dois avouer que je n'ai
pas très bien saisi, je ne peux pas utiliser de définitions de nom, car les
variables ne sont pas forcemment créées, j'aimerai si possible un exemple
pour illustrer l'équivalent d'une imputbox que je pourrai utiliser.

merci !



Bonsoir,

Pour stocker des valeurs utilise plutôt une définition de nom.
Insertion Nom Définir
noms dans le classeur:
cctBois

réfère à: 0,23

Et garde l'élaboration de fonctions pour ce qui n'est pas dans excel
A ce propos , une fonction est destinée à renvoyer un résultat et non
à de l'execution (utiliser plutôt une Sub)
si l'inputbox fonctionne néanmoins, ce n'est pas recommandé, à cet
égard.

Le pb inverse va se poser quand tu utilises des fonctions perso à bon
escient
le recalcul n'est pas redéclenché dès lors qu'une valeur est obtenue
pour ce faire
il faut utiliser Application.Volatile
que l'on place au début.


Cordialement.

lSteph


On 6 juil, 17:44, Elkochta wrote:
Bonjour,
Pour commencer, je suis débutant en vba.
J'ai un code avec des fonctions contenant des inputbox, les valeurs rentrées
dans celles-ci sont utilisées dans des cellules de mes tableaux pour mes
calculs. Jusque là, rien de bien original.

Problème: Lorsque je veux enregistrer mon fichier excel, toutes les inputbox
qui ont étées utilisées sont à nouveau appelées, et on doit à nouveau
re-rentrer toutes les valeurs. Il arrive même que celles ci soit déclenchées
à la moindre modification du classeur, et je n'arrive pas a y trouver
d'explication.

Un exemple de fonction utilisée:

Public function entree_donnees(v) as Double

entree_donnees = Inputbox("Entrez la valeur souhaitée pour le coefficient de
conduction thermique en W/m.K: ")

End Function

L'appel de cette fonction se fait dans une cellule avec pout expression:
"SI(lam1n=2; entree_donnees(lam1n); RECHERCHE(lam1n;T14:T51;S14:S51)" Qui me
retourne une valeur en fonction d'un choix dans un menu déroulant comportant
l'option donnée par l'utilisateur en position 2.

Voilà, j'espère avoir été assez clair, et j'espère que quelqu'un arrivera à
trouver solution à mon problème.







Avatar
lSteph
Bonjour,

Voici un exemple avec DonnéesValidation
http://cjoint.com/?hjkKzlzLZA

Partant d'un exemple de calcul fort simple
Cth du materiau multiplié par 2
Avec l'idée qu'un materiau doit avoir été choisi
La formule recherchera dans la liste materiau et cth
=SI(C3="";"";INDEX(Cth;EQUIV(C3;materiau;0);1)*2)
La définition du nom source de la plage est dynamique
ÞCALER(Feuil1!$F$1;1;0;NBVAL(Feuil1!$F:$F)-1;1)

Si on voulait faire cela par vba (ou pour faire du vba )ce serait tout
à fait possible
mais préférablement pas avec des inputbox dans une fonction qui
posent pb de recalcul.

Au mieux remplacer validations et choix par macro avec un Userform
et par fonction les calculs.

Cordialement.

lSteph

On 8 juil, 22:54, Elkochta wrote:
Merci ISteph de ta réponse si rapide, cependant, je dois avouer que je n'ai
pas très bien saisi, je ne peux pas utiliser de définitions de nom, c ar les
variables ne sont pas forcemment créées, j'aimerai si possible un exe mple
pour illustrer l'équivalent d'une imputbox que je pourrai utiliser.

merci !


Bonsoir,

Pour stocker des valeurs utilise plutôt une définition de nom.
Insertion Nom Définir
noms dans le classeur:
cctBois

réfère à: 0,23

Et garde l'élaboration de fonctions pour ce qui n'est pas dans excel
A ce propos , une fonction est destinée à renvoyer un résultat et non
à de l'execution (utiliser plutôt une Sub)
si l'inputbox fonctionne néanmoins, ce n'est pas recommandé, à cet
égard.

Le pb inverse va se poser quand tu utilises des fonctions perso à bon
escient
le recalcul n'est pas redéclenché dès lors qu'une valeur est obte nue
pour ce faire
il faut utiliser Application.Volatile
que l'on place au début.

Cordialement.

lSteph

On 6 juil, 17:44, Elkochta wrote:
Bonjour,
Pour commencer, je suis débutant en vba.
J'ai un code avec des fonctions contenant des inputbox, les valeurs r entrées
dans celles-ci sont utilisées dans des cellules de mes tableaux pou r mes
calculs. Jusque là, rien de bien original.

Problème: Lorsque je veux enregistrer mon fichier excel, toutes les inputbox
qui ont étées utilisées sont à nouveau appelées, et on do it à nouveau
re-rentrer toutes les valeurs. Il arrive même que celles ci soit d éclenchées
à la moindre modification du classeur, et je n'arrive pas a y trouv er
d'explication.

Un exemple de fonction utilisée:

Public function entree_donnees(v) as Double

entree_donnees = Inputbox("Entrez la valeur souhaitée pour le coe fficient de
conduction thermique en W/m.K: ")

End Function

L'appel de cette fonction se fait dans une cellule avec pout expressi on:
"SI(lam1n=2; entree_donnees(lam1n); RECHERCHE(lam1n;T14:T51;S14:S51 )" Qui me
retourne une valeur en fonction d'un choix dans un menu déroulant c omportant
l'option donnée par l'utilisateur en position 2.

Voilà, j'espère avoir été assez clair, et j'espère que quel qu'un arrivera à
trouver solution à mon problème.