Recherche d'objectif dans VBA

La recherche d'objectifs dans VBA est le processus par lequel nous pouvons cibler l'objectif que nous voulons atteindre. Il s'agit d'un processus comme celui qui montre tout ce que nous devons faire pour atteindre l'objectif fixé. Supposons qu'un train ait l'heure d'arrivée à 10 h tous les jours. Le train circule du lundi au vendredi entre A et B. Et considérant l'heure d'arrivée moyenne de ce train de A à B est exactement 10 heures sans aucun retard. Donc, si ce qui suit est l'heure d'arrivée de ce train 10h16, 10h01, 9h57, 10h04 pendant 4 jours consécutifs du lundi au jeudi. Et pour maintenir l'heure moyenne de 10 heures, qui est l'objectif fixé pour ce train, il doit arriver à 9h45, juste pour maintenir l'heure d'arrivée moyenne de 10 heures. Cela pourrait être encore plus cool si nous avons quelque chose à automatiser. Il y a VBA Goal Seek .

Syntaxe de la recherche d'objectifs:

Voici la syntaxe de VBA Goal Seek.

Où,

  • Plage: cellule de plage cible contenant la limite actuelle.
  • Objectif : la limite ou la cible que nous voulons atteindre.
  • Cellule changeante: cellule dans laquelle nous verrons la limite requise à atteindre.

Comment utiliser la recherche d'objectifs dans Excel VBA?

Nous allons apprendre à utiliser Goal Seek dans Excel en utilisant le code VBA.

Vous pouvez télécharger ce modèle Excel de recherche d'objectifs VBA ici - Modèle Excel de recherche d'objectifs VBA

VBA Goal Seek - Exemple # 1

La précision moyenne que les employés devraient maintenir à 95% par semaine. Ci-dessous, nous avons les données d'exactitude de l'employé du lundi au jeudi avec une précision moyenne de 92, 25% qui est mentionnée à la cellule C8 comme indiqué ci-dessous.

Maintenant, selon la syntaxe de la recherche d'objectifs, nous avons une cellule de plage qui a la valeur actuelle à alimenter et une valeur cible qui est la précision moyenne de 90% qui doit être atteinte par cet employé.

Dans cet exemple, où la précision du travail d'un employé est surveillée. Pour cela, suivez les étapes ci-dessous:

Étape 1 : Ouvrez le module à partir de l'onglet de menu Insertion, comme illustré ci-dessous.

Étape 2: Maintenant, écrivez la procédure Sub de VBA Goal Seek comme indiqué ci-dessous. Nous pouvons choisir n'importe quel nom pour le définir.

Code:

 Sub Goal_Seek () End Sub 

Étape 3: Selon la syntaxe, nous sélectionnerons la cellule Range qui contient la moyenne actuelle à alimenter. Ici, cette cellule est C8.

Code:

 Sub Goal_Seek () Range ("C8"). End Sub 

Étape 4: Sélectionnez maintenant la fonction Goal Seek et selon la syntaxe, sélectionnez la valeur cible que nous devons atteindre. Ici, cet objectif est précis à 90%.

Code:

 Sub Goal_Seek () Range ("C8"). GoalSeek Goal: = 90 End Sub 

Étape 5: Maintenant, enfin, sélectionnez la plage de cette cellule, où nous devons voir la précision requise à atteindre. Ici, cette cellule est C6 avec une référence de cellule à vendredi.

Code:

 Sub Goal_Seek () Range ("C8"). GoalSeek Goal: = 90, ChangingCell: = Range ("C6") End Sub 

Étape 6: Une fois terminé, nous allons compiler le code et l'exécuter. Nous verrons que la cellule C6 a une valeur de cellule changeante de 81. Cela signifie que si cet employé a réussi à atteindre même 81% de précision vendredi, il pourra facilement atteindre une précision de 90%.

VBA Goal Seek - Exemple # 2

Dans cet exemple, nous avons des données sur le délai d'exécution (TAT ou temps pour terminer l'activité) d'un employé d'une équipe qui effectue la même tâche tous les jours. 5 employés font la même activité du lundi au vendredi. Le temps cible est fixé pour terminer cette activité est de 50 minutes. Et nous devons trouver combien de temps chaque employé doit prendre pour maintenir le temps d'achèvement moyen à 50 minutes ou moins. Pour cela, suivez les étapes ci-dessous:

Étape 1: Dans le module, écrivez la sous-procédure pour la recherche d'objectifs VBA comme indiqué ci-dessous.

Code:

 Sub Goal_Seek2 () End Sub 

Étape 2: Définissez une variable par laquelle nous pouvons compter à partir de l'endroit où nous devons commencer la recherche d'objectifs aussi longue.

Code:

 Sub Goal_Seek2 () Dim A comme Sub long end 

Étape 3: Maintenant, définissez à nouveau 2 autres variables à l'aide de DIM avec le type de données Plage . Le premier sera utilisé pour suivre la moyenne finale actuelle et le second sera utilisé pour lier la cellule de référence où nous voulons la sortie.

Code:

 Sub Goal_Seek2 () Dim A As Long Dim FinalAvg As Range Dim Reference As Range End Sub 

Étape 4: Définissez une autre variable comme Entier pour définir la cible que nous voulons atteindre.

Code:

 Sub Goal_Seek2 () Dim A Comme Long Dim FinalAvg Comme Range Dim Reference Comme Range Dim Target Comme Entier End Sub 

Étape 5: Ici, notre objectif est de 50 minutes, alors définissez la variable cible avec cette valeur.

Code:

 Sub Goal_Seek2 () Dim A Comme Long Dim FinalAvg Comme Range Dim Reference Comme Range Dim Target Comme Entier Target = 50 End Sub 

Étape 6: Ouvrez une boucle For-Next comme indiqué ci-dessous.

Code:

 Sub Goal_Seek2 () Dim A Comme Long Dim FinalAvg Comme Range Dim Reference Comme Range Dim Target Comme Entier Target = 50 Pour Next A End Sub 

Étape 7: Sélectionnez maintenant la plage de ces cellules qui a les valeurs. Ici, ces lignes sont de 3 à 7 numéros.

Code:

 Sub Goal_Seek2 () Dim A Comme Long Dim FinalAvg Comme Range Dim Reference Comme Range Dim Target Comme Entier Target = 50 Pour A = 3 à 7 Next A End Sub 

Étape 8: Définissez la moyenne finale d'où nous voulons obtenir. Ici, cette cellule est à la ligne 9.

Code:

 Sub Goal_Seek2 () Dim A Comme Long Dim FinalAvg Comme Range Dim Reference Comme Range Dim Target Comme Entier Target = 50 Pour A = 3 à 7 Set FinalAvg = Cells (9, A) Next A End Sub 

Étape 9: De même, définissez la plage de cellules de référence, où nous voulons voir la valeur de recherche d'objectif pour atteindre la cible et cette ligne de cellule est 7.

Code:

 Sub Goal_Seek2 () Dim A Comme Long Dim FinalAvg Comme Range Dim Reference Comme Range Dim Target Comme Entier Target = 50 Pour A = 3 à 7 Set FinalAvg = Cells (9, A) Set Reference = Cells (7, A) Next A End Sous 

Étape 10: Enfin, appliquez la recherche d'objectifs VBA avec la syntaxe appropriée, comme indiqué ci-dessous.

Code:

 Sub Goal_Seek2 () Dim A Comme Long Dim FinalAvg Comme Range Dim Reference Comme Range Dim Target Comme Entier Target = 50 Pour A = 3 à 7 Set FinalAvg = Cells (9, A) Set Reference = Cells (7, A) FinalAvg.GoalSeek Target, Reference Next A End Sub 

Étape 11: compilez maintenant le code complet en appuyant sur la touche de fonction F8 et exécutez ensuite si aucune erreur n'est trouvée.

Nous verrons, à la ligne 7 avec l'aide de Goal Seek, nous obtiendrons du temps en minutes que chaque employé doit atteindre vendredi pour maintenir la moyenne de 50 minutes ou moins.

C'est ainsi que VBA Goal Seek fonctionne.

Avantages d'Excel VBA Goal Seek

  • VBA Goal Seek est très utile pour suivre les performances de différentes manières.
  • Cela peut également être utilisé dans de nombreux travaux statistiques où nous devons suivre et cibler la limite de données que nous voulons atteindre.
  • Cela indique la valeur exacte que la personne doit atteindre pour atteindre la cible.

Choses dont il faut se rappeler

  • Cela peut être utilisé dans Excel et VBA à la fois.
  • La cellule de résultat avec une fonction moyenne ou autre doit toujours avoir la formule.
  • Nous pouvons entrer la valeur cible dans Goal dans la syntaxe Goal Seek ou bien nous pouvons la définir plus tôt séparément également.
  • Nous pouvons modifier et mettre à jour la valeur cible selon nos besoins et exigences.
  • Cette tâche ne peut pas être effectuée en enregistrant l'option de macros disponible sous l'onglet développeur.
  • Une fois cela fait, n'oubliez pas d'enregistrer le fichier Excel au format d'activation de macro pour conserver le code écrit.

Article recommandé

Ceci est un guide pour VBA Goal Seek. Ici, nous discutons de l'utilisation de Goal Seek dans Excel VBA avec des exemples pratiques et un modèle Excel téléchargeable. Vous pouvez également consulter nos autres articles suggérés -

  1. Collection VBA (exemples)
  2. Instructions IF VBA | Modèles Excel
  3. Comment utiliser la fonction de tri Excel VBA?
  4. Boucle VBA While (Exemples avec modèle Excel)
  5. Fonction VBA Environ

Catégorie: