Microsoft 365 Valeur cible pour trouver un poucentage

saggigo

XLDnaute Occasionnel
Bonjour à tous,
j'espère que tout le monde va bien surtout celui qui va m'aider 😇 ou qui va y contribuer :)
Voila j'ai un tableau ou il m'arrive des fois de passer des heures a utiliser la fonction valeur cible pour ajuster les montant.

Donc, mon tableau est constitué de 03 colonnes, "a", "d" et "i",
Dans "a" j'ai la marge a ajuster
Dans "d" la valeur à changer
Dans "i" la valeur à atteindre.
(bien sur il y a un excel en piece jointe :p)

Pourriez-vous s'il vous plaider avec une macro qui des que je clique sur un bouton, la colonnes A et B s'ajuste pour que j'atteigne le montant en colonne "i"?

Bien sur la boucle s'arrêtera si toute la ligne est vide (fin du tableau) et pour les cellules vide en "i" ne rien faire.

Je vous remercie d'avance en espérant que cela sera utile à d'autre.
 

Pièces jointes

  • valeur cible.xlsx
    12.9 KB · Affichages: 6
Dernière édition:

Franc58

XLDnaute Occasionnel
Bonjour à tous,
j'espère que tout le monde va bien surtout celui qui va m'aider 😇 ou qui va y contribuer :)
Voila j'ai un tableau ou il m'arrive des fois de passer des heures a utiliser la fonction valeur cible pour ajuster les montant.

Donc, mon tableau est constitué de 03 colonnes, A, B et C,
Dans "a" j'ai la marge a ajuster
Dans "d" la valeur à changer
Dans "i" la valeur à atteindre.
(bien sur il y a un excel en piece jointe :p)

Pourriez-vous s'il vous plaider avec une macro qui des que je clique sur un bouton, la colonnes A et B s'ajuste pour que j'atteigne le montant en colonne "i"?

Bien sur la boucle s'arrêtera si toute la ligne est vide (fin du tableau) et pour les cellules vide en "i" ne rien faire.

Je vous remercie d'avance en espérant que cela sera utile à d'autre.
Salut, je ne suis pas sûr d'avoir bien compris. Tu veux que les colonnes A et B s'ajustent mais ta colonne B ne contient que le mot "INFOS". D'après moi, tu veux écrire en colonne A le % par lequel multiplier la valeur en colonne D pour obtenir la valeur en colonne I ? Si c'est ça, on aura un problème pour obtenir exactement le valeur en I car les valeurs sont entières alors que en D elles sont décimales.
 

saggigo

XLDnaute Occasionnel
Salut, je ne suis pas sûr d'avoir bien compris. Tu veux que les colonnes A et B s'ajustent mais ta colonne B ne contient que le mot "INFOS". D'après moi, tu veux écrire en colonne A le % par lequel multiplier la valeur en colonne D pour obtenir la valeur en colonne I ? Si c'est ça, on aura un problème pour obtenir exactement le valeur en I car les valeurs sont entières alors que en D elles sont décimales.
Vraiment désolé Franc, petit erreur dans mon texte (que je viens de corrigé). les colonne sont : a; i; et d
 

saggigo

XLDnaute Occasionnel
Salut Franc,
je te remercie pour la feuille de test, cependant ce n'est pas exactement ce que je cherche. j'ai trouvé une macro qui parle de la "valeur cible" d'excel mais je ne sais pas comment l'adapter:
VB:
Private Sub ValeurCible()
    Dim c As Range
    For Each c In [A2].Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1)
        If c.Offset(, 10) <> "" Then c.Offset(, 9).GoalSeek Goal:=c.Offset(, 10), ChangingCell:=c.Offset(, 1)
    Next c
End Sub
Le but de la valeur cible dans mon cas est de calculer la marge selon la valeur en colonne "i". je ne m'y connais pas trop en VB mais je pense que la fonction qui traduit "valeur cible" est : GoalSeek Goal

Peux-tu s'il te plait adapter ta macro en utilisant cette fonction?

Un grand merci par avance
 

saggigo

XLDnaute Occasionnel
c'est bien ce que je t'ai proposé dans la macro. pourcentage à appliquer au montant en cellule D pour obtenir la valeur cible en cellule I. Ou alors je ne sais plus ce qu'est une valeur cible ?!
Lorsque j'utilise la fonction "valeur cible" je n'ai pas le même résultat que dans la macro. j'ai mis 02 screenshot pour te montrer et j'ai corrigé mon tableau qui avait une petit erreur ou la valeur à modifier doit être une formule, donc j'ai rajouter une colonne pour "prix d'achat", et j'ai décalé toutes les colonnes dans la macro.

Comme tu peux le voir dans l'image "valeur cible 1", on choisi E comme valeur a modifier, et à la fin elle devra être égale à la valeur en J en modifiant la marge en B.
Donc il y a une itération de la marge (cellule B*) jusqu'à ce que E soit égale à J
et le résultat est dans l'image "valeur cible 2".
 

Pièces jointes

  • valeur cible.xlsm
    23.3 KB · Affichages: 2
  • Valeur Cible 2.png
    Valeur Cible 2.png
    43.6 KB · Affichages: 7
  • Valeur Cible 1.png
    Valeur Cible 1.png
    75.6 KB · Affichages: 8

saggigo

XLDnaute Occasionnel
Ah ok, comme ceci alors, j'obtiens le même résultat que ta capture d'écran
Tu ne sais pas a quel point tu me sauve Franc 🥹..... Vraiment un super grand merci à toi :D:D:D
Sur la feuille test c'est exactement ce que je cherche, mais quand j'ai importer le code dans ma feuille et , il me sort un message: La méthode GoalSeek dans la classe range a echoué.
Peux-tu m'aider s'il te plait sur ça?
Merci merci merci.
 
Dernière édition:

Franc58

XLDnaute Occasionnel
Chez moi ça fonctionne sans problème, une recherche sur le net donne ceci:
L’erreur “La méthode GoalSeek dans la classe range a échoué” peut se produire pour plusieurs raisons. Voici quelques-unes des causes possibles :

  1. Cellule protégée ou en lecture seule : Si la cellule que vous essayez de modifier est protégée ou en lecture seule, Excel ne pourra pas modifier sa valeur et vous obtiendrez cette erreur.
  2. Formule dans la cellule : Si la cellule que vous essayez de modifier contient une formule, Excel ne pourra pas modifier sa valeur et vous obtiendrez cette erreur.
  3. Pas de solution : La fonction GoalSeek peut échouer si elle ne trouve pas de solution. Cela peut se produire si la valeur cible est en dehors de la plage de valeurs possibles pour la cellule que vous essayez de modifier.
  4. Référence circulaire : Si votre feuille de calcul contient une référence circulaire (c’est-à-dire une formule qui fait référence à sa propre cellule, directement ou indirectement), Excel peut ne pas être en mesure de résoudre l’équation et vous obtiendrez cette erreur.
 

saggigo

XLDnaute Occasionnel
Sinon, on peut se passer de goalseek et de macro. En B2 tu mets cette formule =((J2/A2)-1) que tu tires vers le bas. Assure toi que ta colonne B est au format pourcentage et le tour est joué.
Salut Franc, Je te remercie pour tout, j'ai fait une petit recherche sur ChatGPT et il m'a proposé le code:
VB:
On Error Resume Next
Range("Y" & i).GoalSeek Goal:=Range("AD" & i).Value, ChangingCell:=Range("V" & i)
On Error GoTo 0 ' Réinitialise la gestion des erreurs à son état normal
Je pensais que j'aurais une formule qui marche a moitié mais finalement elle a très bien fonctionner :).... je suis super content et encore MERCI t'es un chef.

Probleme Resolu :)
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin