Automatiser calcul valeur cible dès modification plage de cellul [Fermé]

Signaler
-
Juliette.CL
Messages postés
9
Date d'inscription
dimanche 7 août 2016
Statut
Membre
Dernière intervention
24 mai 2017
-
Bonjour,

Je cherche à automatiser le calcul d'une valeur cible dès modification d'un ensemble de cellule. J'ai trouvé un "code" sur internet, PROBLEME: je souhaite l'appliquer sur UNE PLAGE de cellule (G21:G92):

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("C2").Address Or Target.Address = Range("C4").Address Or Target.Address = Range("G21:G92").Address Then
Range("F1").GoalSeek Goal:=0, ChangingCell:=Range("D10")
End If
End Sub

Pour info le code ci-dessus marche quand je change le cellules C2, C4, mais il ne marche pas quand je modifie une cellule dans la plage G21:G92
Je suis débutante en VBA, quelqu'un pourrait m'aider? Marci d'avance ! :)


2 réponses

Messages postés
9260
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 avril 2020
1 745
Et comme ça ?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Union(Range("C2"), Range("C4"), Range("G21:G92"))) Is Nothing Then
  Range("F1").GoalSeek Goal:=0, ChangingCell:=Range("D10") 
End If
End Sub

Cdlmnt
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 78405 internautes nous ont dit merci ce mois-ci

Juliette.CL
Messages postés
9
Date d'inscription
dimanche 7 août 2016
Statut
Membre
Dernière intervention
24 mai 2017

Sa marche !! Merci ! :)
Maintenant j'ai un autre problème (je suis désolée, mais j'ai du mal à comprendre la logique de VBA), j'espère que vous pourrez m'éclairer encore une fois:

Je cherche un code (ou une formule) qui me permette de trouver un nombre X, de telle sorte que, la formule contenant X est égale à un nombre le plus proche possible de Y%. Soit quelque chose comme sa:

W1=ARRONDI( MOYENNE((a+X),b,c,d,...)), sachant que
W1< Y%.

Par exemple: Soit Y%= 10%, je cherche X, afin qu'en appliquant la formule, je trouve un nombre W1 le plus proche possible de 10%. W1 = 9,8% ou W1= 9,9%. Mais W1 doit être différent de 10%.
La difficulté ici est que pour trouver le résultat le plus proche de 10%, il faut que je teste plusieurs valeur pour X. J'ai utilisé un énorme tableau contenant en colonne les valeurs de X (X=1,2,3,...200). J'aimerai ne plus avoir à tirer un tableau sur 1000 lignes pour trouver la solution.

Je vous serai très reconnaissante si vous pouviez encore faire un miracle ;)
Messages postés
9260
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
6 avril 2020
1 745
Bonjour

Essaies ceci
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Union(Range("C2"), Range("C4"), Range("G21:G92"))) Is Nothing Then
  Range("A26").Value = Time    ' j'ai mis n'importe quoi ici
End If
End Sub

Cdlmnt
Juliette.CL
Messages postés
9
Date d'inscription
dimanche 7 août 2016
Statut
Membre
Dernière intervention
24 mai 2017

Bonsoir ! tout d'abord merci pour votre réactivité ! (Jai enfin le mdp de retrouvé mon compte pour ce site )

Votre solution à l'air bien, mais elle ne marche pas sur mon fichier.
Je pense que je n'ai pas été clair dans mon précédent message:

En fait les cellules C2,C4, G21:G92 et D10 contiennent des variables qui permettent de calculer F1.

- en cas de modification de la valeur de 1 ou plusieurs cellules (C2, C4, ou dans la plage G21:G92): par exemple je modifie C4, G32 et G45; ou je modifie seulement C2,

- cela entraîne le calcul automatique de la valeur en D10, de telle sorte que F1=0

Je ne comprends rien au langage VBA donc je ne peux pas dire ce qui ne va pas dans votre solution désolée... :/