Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eric42600

XLDnaute Nouveau
Bonjour,
Ayant quelques notions d'excel mais aucune niveau macro ni langage VBA, je souhaiterai savoir comment automatiser un calcul de valeur cible sur une colonne.

Cellules à définir : colonne AF
Cellules à modifier : colonne T
Valeurs à atteindre : colonne AQ

Les valeurs à atteindre sont elles même fonction du résultat de la colonne AF par le biais de plusieurs formules ... très simple.

Peux on résoudre plusieurs cellules en même temps ? Pour l'instant je calcule les valeurs cibles une par une et d'affiner le résultat après utilisation de la valeur cible.

Quelqu'un aurait'il une astuce ?

Merci d'avance
 
Re : macro valeur cible

Bonsoir,
avec votre fichier joint en feuille 1 (faite simplement et noter les resultat attendu)

dans la feuille 2 je peux faire la même choses avec macro (mais il me faut l'exemple en feuille 1)

au plaisir de vous aider

laurent
 
Re : macro valeur cible

Bonjour,

Ci-joint une feuille excel avec un exemple de données.

Les cellules à définir sont dans la colonne AF
Les cellules à modifier dans le colonne T
Les valeurs à atteindre dans la colonne AQ

Sur le même feuille, plusieurs fossés peuvent être calculés mais séparés par une ligne vierge.

Merci pour l'aide.
 

Pièces jointes

Re : macro valeur cible

Bonjour.
Votre classeur équipé de la macro demandée.
Cordialement.

Remarque: J'ai vu des formules où vous compariez des expressions booéennes à VRAI.
Ça c'est idiot car:
(VRAI = VRAI) = VRAI
(FAUX = VRAI) = FAUX, donc
(ExprB = VRAI) = ExprB si ExprB est une expression booleenne
Conclusion: jamais besoin de comparer à VRAI un résultat de fonction OU ou ET
À+
 

Pièces jointes

Dernière édition:
Re : macro valeur cible

J'ai essayé de rajouter d'autres fossés mais séparés par des lignes vierges la fonction bug.
comme ceci peut être :
VB:
Private Sub BtCorrig_Click()
Dim VCible As Double, RgVar As Range, RgCbl As Range
For Each RgVar In Me.Range("T21:T" & Me.[T65536].End(xlUp).Row)
   Set RgCbl = Intersect(Me.Columns("AF"), RgVar.EntireRow)
   If RgCbl.HasFormula Then
      VCible = Intersect(Me.Columns("AQ"), RgVar.EntireRow).Value
      If RgCbl.GoalSeek(Goal:=VCible, ChangingCell:=RgVar) Then
         ApprocherMieux RgCbl, VCible, RgVar, 0.001
         ApprocherMieux RgCbl, VCible, RgVar, -0.00001
         ApprocherMieux RgCbl, VCible, RgVar, 0.0000001
         ApprocherMieux RgCbl, VCible, RgVar, -0.000000001
      Else
         MsgBox "Valeur non atteinte"
         End If
      End If
   Next RgVar
End Sub
Une autre question, Comment faire pour insérer la macro dans des feuilles excel existantes ?
Si elle peut être utilisée dans plusieurs feuilles on pourrait avoir intérêt à n'écrire la procédure qu'une fois dans un module standard et l'appeler dans les procédures de boutons des modules de feuilles. Où même, pourquoi pas, préférer ici un bouton de formulaire et lui affecter la macro.
 
Re : macro valeur cible

Bonjour le forum,

Je souhaitais insérer la macro dans un module.

J'ai donc modifié le private sub par sub

Sub valeurcible()
Dim VCible As Double, RgVar As Range, RgCbl As Range
For Each RgVar In Me.Range("T11:T" & Me.[T65536].End(xlUp).Row)
Set RgCbl = Intersect(Me.Columns("F"), RgVar.EntireRow)
If RgCbl.HasFormula Then
VCible = Intersect(Me.Columns("H"), RgVar.EntireRow).Value
If RgCbl.GoalSeek(Goal:=VCible, ChangingCell:=RgVar) Then
ApprocherMieux RgCbl, VCible, RgVar, 0.001
ApprocherMieux RgCbl, VCible, RgVar, -0.00001
ApprocherMieux RgCbl, VCible, RgVar, 0.0000001
ApprocherMieux RgCbl, VCible, RgVar, -0.000000001
Else
MsgBox "Valeur non atteinte"
End If
End If
Next RgVar
End Sub

Mais lorsque je lance la macro j'ai un message d'erreur
"Utilisation incorrecte du mot Me"

Auriez vous des idées ?

Merci beaucoup
Philippe
 
Re : macro valeur cible

Bonjour.
Le mot clé "Me" désigne l'objet attaché au module de classe. Il n'est donc pas utilisable dans un module ordinaire, qui n'est rattaché à aucun objet. Je suppose que ActiveSheet devrait convenir ici à la place de Me.
Cordialement.
 
Re : macro valeur cible

salut

Si... tu veux préciser la feuille de résultats, essaie
Code:
Sub valeurcible()
  Dim VCible As Double, RgVar As Range, RgCbl As Range
  With Sheets("...") '....... de façon générale : nom de la feuille cible
    For Each RgVar In .Range("T11:T" & .[T65536].End(xlUp).Row)
      Set RgCbl = Intersect(.Columns("F"), RgVar.EntireRow)
      If RgCbl.HasFormula Then
        VCible = Intersect(.Columns("H"), RgVar.EntireRow).Value
        If RgCbl.GoalSeek(Goal:=VCible, ChangingCell:=RgVar) Then
          ApprocherMieux RgCbl, VCible, RgVar, 0.001
          ApprocherMieux RgCbl, VCible, RgVar, -0.00001
          ApprocherMieux RgCbl, VCible, RgVar, 0.0000001
          ApprocherMieux RgCbl, VCible, RgVar, -0.000000001
        Else
          MsgBox "Valeur non atteinte"
        End If
      End If
    Next RgVar
  End With
End Sub
 
Re : macro valeur cible

Merci Dranreb, Si ... pour vos messages,

J'ai fait la modification et dans chacune de vos recommandations lorsque je lance la macro,
J'ai en message d'erreur de compilation: "Sub ou fonction non définie" lorsque la macro arrive à la ligne ApprocherMieux
Je joins un petit fichier

Merci encore à vous
Philippe
 

Pièces jointes

Re : macro valeur cible

C'est que vous avez oublié de reproduire cette petite procédure.
La voici:
VB:
Sub ApprocherMieux(RgCible As Range, VCible As Double, RgModif As Range, Ajout As Double)
Dim X1 As Double, Y1 As Double, X2 As Double, Y2 As Double
X1 = RgModif.Value: On Error GoTo Resto: Y1 = RgCible.Value
X2 = X1 + Ajout: RgModif.Value = X2: Y2 = RgCible.Value
If Y2 <> Y1 Then
   RgModif.Value = X1 + (X2 - X1) * (VCible - Y1) / (Y2 - Y1)
   If Abs(RgCible.Value - VCible) < Abs(Y1 - VCible) Then Exit Sub
   End If
Resto: RgModif.Value = X1
End Sub
Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
567
Réponses
19
Affichages
3 K
Réponses
3
Affichages
532
Retour