GoalSeek et VBA

Bonjour à tous,

Je pense que ma question est un peu con mais j'y suis depuis un bon moment et malgré les sujets sur le forum je ne trouve pas la solution.

Je veux simplement automatiser un GoalSeek en créant une function VBA.

La function prend comme argument la ligne à traiter.

La valeur à changer est toujours en colonne F.

La valeur cible (à mettre à 0) est toujours en colonne R.

Voilà le code de la fonction:

Function Trp(ligne)

Range("R" & ligne).GoalSeek goal:=0, Changingcell:=Range("F" & ligne)

End Function

En case G10 je tape donc =Trp(10).

Rien ne se passe et F10, R10 reste à sa valeur..

Avez vous une idée pour aider un pauvre travailleur de 1er Mai ?

Merci d'avance à tous,

Eric

Bonjour,

Une fonction ne peut renvoyer un résultat que dans la cellule où elle est entrée....

Elle ne peut pas modifier une autre cellule....

Il faut donc passer par une macro...

Bonne journée

Bonjour et merci pour la réponse,

J'ai essayer cela, mais sans succès ... Quelques pistes pour moi ?

Function Trp(ligne)
Call goal(ligne)
End Function

Sub goal(ligne)
Range("M" & ligne).GoalSeek goal:=0, Changingcell:=Range("F" & ligne)
End Sub

Re-,

Pourquoi pas un bouton, avec un inputbox qui te demande la ligne à traiter, puis qui déroule ton code?

Ou une procédure évènementielle, sytle "Worksheet_Change", où tu mettrais dans une cellule le numéro de la ligne à traiter?

2 pistes, c'est bon pour un 1er mai?

C'est une idée mais je pense avoir beaucoup de cas à traiter donc je voudrais éviter de retaper à chaque fois l'ensemble des lignes concernés.

Voilà pourquoi je souhaitais utiliser une fonction avec la ligne comme argument.

Re-,

Tu fais un code qui balaie les lignes à traiter, en incrémentant avec les numéros de ligne....

Il suffit que tu mettes une croix dans la cellule A&ligne, par exemple, puis tu lances ton code...

Si A1="x" then code....

Par exemple....

Bon, finalement ça m'oblige à cliquer sur un bouton à chaque changement, mais ça fait le boulot !

Sub goal()

For i = 1 To 100

If Cells(i, 7) = "x" Then
Range("M" & i).GoalSeek goal:=0, Changingcell:=Range("F" & i)
End If

Next i
End Sub

Bonne fin de journée et merci pour tout !

EricDev a écrit :

Bon, finalement ça m'oblige à cliquer sur un bouton à chaque changement....

C'est vrai que pour un 1er mai, c'est pas facile....

Bonne journée, et peut-être, bon W-E si tu as de la chance....

Rechercher des sujets similaires à "goalseek vba"