fredieuric
Messages postés24Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention 2 octobre 2008
-
8 déc. 2006 à 11:20
fredieuric
Messages postés24Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention 2 octobre 2008
-
8 déc. 2006 à 14:54
Bonjour à tous,
Un petit probleme:
Je dois mettre à jour des cellules d'une page excel lorsque je change certaines autre cellules... J'ai utilisé pour l'instant une Sub qui calcule la valeur desdites cellules sur l'evenement suivant:
Sub Worksheet_SelectionChange(ByVal Target As Range)
Ca marche plutôt bien, mais si je ne clique pas sur une cellule de la page (à l'ouverture du fichier sur une autre page par exemple), les cellules ne sont pas jour, et il faut que je selectionne la page, et clique sur une cellule pour obtenir la lise à jour.
Existe-t-il une fonction qui mette à jour auomatiquement tout le workbook toutes les 2 secondes par exemple, ou une manière simple de toujours avoir l'ensemble des cellules de toutes les pages à jour?
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 8 déc. 2006 à 12:54
Bonjour
Si ton code fonctionne comme tu le décris lorsque tu fais une modification manuelle et pas à l'ouverture de ton fichier, il me semble comprendre dès lors que le SelectionChange n'est pas appelé à l'ouverture ==> met le code qui se trouve dans cette subroutine dans une routine plus générale (par exemple Sub MetAJour) et fais un call de cette subroutine lors du Workbook_Open.
fredieuric
Messages postés24Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention 2 octobre 20081 8 déc. 2006 à 13:13
Merci cavo789, mais le fait de mettre à jour lors de l'ouverture ne suffit pas, en fait, je voudrais mettre à jour lors de tout changement sur n'importe quelle feuille...
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 8 déc. 2006 à 13:14
Salut,
J'ai trouvé pile-poil ce qu'il te faut (adapté d'un truc similaire que javais en stock) :
- Tu ajoutes la sub (ci-dessous) dans le module de la feuille de calcul où tu veux que ca fonctionne
- Tu remplaces Range("A1:D8") par la plage de cellule ou tu souhaites que l'opération se déroule
La modif se fait "en live" , et fonctionne même si tu y colles plusieurs valeurs en même temps.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellulesamodifier As Range, cellulecourrante As Range
'ne modifier que les cellules comprises dans un plage donnée (dans cet exemple la plage A1:D8)
Set cellulesamodifier = Application.Intersect(Target, Range("A1:D8"))
'si il y a des cellules modifiées dans la zone
If Not cellulesamodifier Is Nothing Then
'pour chaque cellule à modifier verifier si elle est déjà avec deux décimales sinon la diviser par 100
For Each cellulecourrante In cellulesamodifier.Cells
If InStr(cellulecourrante.Value, ",") = 0 Then
cellulecourrante.Value = cellulecourrante.Value / 100
End If
Next
End If
fredieuric
Messages postés24Date d'inscriptionmercredi 10 juillet 2002StatutMembreDernière intervention 2 octobre 20081 8 déc. 2006 à 14:54
Rebonjour,
Merci à tous ceux qui ont tenté de m'aider! Vous m'avez mis sur la bonne voie, et j'ai finalement réussi à faire ce que je voulais avec l'évènement suivant:
Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Source As Range)