Thomeux
Messages postés58Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention14 janvier 2010
-
4 avril 2006 à 12:13
jmsebaux
Messages postés9Date d'inscriptionmercredi 14 mai 2003StatutMembreDernière intervention27 mai 2011
-
15 janv. 2007 à 17:34
Bonjour à tous,
J'ai programmé une macro en vb dans excel2003, cette macro utilise des valeurs se situant dans des cellules Excel, effectue un calcul qu'elle inscrit dans une autre cellule.
Mon Problème est le suivant:
je voudrais vider la cellule résultat(range("cellule")="") lorsque n'importe quelle cellule de la feuille est modifiée.
j'ai donc utilisé comme on me l'a conseillé la démarche suivante:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Select Case ActiveSheet.Name
Case "Can5480_1966", "Can5480_1974", "Can5480_1986"
Range("G35") = ""
Range("G42") = ""
Case "Can5482_1973"
Range("H19") = ""
Range("h23") = ""
Case Else
'sortir
GoTo H
End Select
H:
End Sub
Le probléme de cette solution est que lorsque je modifie une cellule, je vide bien les cellules résultats, mais comme je les vides, je les modifies également et je relance donc le processus de vidage des cellules résultats indéfiniment(boucle infinie)
il y a t'il une autre façon de procoder?
jmsebaux
Messages postés9Date d'inscriptionmercredi 14 mai 2003StatutMembreDernière intervention27 mai 2011 15 janv. 2007 à 17:34
bonjour, je tombe sur la discussion par hasard ... c'est un peu tard mais il y a une autre façon de faire qui reste purement excel, c'est de rajouter les instructions suivantes autour du code modifiant le contenu des cellules :
Application.EnableEvents = False 'bloque les événements pour ne pas générer d'appel à cette même
'procédure lors de la modification du contenu des cellules
Application.EnableEvents = True 'rétabli les événements