Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 27/08/2008, 16h23   #1 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 3
Par défaut Utiliser Worksheet_Change sans appuyer sur Entrer

Bonjour,

J'ai un problème que je n'arrive pas résoudre malgré mes nombreuses recherches.

J'utilise dans ma macro une procédure du type Worksheet_Change, le but étant d'uploader une base Access a chaque fois que la cellule "target" change de valeur, et de mettre à jour un classement de ces données dans cette même feuille Excel.

Le problème est le suivant: la cellule "target" change de valeur automatiquement car j'ai une formule dedans (reliée à un autre programme qui me donne des données en temps réel). Je ne change donc pas la valeur de la case manuellelemt et appuie sur Enter ensuite. La proédure Worksheet_Change ne s'exécute donc pas, mais la cellule "target" change bien de valeur.

La question est donc: comment faire pour que Worksheet_Change n'attende pas que j'appuie sur Enter pour s'exécuter?


Merci beaucoup pour aide,
Toops est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 17h58   #2 (permalink)
Membre Expert
 
Date d'inscription: novembre 2006
Messages: 1 074
Par défaut

de la même façon que tu as l'evenement "quand change", tu as l'evenement "quand calculate"
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 00h48   #3 (permalink)
Membre Expert
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 000
Par défaut

Salut Toops et le forum
Comment tu changes ta valeur ?
Tu donnes des généralités et on doit de rtépondre précisement ?
le cellule mère de ta formule change et donc, c'est sur celle-ci que doit se caler la macro sur changement.
A+
Gorfael est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 12h40   #4 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 3
Par défaut

Salut,

Merci pour vos réponses.

Je vais essayer d'être plus clair: pour l'instant ma macro utilise la procédure Worksheet_Change sur une cellule qui contient une fonction qui va chercher un prix en temps réel sur les marchés financiers. Du coup, le prix change environ toutes les 10 secondes, mais comme je ne rentre pas la valeur manuellement, Worksheet_Change ne comprend pas qu'il y a eu un changement.

Je vais tenter d'utiliser Worksheet_Calculate, mais je pense que j'aurais d'autres problèmes parce que j'ai des cellules dont la valeur change toutes les secondes.
D'ailleurs, est-il possible d'utiliser Worksheet_Calculate en lui indiquant de regarder une cellule en particulier? (un peu comme le "target" avec Worksheet_Change)?

Merci beaucoup pour vos efforts
Toops est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 13h59   #5 (permalink)
Membre Expert
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 000
Par défaut

Salut Toops et le forum
Citation:
pour l'instant ma macro utilise la procédure Worksheet_Change sur une cellule qui contient une fonction qui va chercher un prix en temps réel sur les marchés financiers
quelle fonction ? Quelle cellule ?
Ta macro Worksheet_Change agit quelque soit la cellule modifiée ?

Plus tu es moins précis, moins l'aide est plus efficace!

A+
Gorfael est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 15h19   #6 (permalink)
Membre habitué
 
Date d'inscription: février 2006
Messages: 161
Par défaut

Je ne voudrais pas paraître pessimiste mais je ne crois pas qu'on puisse détecter un changement d'une valeur sur formule (ou fonction), même avec Worksheet_Calculate.
En tout cas j'avais essayé il y a longtemps et ça ne fonctionnait pas.

Mais si tu utilises une fonction, pourquoi ne pas la modifier pour qu'elle déclenche ensuite ce que tu veux ?
neupont est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 15h53   #7 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Citation:
Envoyé par neupont Voir le message
Je ne voudrais pas paraître pessimiste mais je ne crois pas qu'on puisse détecter un changement d'une valeur sur formule (ou fonction), même avec Worksheet_Calculate.
Bonjour tlm,

Si c'est possible, supposons que l'on veut surveiller la modification, suite à un calcul, de la valeur de la cellule C1 de la feuille "Feuil1" :
  • dans un module
    Code :
    Dim Verif As Variant
     
    Sub initialisation_verif()
        Verif = Sheets("feuil1").Range("C1")
    End Sub
     
    Sub test_verif()
        If Sheets("feuil1").Range("C1") <> Verif Then
            Verif = Sheets("feuil1").Range("C1")
            MsgBox "coucou"
        End If
    End Sub
  • dans l'événement Calculate de la feuille
    Code :
    Private Sub Worksheet_Calculate()
        test_verif
    End Sub
  • dans l'événement Open de Thisworkbook
    Code :
    Private Sub Workbook_Open()
        initialisation_verif
    End Sub
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 15h59   #8 (permalink)
Membre habitué
 
Date d'inscription: février 2006
Messages: 161
Par défaut

Ah c'est donc comme ça que ça marche ?
Eh ben je serai pas venu pour rien
neupont est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 16h08   #9 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Vu que l'on ne peut pas utiliser de Target, c'est le seul moyen que je vois pour vérifier la modification d'une cellule dont la valeur change via une formule.

Maintenant si on a 150 cellules à vérifier...là je ne vois pas comment faire hormis d'utiliser l'événement calculate pour la feuille entière.
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 16h12   #10 (permalink)
Membre habitué
 
Date d'inscription: février 2006
Messages: 161
Par défaut

Peut-être "encapsuler" la formule dans une fonction maison qui déclencherait aussi la 2ème phase, et utiliser dans la feuille cette fonction maison plutôt que la formule ?
Jamais essayé.
Mais ta solution doit déjà pouvoir dépanner pas mal.
neupont est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 19h51   #11 (permalink)
Membre Expert
 
Date d'inscription: novembre 2006
Messages: 1 074
Par défaut

mais on peut mémoriser la valeur de cette cellule
Code :
 
quand change : cel = cette valeur
quand calculate : cel1 = cette valeur
si cel1<> cel executer macro
 
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 20h37   #12 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Tu n'as pas forcément l'événement Change, la formule peut faire référence à d'autres feuilles voir même d'un autre classeur.
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/08/2008, 06h11   #13 (permalink)
Membre Expert
 
Date d'inscription: novembre 2006
Messages: 1 074
Par défaut

et sur calculate ?

Code :
 
public cel
 
quand calculate :
 cel1 = cette valeur
si cel = cel1 : exit sub
sinon cel = cel1
executer macro
 
 
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/08/2008, 08h18   #14 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Bin oui...c'est ce que j'ai fait
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/08/2008, 14h04   #15 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 3
Par défaut

Merci à tous pour votre aide, et merci en particulier à fring.

Ton idée marche nickel !

T'es le meilleur
Toops est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide