Signification programme

Fermé
LuKa1235 Messages postés 2 Date d'inscription vendredi 11 février 2022 Statut Membre Dernière intervention 14 février 2022 - Modifié le 11 févr. 2022 à 16:41
yg_be Messages postés 23425 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 janvier 2025 - 14 févr. 2022 à 11:34
Bonjour,

Je ne sais pas si je suis au bon endroit pour poser ma question mais je la tente quand même on ne sait jamais.
Quelqu'un pourrait-il m'expliquer comment fonctionne ce programme ? (c'est une macro figurant dans un fichier excel et j'aimerai bien la comprendre car je n'y connais rien en programmation). Voici les lignes de code :

Sub CalEntr()
' Macro calcul d'entraxe PRZ
ActiveSheet.Unprotect
Set obj1 = Application.Intersect(Range("DifLg"), Range("etage1"))
Set Mod1 = Application.Intersect(Range("Entraxe"), Range("etage1"))
  obj1.GoalSeek _
    Goal:=0, _
    ChangingCell:=Mod1
  obj2.GoalSeek _
    Goal:=0, _
    ChangingCell:=Mod2
ActiveSheet.Protect
End Sub


Pour ceux qui s'y connaissent un peu en mécanique, cette macro est censée me calculer automatiquement l'entraxe de 2 poulies, mais j'aimerai bien savoir comment la macro arrive à me sortir une valeur, quels "calculs" a t-elle fait ?

Merci d'avance !

4 réponses

f894009 Messages postés 17224 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 12 janvier 2025 1 712
11 févr. 2022 à 17:35
Bonjour,

Pour Obj1 calcul peut-etre, mais Obj2 ca m'etonnerai

Le code fait une selection de cellule en fonction des valeurs de Obj1 et Mod1

Si Obj1=0 selection cellule Mod1 et apparemment ca s'affiche kake part puisque vous voyez le resultat

Avec votre fichier ce serait plus facile a vous expliquer

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
13 févr. 2022 à 00:16
Bonsoir le fil, bonsoir le forum,

F à déjà tout dit. Je me permets juste le code sommairement commenté :
Sub CalEntr()
' Macro calcul d'entraxe PRZ
ActiveSheet.Unprotect 'déprotège l'onlget actif
'définit la variable obj1 (qui est une cellule ou une plage de cellules à l'intersection des plages nommées "DifLG" et "etage1"
Set obj1 = Application.Intersect(Range("DifLg"), Range("etage1"))
'définit la variable Mod1 (qui est une cellue ou une plage de cellules à l'intersection des plages nommées "Entraxe" et "etage1"
Set Mod1 = Application.Intersect(Range("Entraxe"), Range("etage1"))
'Calcul des valeurs nécessaires dans Mod1 pour atteindre un résultat spécifique (ici 0) dans Obj1,
obj1.GoalSeek _
    Goal:=0, _
    ChangingCell:=Mod1

'ici, ni obj2 ni Mod2 ont été définies. Soient elles le sont dans un autre code, soit il va y avoir un bug...
'Sinon même principe que pour obj1 et Mod1
obj2.GoalSeek _
    Goal:=0, _
    ChangingCell:=Mod2
ActiveSheet.Protect 'protège l'onglet
End Sub

0
f894009 Messages postés 17224 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 12 janvier 2025 1 712
Modifié le 13 févr. 2022 à 07:25
Bonjour,
Ca roule?
Merci, de faire ces commentaires car ai pas vraiment l'habitude d'utiliser ce type de code goalseek meme si je comprends l'usage
0
yg_be Messages postés 23425 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 janvier 2025 Ambassadeur 1 557
13 févr. 2022 à 13:27
bonjour,
cette macro utilise la technique "GoalSeek", décrite ici: https://www.commentcamarche.net/faq/8675-utiliser-valeur-cible-sous-excel
0
LuKa1235 Messages postés 2 Date d'inscription vendredi 11 février 2022 Statut Membre Dernière intervention 14 février 2022
14 févr. 2022 à 11:14
Bonjour, merci beaucoup pour vos réponses, j'avoue que ce n'est peut-être pas trop clair pour tout le monde, donc à la demande de f, je vous transmet le lien du fichier excel en question (ne vous inquiétez pas aucune info figurant dans ce fichier est confidentielle). Lien : https://www.cjoint.com/c/LBokjGkRJdv
La ligne en question s'appelle "Entraxe des poulies (avec courroie)", pour générer le résultat qui figurera dans la case C35, il vous faut appuyer sur le bouton "calculer entraxe poulies (transmission à courroies)" juste à droite de la case. Voilà j'espère que ça vous aidera un peu plus.

Merci encore !
0
yg_be Messages postés 23425 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 janvier 2025 1 557
14 févr. 2022 à 11:30
C'est pourtant simple:
Imaginons que le but soit de trouver une valeur en C35 qui va produire un résultat = 0 en C29.
Le code VBA fait appel à GoalSeek.
Et Excel va automatiquement chercher quelle valeur en C35 fournit 0 en C29.
As-tu compris?
0
yg_be Messages postés 23425 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 janvier 2025 1 557 > yg_be Messages postés 23425 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 janvier 2025
14 févr. 2022 à 11:34
Tu peux faire exactement la même opération via les menus de Excel.
Fais une recherche "excel valeur cible".
0