XL 2019 Dupliquer les résultats d'une formule en faisant changer ses paramètres

gthe

XLDnaute Junior
Bonjour tout le monde,

Ma demande concerne le fichier en PJ. Je vais essayer de formuler des explications claires (mais le fichier risque d'être plus pertinent).

_______

Le programme initial concerne le tableau A1:L69 (la colonne A contient des données importantes à ne pas supprimer):

Pour information, seules les cases jaunes foncé (lignes 2 à 12 et 21 et 23) sont vouées à être modifiées par l'utilisateur. Toutes les autres cases sont calculées automatiquement.

Le programme ne peut fonctionner qu'à la condition où les lignes 2 à 12 et 21 sont correctement renseignées. La ligne 23 doit être également remplie si la ligne 21 contient l'option "probabilité personnelle".
_______

Ma question est simple :

La ligne 23 peut contenir (pour les colonnes C à L) des nombres compris entre 0 et 100%.

Les résultats intéressants que je souhaite lire sont en ligne 36.

Je souhaite faire varier les résultats de la ligne 23 de 0 à 100 % (pas de 1 %) et afficher tous les résultats de la ligne 36 (espérance mathématique) dans un tableau dédié (A71:L174).


Comment afficher ces résultats en C74:L174 sans perturber le fonctionnement du tableau A1:L69 ? Ces résultats doivent varier avec ce qui est renseigné dans le tableau C2:L11 (la ligne 12 n'ayant pas d'influence ici). Ces résultats correspondent à la sélection "probabilité personnelle" dans la ligne 21.

Pour clarifier mes propos je souhaite simplement éviter de répéter manuellement la manipulation suivante :

1.0) M'être assuré que "probabilité personnelle" est saisi en ligne 23 ;

1.1) "Remplir la valeur "0%" pour les valeurs C23 à L23 ,

1.2) copier en C74:L74 les résultats figurés en C36:L36 ;

2.1) Remplir la valeur "1%" pour les valeurs C23 à L23

2.2) copier en C75:L75 les résultats figurés en C36:L36 ;

3.1) ... 3.2) ...

...

101.1) Remplir la valeur "100%" pour les valeurs C23 à L23 ;

101.2) copier en C174:L174 les résultats figurés en C36:L36

En vous remerciant !
 

Pièces jointes

  • EXTRACT PS.xlsm
    491 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Gthe,
Si j'ai bien tout compris, un essai en PJ avec :
VB:
Sub Calcule()
Dim L%, n%, i%
Application.ScreenUpdating = False
L = 74
For n = 0 To 100
    For i = 3 To 13 ' colonne C à L
        Cells(23, i) = n / 100
    Next i
    For i = 3 To 13
        Cells(L, i) = Cells(36, i)
    Next i
    L = L + 1
Next n
[C23:L23].ClearContents
End Sub

Qu'on peut simplifier par le code ci dessous si les calculs par colonnes sont indépendant. Mais dans le doute j'ai préféré mettre la première version.
Code:
Sub Calcule()
Dim L%, n%, i%
Application.ScreenUpdating = False
L = 74
For n = 0 To 100
    For i = 3 To 13 ' colonne C à L
        Cells(23, i) = n / 100
        Cells(L, i) = Cells(36, i)
    Next i
    L = L + 1
Next n
[C23:L23].ClearContents
End Sub
 

Pièces jointes

  • EXTRACT PS.xlsm
    499.6 KB · Affichages: 4

gthe

XLDnaute Junior
Salut Sylvanu !
Tout d'abord, merci beaucoup, ça répond exactement à ma demande :) Chouette programme !


Aussi, vous avez bien fait de me fournir les 2 codes car même si les colonnes semblent contenir les mêmes formules en apparence... il y subsiste une subtilité avec la première colonne de données.

Du coup, j'ai 3 questions complémentaires, mais elles sont de l'ordre du détail et de l'utilitaire :

1) Quelles manipulations dois-je effectuer pour transposer la macro sur mon fichier original ? (je sais comment créer une macro, mais c'est plutôt son affectation au commandbutton) ?

2) le "1" situé à côté du commandbutton a t-il une importance ? (il faudrait que je prenne soin de ne pas l'effacer accidentellement ?)

3) que faudrait-il que je modifie dans la macro pour que ça me calcule automatiquement d'autres paramètres ? (en gros l'idée : les paramètres jouant le rôle de la ligne 23 [entrée] et les paramètres jouant le rôle de la ligne 36 [sortie] ? => par sécurité je peux c/c la macro et faire un autre commandbutton mais vu "2)" je ne sais pas comment associer une macro et son commandutton.
==> Edit : en relisant votre code, ce serait juste toutes les occurrences du "23" et du "36" ? (pour la question 3)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
1- Vous créer une forme par Insertion/Formes, puis vous cliquez droit dessus et faites Affecter une macro. Dans la fenêtre qui s'ouvre cliquez sur Calcule.
( ça suppose que vous avez déjà copier la macro dans votre fichier :) )
2- Oups ! La colonne L c'est 12 et non 13. remplacez les deux 13 par 12. ( et supprimer le 1 )
3- S'il y a un autre paramètre alors il faut imbriquer les boucles avec leurs variations respectives, mais attention au stockage car il y aura 100 lignes à stocker à chaque fois que l'autre variable va changer.
 

gthe

XLDnaute Junior
Merci pour cette rapidité !

Excellent, j'ai réussi les étapes 1 et 2.

Pour la 3 par contre, je comprends moins bien. Imaginons que nous reprenons le fichier que vous m'avez envoyé et qu'on modifie le "13" en "12" comme vous l'avez suggéré (dans le code) :

Si par exemple je recréée le même gros tableau que celui que j'ai fait tout en bas de la feuille et que je souhaite récupérer dans ce 2ème tableau les résultats de la ligne 30 à la place de la ligne 36 (par un 2ème commandbutton), et qu'en fait ces deux commandbutton peuvent être remplacés par un unique qui fait les calculs des deux tableaux, comment devrais-je m'y prendre ?

Sinon pour ma culture générale, j'imagine que les 100 lignes dont vous parlez sont celles du tableau à remplir. Cela veut dire que je peux en réalité copier le même code à la différence près que j'affecte les variables des nouvelles lignes ? Comment puis-je réaliser tout cela (tableau 1 + tableau 2) en un seul code ?

(mais je suis sûr que c'est pas compliqué, surtout depuis que vous avez posté le premier code)
==> Edit, en fait si c'est un peu plus compliqué
Je joins mon fichier à l'état actuel (smiley triste car j'ai l'impression d'avoir réalisé une erreur qui s'est répercutée sur le tableau qui était fonctionnel) :(

En tout cas merci !
 

Pièces jointes

  • EXTRACT PS + MACRO.xlsm
    501.9 KB · Affichages: 4
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'avais pensé qu'il y avait deux variables.
Si ce n'est que deux stockage on peut le faire au sein de la même macro, avec :
VB:
Sub Calcule5()
Dim L1%, L2%, n%, i%
Application.ScreenUpdating = False
L1 = 74
L2 = 179
For n = 0 To 100
    For i = 3 To 12 ' colonne C à L
        Cells(23, i) = n / 100
    Next i
    For i = 3 To 12
        Cells(L1, i) = Cells(36, i) ' Stockage1
        Cells(L2, i) = Cells(30, i) ' Stockage2
    Next i
    L1 = L1 + 1 ' incrément tableau 1
    L2 = L2 + 1 ' incrément tableau 2
Next n
[C23:L23].ClearContents
End Sub
 

Pièces jointes

  • EXTRACT PS + MACRO2.xlsm
    505.8 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 938
Membres
101 844
dernier inscrit
pktla