Macro Excel Spécifique [Résolu]

Scarbiet94 - 25 mars 2013 à 21:03 - Dernière réponse :  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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Scarbiet94 - 10 avril 2013 à 23:04
3
Merci
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

Merci Scarbiet94 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de Scarbiet94
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 25 mars 2013 à 22:59
0
Merci
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)
Commenter la réponse de cs_Jack
Scarbiet94 - 5 mai 2013 à 00:03
0
Merci
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.
Commenter la réponse de Scarbiet94

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.