BESOIN D'AIDE : PROBLEME AVEC L'EVENEMENT CALCULATE

eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013 - 29 sept. 2006 à 14:33
galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 - 30 sept. 2006 à 12:25
Salut à tous,

j'ai un énorme soucis avec l'evenement calculate.

D'abord, dans mon fichier excel, j'ai une feuille qui est reliée à une autre application, qui me permet de mettre à jour automatiquement des données en temps réel (dans ma feuille excel).
 
Le but de mon programme est de travailler sur ces données à chaque fois que ces données sont mises à jour.

Pour cela, j'utilise l'évènement calculate qui lance mon code dès qu'il y a une modification sur la feuille en question.

A ce niveau la mon programme fonctionne comme je le souhaite.

Seulement le soucis, c'est que lorsque le code commence à afficher mes résultats, cela est considéré comme une modification de la feuille, du coup mon programme se lance de nouveau sans avoir terminé le traitement précédent.

Donc dans un premier temps, j'ai décidé d'afficher les résultats dans une autre feuille du même fichier.


Mais ca ne change rien, apparemment l'évènement calculate détecte les modifications de toutes les feuilles d'un même fichier.

Ca me pose un énorme problème!!!

Est ce que quelqu'un saurait si on peut paramètrer l'évènement calculate en lui disant de détecter les modifications d'une seule feuille uniquement, ou d'une plage de cellule en particulier.

Une autre solution(pas géniale car pas pratique au niveau de la visibilité) à laquelle j'ai pensé serait d'écrire les résultats dans un autre fichier excel, du coup est ce que quelqu'un saurait comment on fait en VBA pour manipuler des cellules d'un autre fichier excel.

Enfin si quelqu'un voit une autre solution à mon problème, je suis preneur 

Merci d'avance

Peupeu

7 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 sept. 2006 à 14:41
dans ton Sub Calculate, tu peux mettre, je pense, ce genre de test :

Static bIsBusy As Boolean
    If Not bIsBusy Then
      bIsBusy = True
      ...
      bIsBusy = False
    End If

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013
29 sept. 2006 à 14:50
De plus je viens de trouver ce code sur le net :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If ActiveCell.Address = "$A$1" Then
        MsgBox "La cellule active est A1"
    End If
End Sub

Cela envoie ma msgbox si je clique sur la cellule A1.

Quelqu'un saurait si il y a une instruction qui permette de lancer mon code non pas quand je clique sur une cellule mais quand la valeur de la cellule est modifiée.

Ce serait super sympa!!!!

Peupeu
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 sept. 2006 à 14:55
evenement _Change

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013
29 sept. 2006 à 14:58
Merci Renfield,

comment on utilise evenement_Change ?
Pourrais tu me donner un ptit exemple stp?

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 sept. 2006 à 15:10
Private Sub Worksheet_Change(ByVal Target As Range)
Static bIsBusy As Boolean
    If Target.Address = "$B$2" And Not bIsBusy Then
        bIsBusy = True
        TraitementExterne Target.Value
        bIsBusy = False
    End If
End Sub

Private Sub TraitementExterne(ByVal Value As Long)
    ActiveSheet.Range("A1").Value = "Valeur saisie " & Value & " nous allons l'incrémenter"
    '# On modifie la cellule en cause.
    '# L'evenement Change sera ignoré
    Feuil1.Range("B2").Value = 1 + Value
End Sub

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013
29 sept. 2006 à 15:25
Merci Renfield, j'ai testé ton code, c'est exactement ca que je voulais.


Je vais tester de suite avec mon programme

Peupeu
0
galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 1
30 sept. 2006 à 12:25
bonjour,
Désactiver la gestion d'évènement :
Application.EnableEvents = False

Ne pas oublier de la réactiver aussitôt après !
A+
 
0
Rejoignez-nous