Je cherche à créer une macro qui me permette de te trouver le résultat d'une formule de tassement qui comporte 5 termes. Ces termes sont fonction de la profondeur qui dépend de la dimension d'une semelle.
Pour trouver la valeur de chacun des termes, il faut lire sur une feuille de calcul (ou entrer dans une boite de saisie) deux données : la profondeur et un module correspondant à cette profondeur.
Le but est de calculer rapidement les tassements en faisant varier la largeur de la semelle.
La où je sèche , c’est comment faire pour lire ces couples de valeurs quelques soit les cas ? Par exemple :
- Pas de valeur dans le terme 2 et prendre la valeur la plus proche, termes 1 et 3 (le manque de valeur pour les termes 4 et 5 se gère dans la formule finale)
- Pondérer la valeur dans un intervalle en fonction de sa position. Exemple, le terme deux doit lire les éventuelles valeurs entre 1 et 3 m, mais les seules valeurs disponibles sont à 1,2 m et à 2,0 m. Autre exemple, dans l'intervalle 3 (de 2 à 5 m), il n'y a qu'une seule valeur à 4 m, mais il existe une valeur à 1,8 et à 5,2 : comment les intégrer.
Voilà brièvement mon problème.
Si cela intéresse quelqu'un, je peux fournir des exemples graphiques des données à saisir et fournir plus d'explication.
Merci d'avoir répondu à ma demande. Je suis nouveau sur le forum (j'ai oublié le premier bonjour). J'ai pris ton code en début de semaine, mais je n'arrive pas à l'appliquer. Je bute sur la notion "range", si tu peux m'aider...
Je crois que pour un débutant, j'ai surestimé la macro que je souhaite faire et je l'ai mal expliquée. Il faudrait que je redonne des lignes d'explication si ça t'intéresse (ou quelqu'un d'autre).
A+ j'espère
PS je poste un problème beaucoup plus simple sur l'interdiction d'insérer ou de supprimer des lignes
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 mars 2013 à 22:59
Pas bonjour non plus.
Si tu dois simplement extrapoler une valeur entre deux bornes en considérant qu'il s'agit d'une droite entre ces deux bornes, il te suffit de faire une règle de trois :
J'avais créé cette fonction pour calculer une date, mais tu sauras la simplifier.
Dans mon cas, les valeurs à calculer se trouvent dans les cellules à droite de mes bornes, exemple : Je cherche à quelle date (colonne B) extrapolée lorsque la valeur de la colonne A vaut 408
En supposant que :
Range1 soit la valeur de la borne 1 (colonne A, 2ème ligne)
Range2 soit la valeur de la borne 2 (colonne A, 3ème ligne)
TargetValue soit la valeur cible (408)
Private Function RangeExtrapolation(ByRef Range1 As Range, _
ByRef Range2 As Range, _
ByRef TargetValue As Single) As String
Dim gGain As Double
Dim gBias As Double
RangeExtrapolation = "" ' par défaut
' Calcule la pente entre ces deux points
gGain = (Range1.Value2 - Range2.Value2) / _
(Range1.Offset(0, 1).Value - Range2.Offset(0, 1).Value)
' Calcule le décalage
gBias = Range1.Value2 - (gGain * Range1.Offset(0, 1).Value)
' Applique la formule pour retrouver la date équivalente à la valeur cible
RangeExtrapolation = CDate((gGain * TargetValue) + gBias)
End Function
Tu n'as plus qu'à faire une boucle pour cibler quelles cellules utiliser (boucle avec test > ou <) et les fournir à la fonction.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)