Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classement se performances

8 réponses
Avatar
Banjo
Bonjour,

Je cherche, à partir d'un tableau de données, à classer des risques suivant
leur niveau. Et j'avoue que je coince.
Mon problème est que mon tableau peut faire apparaître le même risque à
différents endroits. Et c'est à partir la somme des évaluations de risque
attribuées à chacun que je voudrait classer les différents risques.
J'ai essayé de travailler à partir de la solution de CrisV (n°475), mais
cela implique de faire la somme au préalable et en évitant les doublons. Et
là, je ne trouve pas non plus de solution, hormis un tableau croisé
dynamique, mais impose une mise à jour à chaque changement.
Si quelqu'un connaît une solution et veut bien la partager, je suis
intéressé et le remercie d'avance.
Cordialement,
Banjo

8 réponses

Avatar
Banjo
Bonjour,

Finalement, n'ayant pas réussi à le faire sous forme de fonction (dommage,
j'aurais préféré), je l'ai fait à l'aide d'une macro. Mais cela m' impose de
la lancer à chaque fois que je veux faire une mise à jour.
Les points qui me reste à régler sont :
1°) trouver une fonction qui fait le même travail
2°) figer l'affichage pendant l'exécution de la macro (je ne me souviens
plus de la fonction)
3°) trouver une solution pour que la macro s'exécute à chaque changement
dans une plage de cellules définie. J'ai essayé avec les lancements sur
évènement, mais je n'ai pas réussi à la faire fonctionenr correctement. Par
exemple
Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Address = "ZoneCellules" Then MsgBox
Mon Programme
End Sub
Mon programme fonctionne correctement tou seul, mais pas lorsque je l'insère
dans la macro sur évènement.
Peut-être est-ce que je ne déclare pas tout ce qu'il faut ou que je
l'implante mal.
Merci d'avance à la personne qui voudra bien m'aider.

Cordialement,

Banjo


Bonjour,

Je cherche, à partir d'un tableau de données, à classer des risques suivant
leur niveau. Et j'avoue que je coince.
Mon problème est que mon tableau peut faire apparaître le même risque à
différents endroits. Et c'est à partir la somme des évaluations de risque
attribuées à chacun que je voudrait classer les différents risques.
J'ai essayé de travailler à partir de la solution de CrisV (n°475), mais
cela implique de faire la somme au préalable et en évitant les doublons. Et
là, je ne trouve pas non plus de solution, hormis un tableau croisé
dynamique, mais impose une mise à jour à chaque changement.
Si quelqu'un connaît une solution et veut bien la partager, je suis
intéressé et le remercie d'avance.
Cordialement,
Banjo


Avatar
anonymousA
Bonjour,

1°) trouver une fonction qui fait le même travail


ca c'est à toi de voir, mais rappelle toi que les fonctions définies par
l'utilisateur (User Defined Functions ou UDF) n'agissent pas sur autres
chose que sur le résultat de la cellule dans laquelle la formule faisant
appel à ces fonctions est placée et qu'elles peuvent être très lentes
sauf à en faire des fonctions dans une xll mais c'est une autre paire de
manches. Par ailleurs, il faudra sans doute en reforcer le calcul.

2°) figer l'affichage pendant l'exécution de la macro (je ne me
souviens plus de la fonction)


Application.screenupdating=true pour figer et False pour le contraire.

3°) trouver une solution pour que la macro s'exécute à chaque
changement dans une plage de cellules définie. J'ai essayé avec les

lancements sur évènement, mais je n'ai pas réussi à la faire fonctionner
correctement.

par exemple avec une cellule dont l'adresse est $A$1. Une cellule ne
peut avoir comme adresse une chaine de caractères telles que "ZoneCellules"

Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Address = $A$1 Then
MsgBox "quelque chose"
Mon Programme
End Sub

Enfin, si ta sub ( ici Mon Programme) agit sur des cellules de la
feuille en les selectionnant, il faudra mettre avant l'appel à Mon
Programme l'instruction Application.enableeventsúlse puis la même
instruction = True après, car sinon, tu risques de rentrer dans une
boucle infernale sauf si c'est ce que tu souhaites, mais là encore c'est
à toi de voir.

A+

Bonjour,

Finalement, n'ayant pas réussi à le faire sous forme de fonction (dommage,
j'aurais préféré), je l'ai fait à l'aide d'une macro. Mais cela m' impose de
la lancer à chaque fois que je veux faire une mise à jour.
Les points qui me reste à régler sont :
1°) trouver une fonction qui fait le même travail
2°) figer l'affichage pendant l'exécution de la macro (je ne me souviens
plus de la fonction)
3°) trouver une solution pour que la macro s'exécute à chaque changement
dans une plage de cellules définie. J'ai essayé avec les lancements sur
évènement, mais je n'ai pas réussi à la faire fonctionenr correctement. Par
exemple
Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Address = "ZoneCellules" Then MsgBox
Mon Programme
End Sub
Mon programme fonctionne correctement tou seul, mais pas lorsque je l'insère
dans la macro sur évènement.
Peut-être est-ce que je ne déclare pas tout ce qu'il faut ou que je
l'implante mal.
Merci d'avance à la personne qui voudra bien m'aider.

Cordialement,

Banjo


Bonjour,

Je cherche, à partir d'un tableau de données, à classer des risques suivant
leur niveau. Et j'avoue que je coince.
Mon problème est que mon tableau peut faire apparaître le même risque à
différents endroits. Et c'est à partir la somme des évaluations de risque
attribuées à chacun que je voudrait classer les différents risques.
J'ai essayé de travailler à partir de la solution de CrisV (n°475), mais
cela implique de faire la somme au préalable et en évitant les doublons. Et
là, je ne trouve pas non plus de solution, hormis un tableau croisé
dynamique, mais impose une mise à jour à chaque changement.
Si quelqu'un connaît une solution et veut bien la partager, je suis
intéressé et le remercie d'avance.
Cordialement,
Banjo




Avatar
Banjo
Bonjour anonymousA,

Merci baucoup pourton aide.
1°) j'entendais par fonction une fonction Excel type sommeprod(...) avec
évidemment une forme matricielle vu le besoin
2°) merci, où avais-je la tête
3°) j'ai essayé ce genre de formulation, mais sans MsgBox et surtout sans
succès, même lorsque le libellé était If target.Address = $A$1, c'est
pourquoi je pensais ne pas avoir déclaré cette macro correctement ou ne pas
l'avoir mise au bonne endroit.

Cela écrit, merci encore.

Je réessaierais plus tard, il faut d'abord que je fasse le repas des enfants.

Cordialement,

Banjo


Bonjour,

1°) trouver une fonction qui fait le même travail


ca c'est à toi de voir, mais rappelle toi que les fonctions définies par
l'utilisateur (User Defined Functions ou UDF) n'agissent pas sur autres
chose que sur le résultat de la cellule dans laquelle la formule faisant
appel à ces fonctions est placée et qu'elles peuvent être très lentes
sauf à en faire des fonctions dans une xll mais c'est une autre paire de
manches. Par ailleurs, il faudra sans doute en reforcer le calcul.

2°) figer l'affichage pendant l'exécution de la macro (je ne me
souviens plus de la fonction)


Application.screenupdating=true pour figer et False pour le contraire.

3°) trouver une solution pour que la macro s'exécute à chaque
changement dans une plage de cellules définie. J'ai essayé avec les

lancements sur évènement, mais je n'ai pas réussi à la faire fonctionner
correctement.

par exemple avec une cellule dont l'adresse est $A$1. Une cellule ne
peut avoir comme adresse une chaine de caractères telles que "ZoneCellules"

Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Address = $A$1 Then
MsgBox "quelque chose"
Mon Programme
End Sub

Enfin, si ta sub ( ici Mon Programme) agit sur des cellules de la
feuille en les selectionnant, il faudra mettre avant l'appel à Mon
Programme l'instruction Application.enableeventsúlse puis la même
instruction = True après, car sinon, tu risques de rentrer dans une
boucle infernale sauf si c'est ce que tu souhaites, mais là encore c'est
à toi de voir.

A+

Bonjour,

Finalement, n'ayant pas réussi à le faire sous forme de fonction (dommage,
j'aurais préféré), je l'ai fait à l'aide d'une macro. Mais cela m' impose de
la lancer à chaque fois que je veux faire une mise à jour.
Les points qui me reste à régler sont :
1°) trouver une fonction qui fait le même travail
2°) figer l'affichage pendant l'exécution de la macro (je ne me souviens
plus de la fonction)
3°) trouver une solution pour que la macro s'exécute à chaque changement
dans une plage de cellules définie. J'ai essayé avec les lancements sur
évènement, mais je n'ai pas réussi à la faire fonctionenr correctement. Par
exemple
Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Address = "ZoneCellules" Then MsgBox
Mon Programme
End Sub
Mon programme fonctionne correctement tou seul, mais pas lorsque je l'insère
dans la macro sur évènement.
Peut-être est-ce que je ne déclare pas tout ce qu'il faut ou que je
l'implante mal.
Merci d'avance à la personne qui voudra bien m'aider.

Cordialement,

Banjo


Bonjour,

Je cherche, à partir d'un tableau de données, à classer des risques suivant
leur niveau. Et j'avoue que je coince.
Mon problème est que mon tableau peut faire apparaître le même risque à
différents endroits. Et c'est à partir la somme des évaluations de risque
attribuées à chacun que je voudrait classer les différents risques.
J'ai essayé de travailler à partir de la solution de CrisV (n°475), mais
cela implique de faire la somme au préalable et en évitant les doublons. Et
là, je ne trouve pas non plus de solution, hormis un tableau croisé
dynamique, mais impose une mise à jour à chaque changement.
Si quelqu'un connaît une solution et veut bien la partager, je suis
intéressé et le remercie d'avance.
Cordialement,
Banjo







Avatar
Mgr.Abile
Bonjour anonyme,
"Application.screenupdating=true pour figer et False pour le contraire."
Quelle funeste confusion cérébrale, c'est tout le contraire !
;o))
--
News://news.microsoft.com/microsoft.public.fr.excel
Allez en paix
T.Abile
"anonymousA" a écrit dans le message de
news:47512bb4$0$27373$
Bonjour,

1°) trouver une fonction qui fait le même travail
[...]


2°) figer l'affichage pendant l'exécution de la macro (je ne me
souviens plus de la fonction)


Application.screenupdating=true pour figer et False pour le contraire.

[...]



Avatar
anonymousA
Funeste ? J'ose esperer que personne n'en mourra d'avoir interverti !

A+

Bonjour anonyme,
"Application.screenupdating=true pour figer et False pour le contraire."
Quelle funeste confusion cérébrale, c'est tout le contraire !
;o))


Avatar
anonymousA
Décidement ce matin, j'ai pas les yeux en face des trous.J'avais oublié
le End if et les guillements autour de $A$1. C'est l'age surement !!

Private Sub Worksheet_SelectionChange(ByVal target As Range)

If target.Address = "$A$1" Then
MsgBox "quelque chose"
Mon Programme
End if

End Sub

Bonjour anonymousA,

Merci baucoup pourton aide.
1°) j'entendais par fonction une fonction Excel type sommeprod(...) avec
évidemment une forme matricielle vu le besoin
2°) merci, où avais-je la tête
3°) j'ai essayé ce genre de formulation, mais sans MsgBox et surtout sans
succès, même lorsque le libellé était If target.Address = $A$1, c'est
pourquoi je pensais ne pas avoir déclaré cette macro correctement ou ne pas
l'avoir mise au bonne endroit.

Cela écrit, merci encore.

Je réessaierais plus tard, il faut d'abord que je fasse le repas des enfants.

Cordialement,

Banjo


Bonjour,

1°) trouver une fonction qui fait le même travail


ca c'est à toi de voir, mais rappelle toi que les fonctions définies par
l'utilisateur (User Defined Functions ou UDF) n'agissent pas sur autres
chose que sur le résultat de la cellule dans laquelle la formule faisant
appel à ces fonctions est placée et qu'elles peuvent être très lentes
sauf à en faire des fonctions dans une xll mais c'est une autre paire de
manches. Par ailleurs, il faudra sans doute en reforcer le calcul.

2°) figer l'affichage pendant l'exécution de la macro (je ne me
souviens plus de la fonction)


Application.screenupdating=true pour figer et False pour le contraire.

3°) trouver une solution pour que la macro s'exécute à chaque
changement dans une plage de cellules définie. J'ai essayé avec les

lancements sur évènement, mais je n'ai pas réussi à la faire fonctionner
correctement.

par exemple avec une cellule dont l'adresse est $A$1. Une cellule ne
peut avoir comme adresse une chaine de caractères telles que "ZoneCellules"

Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Address = $A$1 Then
MsgBox "quelque chose"
Mon Programme
End Sub

Enfin, si ta sub ( ici Mon Programme) agit sur des cellules de la
feuille en les selectionnant, il faudra mettre avant l'appel à Mon
Programme l'instruction Application.enableeventsúlse puis la même
instruction = True après, car sinon, tu risques de rentrer dans une
boucle infernale sauf si c'est ce que tu souhaites, mais là encore c'est
à toi de voir.

A+

Bonjour,

Finalement, n'ayant pas réussi à le faire sous forme de fonction (dommage,
j'aurais préféré), je l'ai fait à l'aide d'une macro. Mais cela m' impose de
la lancer à chaque fois que je veux faire une mise à jour.
Les points qui me reste à régler sont :
1°) trouver une fonction qui fait le même travail
2°) figer l'affichage pendant l'exécution de la macro (je ne me souviens
plus de la fonction)
3°) trouver une solution pour que la macro s'exécute à chaque changement
dans une plage de cellules définie. J'ai essayé avec les lancements sur
évènement, mais je n'ai pas réussi à la faire fonctionenr correctement. Par
exemple
Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Address = "ZoneCellules" Then MsgBox
Mon Programme
End Sub
Mon programme fonctionne correctement tou seul, mais pas lorsque je l'insère
dans la macro sur évènement.
Peut-être est-ce que je ne déclare pas tout ce qu'il faut ou que je
l'implante mal.
Merci d'avance à la personne qui voudra bien m'aider.

Cordialement,

Banjo


Bonjour,

Je cherche, à partir d'un tableau de données, à classer des risques suivant
leur niveau. Et j'avoue que je coince.
Mon problème est que mon tableau peut faire apparaître le même risque à
différents endroits. Et c'est à partir la somme des évaluations de risque
attribuées à chacun que je voudrait classer les différents risques.
J'ai essayé de travailler à partir de la solution de CrisV (n°475), mais
cela implique de faire la somme au préalable et en évitant les doublons. Et
là, je ne trouve pas non plus de solution, hormis un tableau croisé
dynamique, mais impose une mise à jour à chaque changement.
Si quelqu'un connaît une solution et veut bien la partager, je suis
intéressé et le remercie d'avance.
Cordialement,
Banjo








Avatar
Banjo
Bonjour Mgr.Abile,

Merci pour la précision.

Cordialemetn,

Banjo


Bonjour anonyme,
"Application.screenupdating=true pour figer et False pour le contraire."
Quelle funeste confusion cérébrale, c'est tout le contraire !
;o))
--
News://news.microsoft.com/microsoft.public.fr.excel
Allez en paix
T.Abile
"anonymousA" a écrit dans le message de
news:47512bb4$0$27373$
Bonjour,

1°) trouver une fonction qui fait le même travail
[...]


2°) figer l'affichage pendant l'exécution de la macro (je ne me
souviens plus de la fonction)


Application.screenupdating=true pour figer et False pour le contraire.

[...]







Avatar
Banjo
Bonjour anonymousA,

Merci pour ton perfectionnisme.
En fait j'avais corrigé ces points. Idem pour Application.screenupdating.

Cordialement,

Banjo


Décidement ce matin, j'ai pas les yeux en face des trous.J'avais oublié
le End if et les guillements autour de $A$1. C'est l'age surement !!

Private Sub Worksheet_SelectionChange(ByVal target As Range)

If target.Address = "$A$1" Then
MsgBox "quelque chose"
Mon Programme
End if

End Sub

Bonjour anonymousA,

Merci baucoup pourton aide.
1°) j'entendais par fonction une fonction Excel type sommeprod(...) avec
évidemment une forme matricielle vu le besoin
2°) merci, où avais-je la tête
3°) j'ai essayé ce genre de formulation, mais sans MsgBox et surtout sans
succès, même lorsque le libellé était If target.Address = $A$1, c'est
pourquoi je pensais ne pas avoir déclaré cette macro correctement ou ne pas
l'avoir mise au bonne endroit.

Cela écrit, merci encore.

Je réessaierais plus tard, il faut d'abord que je fasse le repas des enfants.

Cordialement,

Banjo


Bonjour,

1°) trouver une fonction qui fait le même travail


ca c'est à toi de voir, mais rappelle toi que les fonctions définies par
l'utilisateur (User Defined Functions ou UDF) n'agissent pas sur autres
chose que sur le résultat de la cellule dans laquelle la formule faisant
appel à ces fonctions est placée et qu'elles peuvent être très lentes
sauf à en faire des fonctions dans une xll mais c'est une autre paire de
manches. Par ailleurs, il faudra sans doute en reforcer le calcul.

2°) figer l'affichage pendant l'exécution de la macro (je ne me
souviens plus de la fonction)


Application.screenupdating=true pour figer et False pour le contraire.

3°) trouver une solution pour que la macro s'exécute à chaque
changement dans une plage de cellules définie. J'ai essayé avec les

lancements sur évènement, mais je n'ai pas réussi à la faire fonctionner
correctement.

par exemple avec une cellule dont l'adresse est $A$1. Une cellule ne
peut avoir comme adresse une chaine de caractères telles que "ZoneCellules"

Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Address = $A$1 Then
MsgBox "quelque chose"
Mon Programme
End Sub

Enfin, si ta sub ( ici Mon Programme) agit sur des cellules de la
feuille en les selectionnant, il faudra mettre avant l'appel à Mon
Programme l'instruction Application.enableeventsúlse puis la même
instruction = True après, car sinon, tu risques de rentrer dans une
boucle infernale sauf si c'est ce que tu souhaites, mais là encore c'est
à toi de voir.

A+

Bonjour,

Finalement, n'ayant pas réussi à le faire sous forme de fonction (dommage,
j'aurais préféré), je l'ai fait à l'aide d'une macro. Mais cela m' impose de
la lancer à chaque fois que je veux faire une mise à jour.
Les points qui me reste à régler sont :
1°) trouver une fonction qui fait le même travail
2°) figer l'affichage pendant l'exécution de la macro (je ne me souviens
plus de la fonction)
3°) trouver une solution pour que la macro s'exécute à chaque changement
dans une plage de cellules définie. J'ai essayé avec les lancements sur
évènement, mais je n'ai pas réussi à la faire fonctionenr correctement. Par
exemple
Private Sub Worksheet_SelectionChange(ByVal target As Range)
If target.Address = "ZoneCellules" Then MsgBox
Mon Programme
End Sub
Mon programme fonctionne correctement tou seul, mais pas lorsque je l'insère
dans la macro sur évènement.
Peut-être est-ce que je ne déclare pas tout ce qu'il faut ou que je
l'implante mal.
Merci d'avance à la personne qui voudra bien m'aider.

Cordialement,

Banjo


Bonjour,

Je cherche, à partir d'un tableau de données, à classer des risques suivant
leur niveau. Et j'avoue que je coince.
Mon problème est que mon tableau peut faire apparaître le même risque à
différents endroits. Et c'est à partir la somme des évaluations de risque
attribuées à chacun que je voudrait classer les différents risques.
J'ai essayé de travailler à partir de la solution de CrisV (n°475), mais
cela implique de faire la somme au préalable et en évitant les doublons. Et
là, je ne trouve pas non plus de solution, hormis un tableau croisé
dynamique, mais impose une mise à jour à chaque changement.
Si quelqu'un connaît une solution et veut bien la partager, je suis
intéressé et le remercie d'avance.
Cordialement,
Banjo