VBA: macro qui se lance apres modif de certaines cell

VBA: macro qui se lance apres modif de certaines cell - VB/VBA/VBS - Programmation

Marsh Posté le 20-12-2005 à 16:20:08    

bonjour à tous.
 
Je cherche à écrire une macro qui me lance un calcul suite à la modification des valeurs de certaines cellules uniquement.
 
J'ai utilisé worksheet_change(ByVal target as Range), mais cela a pour efet de lancer la macro chaque fois qu'une cellule quelconque est modifieé, ce qui engendre un problème d'appel cyclique de ma macro.
 
En cherchant un peu sur le forum j'ai tenté de faire ça:
 
Private Sub worksheet_change(ByVal target As range)
    If target = range("$D$3" ) Or target = range("$D$5" ) Or target = range("$D$6" ) Or target =
                 range("$D$13" ) Or target = range("$D$14" ) Or target = range("$D$17" ) Or target  
                 = range("$D$19" ) Or target = range("$D$21" ) Or target = range("$D$22" ) Or  
                 target = range("$D$25" ) Or target = range("$D$26" ) Or target = range("$D$28" )  
                 Or target = range("$D$29" ) Or target = range("$D$31" ) Or target =  
                 range("$D$32" ) Or target = range("$D$37" ) Or target = range("$D$38" )  
    Then
               range("R16" ) = 0.00001
               range("W17" ).GoalSeek Goal:=0, changingcell:=range("R16" )
               range("AB16" ) = 0.00001
               range("AG17" ).GoalSeek Goal:=0, changingcell:=range("AB16" )
    End If
End Sub
 
mais ça n'a rien donné.
 
Quelqu'un a-t-il une suggestion?
 
Merci à vous

Reply

Marsh Posté le 20-12-2005 à 16:20:08   

Reply

Marsh Posté le 21-12-2005 à 10:37:11    

visiblement tu veu lancer ton prog quan il y une modif sur le colonne "D"
essaye comme ca :
Private sub Worksheet_Change(ByVal Target As Excel.Range)
  if (target.column = 4) then
     ....
     ....
  End if
end sub

Reply

Marsh Posté le 21-12-2005 à 10:42:19    

le problème, c'est qu'il y a d'autres cellules sur la colonne D qui ne doivent pas provoquer la modification...

Reply

Marsh Posté le 21-12-2005 à 10:50:21    

le plus simple est d'utiliser la fonction case qui permet de spécifier une série de nombre :
Private sub Worksheet_Change(ByVal Target As Excel.Range)  
  if (target.column = 4) then  
    select case target.row
       case 3,5,6,13,...
           ...
           Ton code
           ....
   end select
  End if  
end sub  

Reply

Marsh Posté le 21-12-2005 à 11:33:09    

ca c'est une bonne idee :)
je vais essayer ca tout de suite merci!

Reply

Sujets relatifs:

Leave a Replay

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