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

Merci Dranreb,

J'ai rajouté le code que vous m'avez communiquez, il n'y a plus d'erreur dans la macro ... Merci 🙂
En revanche rien ne se passe si ce n'est le message d'erreur : "Valeur non atteinte"

Savez vous d'où cela peut provenir

Merci encore pour votre aide
Philippe
 

Pièces jointes

Re : macro valeur cible

J'ai stoppé la macro au message et mis des espions:
RgCbl.Formula: "=3*G11"
RgVar.Address: "$T$11"
Dans la mesure où la formule de la cellule cible ne dépend pas de la cellule T11, il ne peut trouver pour celle ci de valeur telle qu'elle atteigne VCible
Ça va mieux avec :
VB:
For Each RgVar In ActiveSheet.Range("G11:G" & ActiveSheet.[F65536].End(xlUp).Row)
 
Dernière édition:
Re : macro valeur cible

Dranreb,
Je souhaitais ajouter, une condition
Jusqu'à présent nous avions 3 paramètres :
- La colonne F : "cellule à définir"
- La colonne G : "cellule à modifier"
- La colonne H : "cellule à atteindre"

=> je souhaitais ajouter une colonne I dans lequel je souhaitais mettre la valeur 1 ; si il y a la valeur 1 alors Excel calcul la valeur à atteindre sinon il passe à la ligne d'après

Est ce que cela est envisageable ?

Encore merci
Philippe
 
Re : macro valeur cible

Oui, ça parait envisageable.
Il y a déjà un test qui contrôle s'il y a bien une formule dans la cellule cible, il n'y a qu'à y ajouter une condition supplémentaire :
VB:
If RgCbl.HasFormula And Intersect(.Columns("I"), RgVar.EntireRow).Value = 1 Then
Cordialement.
 
Re : macro valeur cible

Dranreb,

Je viens d'essayer à l'instant la modification que vous m'avez communiquée
En revanche j'ai un msg d'erreur lorsque le débogeur arrive à .Columns("FF") : "Référence incorrecte ou non qualifiée"


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

Sub BtCorrig_Click_condition()
Dim VCible As Double, RgVar As Range, RgCbl As Range
For Each RgVar In ActiveSheet.Range("FE27:FE28,FE32:FE34,FE38,FE42,FE46,FE50,FE55:FE56,FE59,FE61")

Set RgCbl = Intersect(ActiveSheet.Columns("CK"), RgVar.EntireRow)
If RgCbl.HasFormula And Intersect(.Columns("FF"), RgVar.EntireRow).Value = 1 Then
VCible = Intersect(ActiveSheet.Columns("FC"), 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


Merci d'avance
Philippe
 
Re : macro valeur cible

Bonjour.
Cette syntaxe, avec un point sans rien devant, ne peut être utilisée que dans un bloc With pour désigner l'objet ou la variable de type défini par l'utilisateur représenté par l'expression qui y est spécifiée.
Cordialement
 
Re : macro valeur cible

Merci Dranreb,

En d'autre terme il faudrait que j'insère un with quelque part de manière à ce que la fonction soit reconnue ? A quel niveau dois-je insérer cela dans le code ?
Désolé de vous solliciter mais pouvez vous svp m'aider car mes connaissances en VBA sont vraiment limitées 🙁
Cordialement
Philippe
 
Re : macro valeur cible

Vous pourriez mettre With ActiveSheet tout devant et ne plus les préciser jusqu'au End With
Mais il faut quand même toujours au moins laisser un point pour qu'il n'assume pas autre chose que le ActiveSheet spécifié au With
 
Re : macro valeur cible

Merci beaucoup Dranreb,
Je suis étonné car certaines personnes dont vous faites parties ont un excellent niveau sur VBA.
D'où cela vient-il:
- Une passion
- Formation en informatique
- Ingénieur

J'ai essayé de m'y mettre mais c'est loin d'être évident
A bientôt
Philippe
 
- 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