Valeur cible automatisée en fonction de plusieurs cellules variables

Superchaprot

XLDnaute Nouveau
Bonjour à tous,

Avant d'exposer mon problème, excusez-moi par avance car je sais qu'il a déjà été posé de nombreuses fois, et apparemment toujours résolus. Le problème c'est que je pige décidément rien de chez rien en programmation, et je suis incapable d'exploiter les réponses données.

Voici mon problème:

J'ai une feuille excel qui me donne la valeur du volume d'essence "Vfuel" dans un réservoir sphérique (pour simplifier) de rayon "r" connu.
"Vfuel" et "r" sont amenés à varier selon mes besoins. Les valeurs de Vfuel et "r" sont respectivement en A20 et A21.

Le besoin est de calculer la hauteur de liquide dans le réservoir, notée "h" sachant que:
Vfuel=h^2*pi*r-h^3
La valeur de "h" serait en A22.

J'aimerais donc créer un programme (macro?) qui me remplisse automatiquement une valeur pour "h" quelques soient les variations de "Vfuel" et de "r".

Ce problème est simplifié, en réalité j'ai un peu plus de variables, mais le vrai problème serait trop long à poser ici.

Par ailleurs, j'ai plusieurs réservoirs en parallèle (disons 2, par exemple, de tailles et remplissages différents), est-il possible avec une seule macro de gérer le calculs des deux hauteurs séparément mais simultanément?

Voilà, je n'ai jamais rien programmé sous excel (ni autre) et "macro" est un mot bien flou...

Je ne vous cache pas que si quelqu'un pouvait me donner une réponse toute faite et guidée, sans que je comprenne, ça m'irait plus que bien, ce travail sous excel n'est même pas pour moi et me faire perdre un temps fou/précieux...

Grand merci aux âmes charitables !

Chaprot
 

mécano41

XLDnaute Accro
Re : Valeur cible automatisée en fonction de plusieurs cellules variables

Bonjour,

Ta formule de volume ne me semble pas exacte.

Voici une appli. avec calcul par dichotomie en VBA. Sinon, il faut inverser la formule du volume pour trouver la hauteur et il y a une équation du 3ème degré à résoudre par la méthode de Cardan. De toutes façons, il y a des formules intermédiaires et des tests à faire...

Cordialement

EDIT : pour le second point, il faudrait préciser exactement ce que tu veux faire...
 

Pièces jointes

  • Hauteur dans sphère1.xlsm
    18.7 KB · Affichages: 93
Dernière édition:

Superchaprot

XLDnaute Nouveau
Re : Valeur cible automatisée en fonction de plusieurs cellules variables

Bonjour mécano41, et merci de t'être penché sur mon problème.

En effet j'ai tapé trop vite ma formule, il manquait un bout, la tienne est la bonne.
J'ai donc pris le code que tu as écrit, copié-collé dans mon excel mais rien ne se passe.
J'ai bien nommé mes cellules/plages comme tu l'as fait.
Est-ce dû au fait que je travaille en page (onglet) 3, et non en 1?

Je t'ai joint un un excel avec mon problème exposé plus fidèlement à la réalité (le sujet étant protégé par clause de confidentialité je ne peux en montrer plus). Je pensais pouvoir adapter ton code au vrai cas, mais il faut croire que c'est toujours hors de porté pour moi.

Dans cet excel il y a la vraie formule de calcul de la hauteur de mon réservoir (qui en réalité n'est pas sphérique mais cylindrique avec des extrémités en demi-sphères).
Ma hauteur de fuel dépend donc: du rayon du réservoir, de sa longueur, et de son volume de fuel, tous trois connus et variables. Ces 3 valeurs sont piquées sur d'autres cases dans ma feuille excel.
Et à partir de ça, avec ton code sous les yeux, je n'y arrive toujours pas.

Pourrais-tu stp jeter un oeil à la feuille que je t'ai jointe et adapter le code ?

Par ailleurs, y a-t-il un moyen de ne pas "protéger" toutes les cases du classeur lorsque la macro est activée? (aucune si possible) car sur cette même feuille excel doivent s'enchaîner d'autres calculs.


Merci encore pour ton aide,

Cordialement
 

Pièces jointes

  • tank_test_fuel-height-finding.xlsx
    9.2 KB · Affichages: 83

mécano41

XLDnaute Accro
Re : Valeur cible automatisée en fonction de plusieurs cellules variables

Bonjour,

Tu aurais pu poser le problème entier tout de suite :) !

Voici l'appli. refaite pour une cuve verticale à fonds hémisphériques (si c'est en horizontal ou avec des fonds bombés à rayon de carre, je l'ai fait aussi mais c'est plus compliqué!).

Je l'ai traité avec une fonction ; ainsi, tu peux l'utiliser à plusieurs endroits comme une fonction EXCEL. Tu la trouves dans les fonctions personnalisées ; elle s'appelle CalcH(R_1;Ht;Vfuel) et tu peux donc calculer H pour un autre réservoir en changeant les trois paramètres. Ici, ce sont les noms des 3 cellules nommées.

Pour l'utiliser dans un autre fichier, il suffit en VBA de créer un module* et d'y copier tout le code (ne pas mettre le code dans un code de feuille la fonction ne serait pas active) et de nommer ou non tes cellules (les paramètres peuvent bien sûr être des adresses : CalcH(C24;C43;C32)

* au lieu de créer un module, tu peux faire Exporter...sur ton bureau puis Importer...du bureau dans l'autre fichier

EDIT : n'oublie pas d'autoriser l'activation des macros à l'ouverture...

Cordialement
 

Pièces jointes

  • Copie 1 de tank_test_fuel-height-finding.xlsm
    19.8 KB · Affichages: 75
Dernière édition:

Superchaprot

XLDnaute Nouveau
Re : Valeur cible automatisée en fonction de plusieurs cellules variables

Bonjour mécano41,

Oui c'est vrai j'aurais dû poser le problème entier dès le début ! J'aurais même dû rajouter qu'il s'agit bien d'un réservoir horizontal. En réalité il s'agit d'un réservoir d'avion que je considère horizontal pour simplifier.

Dans la feuille excel que je t'ai transmise, la valeur du "total tank internal volume" est bien correcte (par rapport au rayon, longueur du réservoir), après re-vérification. Elle correspond au volume total (pas uniquement de fuel) interne dans mon réservoir, et je voulais effectivement l'employer pour vérifier que le volume de fuel ne dépasse pas ce volume maximal.

Je te donne ici la formule que j'utilise pour tenter de trouver la hauteur de fuel "h":

V_fuel= pi*h^2*r - pi/3*h^3 + L*r^2*Arccos[1-h/r] - L/2*r^2*Sin[2*Arccos(1-h/r)]

avec r: rayon interne de mon réservoir; L: longueur du réservoir.
Cette formule vaut pour un réservoir horizontal de la forme du mien (cylindre + demi-sphères).
Dans la feuille excel que je t'ai envoyée précédemment, il y a un "1/1000000" en trop dans cette formule, excuse-m'en.

Encore merci de ton aide!

Cordialement,
 

mécano41

XLDnaute Accro
Re : Valeur cible automatisée en fonction de plusieurs cellules variables

Dans la feuille excel que je t'ai transmise, la valeur du "total tank internal volume" est bien correcte (par rapport au rayon, longueur du réservoir), après re-vérification. Elle correspond au volume total (pas uniquement de fuel) interne dans mon réservoir, et je voulais effectivement l'employer pour vérifier que le volume de fuel ne dépasse pas ce volume maximal.

Je ne comprends pas : dans la feuille que tu as donnée plus haut, il y a un rayon de 1,0542... m et une longueur totale de 12,637... m soit une partie cylindrique de 10,529...m. Le volume de la sphère complète est de 4,907... m3 et celui de la partie cylindrique de 36,963...m3 soit un volume total de 41,671...m3 et non de 37,2539...m3 comme indiqué sauf erreur de ma part...

Je te donne ici la formule que j'utilise pour tenter de trouver la hauteur de fuel "h":

V_fuel= pi*h^2*r - pi/3*h^3 + L*r^2*Arccos[1-h/r] - L/2*r^2*Sin[2*Arccos(1-h/r)]

avec r: rayon interne de mon réservoir; L: longueur du réservoir.
Cette formule vaut pour un réservoir horizontal de la forme du mien (cylindre + demi-sphères).

Elle donne le bon résultat donc je l'utilise (adaptée) dans le code VBA

Dans la feuille excel que je t'ai envoyée précédemment, il y a un "1/1000000" en trop dans cette formule, excuse-m'en.

Dans cette feuille, il n'y a que des valeurs (celles que j'ai indiquées plus haut), mais aucune formule! D'où peut-être le problème évoqué (peut être pas le bon fichier?)

Tiens-moi au courant...

Cordialement
 

Pièces jointes

  • Copie 2 de tank_test_fuel-height-finding.xlsm
    19 KB · Affichages: 76
  • Copie 2 de tank_test_fuel-height-finding.xlsm
    19 KB · Affichages: 74
  • Copie 2 de tank_test_fuel-height-finding.xlsm
    19 KB · Affichages: 72
Dernière édition:

Superchaprot

XLDnaute Nouveau
Re : Valeur cible automatisée en fonction de plusieurs cellules variables

Tu vas me détester... la formule est en effet correcte, j'ai juste copié la mauvaise longueur de réservoir. Ceci est réparé dans l'excel que je t'ai joint ici.

Par ailleurs, je viens de me rendre compte en regardant ton code que la longueur de réservoir que tu utilises n'est pas bonne. C'est encore de ma faute, j'ai pas été assez clair sur les données de mon excel: la longueur que je donne ("tank inner length") est mal nommé puisque c'est la longueur du cylindre uniquement... là encore je n'ai pas pensé que ce n'était évident que pour moi, ayant bidouillé sur l'excel pendant des heures. Vraiment désolé, encore. Donc tu peux utiliser Lt directement (ce que j'ai tenté de changer dans ton code).

Je crois que tous les malentendus sont éclaircis, et j'espère que les calculs apparaîtront dans la dernière pièce jointe.

Pourrais-tu également faire apparaître le nombre d'itérations quelque part stp ?

(merci de ta patience)

Cordialement
 

Pièces jointes

  • Copie 2 de tank_test_fuel-height-finding.xlsm
    16.8 KB · Affichages: 70
  • Copie 2 de tank_test_fuel-height-finding.xlsm
    16.8 KB · Affichages: 71
  • Copie 2 de tank_test_fuel-height-finding.xlsm
    16.8 KB · Affichages: 57

mécano41

XLDnaute Accro
Re : Valeur cible automatisée en fonction de plusieurs cellules variables

Voici la version avec les itérations affichées. Comme cela passe par une fonction, on ne peut pas écrire directement dans une autre cellule alors je passe par une fonction matricielle et la formule doit couvrir deux lignes (ou deux colonnes en supprimant le WorksheetFunction.Transpose dans le code) et être validée par Ctrl+Maj+Entrée (si nécessaire, on peut éloigner la cellules "Itérations" mais il faut ajouter un paramètre à la fonction et l'écrire deux fois avec ce paramètre différent)

Cordialement
 

Pièces jointes

  • Copie 3 de tank_test_fuel-height-finding.xlsm
    18.5 KB · Affichages: 75

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 895
Membres
103 982
dernier inscrit
krakencolas