probleme avec worksheet_calculate

probleme avec worksheet_calculate - VB/VBA/VBS - Programmation

Marsh Posté le 09-07-2009 à 13:20:23    

Bonjour
 
Je ne suis pas un expert en vba et jai un probleme avec l’utilisation de la function worksheet_calculate()
J’ai une feuille de calcul qui comporte des cellules A1, A2, A3, etc qui sont en fait des drop-downs menus. Suivant la valeur selectionnee, je voudrais que les action1, action2, action3, etc correspondantes soient executees.  
 
Apres avoir essaye dutiliser la fonction Worksheeet_change() – qui na pas l’air de fonctionner avec des menus deroulants – jutilise la fonction Worksheet_calculate enregistree dans feuille1 ainsi :  
 
Private Sub Worksheet_calculate()
 
If A1 = X Then
Do Action1…
End If
 
If A2 = Y Then
Do Action2…
Msgbox(“Action 2 realisee”)
End If
 
If A3 = Z Then
Do Action3…
Msgbox(“Action 3 realisee”)
End If
 
End Sub
 
Le probleme que je rencontre est que si je change la valeur de la cellule A1 en une valeur differente de X et que A2=Y, A3=Z, Action1 ne sera pas lancee (ce qui est normal) mais Action2 et Action3 seront lancees alors que je voudrais que ces actions ne soient lancees QUE si je CHANGE leurs valeurs. Y a-t-il un moyen de faire ca simplement ?
L’autre pb que je rencontre est que les msgbox « Action2 realisee » et « Action3 realisee » saffichent 2 fois ?!
Merci beaucoup pour votre aide !!

Reply

Marsh Posté le 09-07-2009 à 13:20:23   

Reply

Marsh Posté le 11-07-2009 à 07:31:14    

Bonjour,
Les macros évènementielles sont délicates à manier. De plus elles ont une facheuse tendance à s'appeler elles-même...
Calculate n'est sans doute pas l'idéal. Tu peux essayer quelques chose comme ça :

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. r$ = Target
  3. s$ = Target.Address(0, 0)
  4. Select Case s
  5. Case "A1"
  6.   If Range(s) = "A" Then
  7.       'Action1...
  8.       MsgBox r
  9.   End If
  10.   If Range(s) = "B" Then
  11.       'Action1...
  12.       MsgBox r
  13.   End If
  14.   If Range(s) = "C" Then MsgBox r
  15.   If Range(s) = "D" Then MsgBox r
  16. Case "A2"
  17.   If Range(s) = "E" Then MsgBox r
  18.   If Range(s) = "F" Then MsgBox r
  19.   If Range(s) = "G" Then MsgBox r
  20.   If Range(s) = "H" Then MsgBox r
  21. End Select
  22. End Sub


Toutefois le résultat dépendra grandement de ce que tu mets dans Action1, Action2...
A+

Reply

Marsh Posté le 15-07-2009 à 11:15:44    

Merci beaucoup pour ton aide...Je vais essayer!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed