Macro Excel Spécifique

Résolu
Scarbiet94 - 25 mars 2013 à 21:03
 Scarbiet94 - 5 mai 2013 à 00:03
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.

A bientôt peut-être

3 réponses

Bonjour x2,

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
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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
Colonne_A   Colonne_B
400         24/03/2013 10:30
405         24/03/2013 10:40
415         24/03/2013 10:50
428         24/03/2013 11:00

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)
0
Bonjour et merci pour le code que j'ai adapté pour des nombres réels, après avoir potassé les notions de range, value2, Option Explicit et autres.
0
Rejoignez-nous