Problème pour traduire une fonction Excel en VBA [Résolu]

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Dans ma feuille j'ai rédigé cette fonction (intrication de fonctions) qui marche :

=MIN(DECALER($B$5;1;2;EQUIV($C$2;$B$6:$B$38;0)))

J'ai tenté de la traduire pour une macro :

Sub zaza()

Dim myRange As Range, pos, b
Dim mini As Double


Set myRange = Worksheets("Tableaux").Range("B6:B38")
pos = Application.WorksheetFunction.Match([C2], myRange, 0) 'OK
b = Application.WorksheetFunction.Offset([B5], 1, 2, pos) 'ça coince

mini = Application.WorksheetFunction.Min(b)

End Sub

Comment s'y prendre ?
 

Magic_Doctor

XLDnaute Barbatruc
Bonjour Staple1600,

En effet, j'aurais pu joindre un fichier, mais ça ne me semblait pas indispensable vue la question.

Je joins donc.

J'explique :

la valeur minimale de l'axe des ordonnées de mon graphique est celle trouvée dans les 2 colonnes variables du tableau ("N tatonnement" & "N Excel").
Dans la cellule "J24" j'obtiens cette valeur.

Dans le module de feuille, cette valeur est récupérée pour ajuster l'axe des ordonnées.
Plutôt que d'écrire la fonction qui me donne cette valeur sur la feuille, je voulais tout simplement l'écrire directement au sein du module de feuille.
 

Pièces jointes

  • Courbes2.xlsm
    24.7 KB · Affichages: 38

Staple1600

XLDnaute Barbatruc
Re

Je me complique pas la vie ;)
VB:
Sub zaza()
mini = [=MIN(OFFSET($B$5,1,2,MATCH($C$2,$B$6:$B$38,0)))]
MsgBox mini
End Sub
donc en corrigeant (au niveau de la référence de cellule) ta macro initiale
VB:
Sub romi()
x = [=MIN(OFFSET($B$5,1,2,MATCH($C$2,$B$6:$B$38,0)))]: [J24] = x * 1
End Sub
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour,
Dans ma feuille j'ai rédigé cette fonction (intrication de fonctions) qui marche :
=MIN(DECALER($B$5;1;2;EQUIV($C$2;$B$6:$B$38;0)))
J'ai tenté de la traduire pour une macro
d'abord traduire dans la langue US
puis ensuite faire un [evaluate ]comme proposé par Stapple1600
upload_2017-12-10_12-0-36.png

VB:
Function LireF(target, Optional info As Integer)
Select Case info
Case 1
LireF = "'" & target.Formula
Case 2
LireF = "'" & target.FormulaR1C1
Case 3
LireF = "'" & target.FormulaR1C1Local
Case Else
LireF = "'" & target.FormulaLocal
End Select
End Function
 

Magic_Doctor

XLDnaute Barbatruc
Effectivement, j'avais complètement oublié ce fil.
Il faut dire, mon vieux, que je ne fais pas ça toute la journée. Ça me prend par périodes, en fonction de mes desiderata... Un peu comme la pêche à la mouche pour d'autres...
Pero, caramba, vos ¡que memoria!
 

Magic_Doctor

XLDnaute Barbatruc
Re,

À moins qu'un problème soit très simple, toute réponse mérite réflexion (donc un peu de temps), et, n'oublie pas que ne suis pas à Perpignan (centre du monde) mais à Montevideo (décalage...).
Bref, pour bien expliquer le dernier problème, j'ai voulu réduire mon document, mais trop long. Donc je mets tout.
J'ai essayé tes 2 solutions. Chez moi, seule la 1ère (Evaluate) fonctionne (aller dans le module de feuille pour tester. J'y ai mis les 2 solutions).
Pas d'affolement, les seuls tableaux qui nous intéressent sont les 4 derniers, ceux avec chacun une courbe.
On peut choisir la concentration à partir de plusieurs cellules : AD9, AN9, AX9 & BI9 (toutes avec listes déroulantes). Chaque fois que l'on choisit une concentration dans une de ces cellules, les autres prennent la même valeur.
La 1ère cellule (AD9) pourrait s'appeler "cellule mère".

Tout est expliqué, il suffit maintenant de choisir une concentration dans l'une quelconque de ces 4 cellules.
Si je choisis un pourcentage à partir de la cellule mère (AD9), tout marche très bien.
En revanche, si je choisis un pourcentage dans l'une des 3 autres cellules, le graphique correspondant à Calcul de N par la fonction "DROITEREG" ne se met pas à jour ; pour ce faire, il faut cliquer, dans la liste déroulante, une deuxième fois sur le même item. Pas pratique...

Ma question est : comment résoudre ce dernier problème ?
 

Pièces jointes

  • Courbes3.xlsm
    98 KB · Affichages: 30

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 097
Membres
103 116
dernier inscrit
kutobi87