OVH Cloud OVH Cloud

execution code sur modif dans cellule

12 réponses
Avatar
coucou
j'utilise le code suivant pour afficher un message en cas=20
de modification dans une cellule
Private Sub Worksheet_Change(ByVal Target As Range)
If cells(1, 1).Value > 0 Then
MsgBox ("La valeur modifi=E9e est sup=E9rieure =E0 0")
End If
end sub

Ca marche quand je modifie manuellement le contenue de la=20
cellule mais le probleme c est que j'ai une requete bas=E9e=20
sur le web qui s'actualise toutes les 5 minutes et que=20
j'aimerais avoir un message quand des valeurs r=E9cup=E9r=E9es=20
par cette requete sont modifi=E9es
Et la, ca marche pas
Si quelqu un a une id=E9e merci

10 réponses

1 2
Avatar
Antonio
Est-ce que la méthode "Worksheet_Calculate" réagit
au modifs de tes cellules?


-----Message d'origine-----
j'utilise le code suivant pour afficher un message en
cas

de modification dans une cellule
Private Sub Worksheet_Change(ByVal Target As Range)
If cells(1, 1).Value > 0 Then
MsgBox ("La valeur modifiée est supérieure à 0")
End If
end sub

Ca marche quand je modifie manuellement le contenue de
la

cellule mais le probleme c est que j'ai une requete
basée

sur le web qui s'actualise toutes les 5 minutes et que
j'aimerais avoir un message quand des valeurs récupérées
par cette requete sont modifiées
Et la, ca marche pas
Si quelqu un a une idée merci

.



Avatar
Jp Pradier
Coucou coucou ;-))

Peut-etre est-ce ton test qui ne colle pas. Tu peut utiliser target pour savoir quelle cellule est modifiée :

If target.address= range("a1").address then msgbox "Cellule A1 modifiée"

j-p
Avatar
Antonio
Essaye le code suivant :

Private Sub Workbook_Open()
aLinks = ThisWorkbook.LinkSources(xlOLELinks)
If Not IsEmpty(aLinks) Then
For i = 1 To UBound(aLinks)
ThisWorkbook.SetLinkOnData aLinks(i), "IsChanged"
Next i
End If
End Sub

Ajoute un module avec :
Public Sub IsChanged()
MsgBox "Modif détectée..."
End Sub

En fait on place un "handler" d'évènements sur
les modifs "externes" dans excel, modifs de type OLE ici
mais cela pourrait être aussi DDE ou autres...

Si ça ne marche pas, regarde la méthode
"SetLinkOnData" en l'adaptant à ton cas, je pense que
c'est la réponse à ton prb...


-----Message d'origine-----

non plus,
ca marche si je modifie a la main
mais pas sur la modification suite a l'actualisation de
requetes basées sur le web


-----Message d'origine-----

Est-ce que la méthode "Worksheet_Calculate" réagit
au modifs de tes cellules?


-----Message d'origine-----
j'utilise le code suivant pour afficher un message en
cas

de modification dans une cellule
Private Sub Worksheet_Change(ByVal Target As Range)
If cells(1, 1).Value > 0 Then
MsgBox ("La valeur modifiée est supérieure à
0")



End If
end sub

Ca marche quand je modifie manuellement le contenue de
la

cellule mais le probleme c est que j'ai une requete
basée

sur le web qui s'actualise toutes les 5 minutes et que
j'aimerais avoir un message quand des valeurs
récupérées


par cette requete sont modifiées
Et la, ca marche pas
Si quelqu un a une idée merci

.

.


.






Avatar
coucou
non desole

c est meme pire
puisque avec le test range, il y a declanchement de la
procedure uniquement lorsque la cellule est modifié
(et pas dans le cas ou le resultat du calcul de la
cellule change)
-----Message d'origine-----
Coucou coucou ;-))

Peut-etre est-ce ton test qui ne colle pas. Tu peut
utiliser target pour savoir quelle cellule est modifiée :


If target.address= range("a1").address then
msgbox "Cellule A1 modifiée"


j-p


.



Avatar
coucou
-----Message d'origine-----

Essaye le code suivant :

Private Sub Workbook_Open()
aLinks = ThisWorkbook.LinkSources(xlOLELinks)
If Not IsEmpty(aLinks) Then
For i = 1 To UBound(aLinks)
ThisWorkbook.SetLinkOnData aLinks(i), "IsChanged"
Next i
End If
End Sub

Ajoute un module avec :
Public Sub IsChanged()
MsgBox "Modif détectée..."
End Sub

En fait on place un "handler" d'évènements sur
les modifs "externes" dans excel, modifs de type OLE ici
mais cela pourrait être aussi DDE ou autres...

Si ça ne marche pas, regarde la méthode
"SetLinkOnData" en l'adaptant à ton cas, je pense que
c'est la réponse à ton prb...


-----Message d'origine-----

non plus,
ca marche si je modifie a la main
mais pas sur la modification suite a l'actualisation de
requetes basées sur le web


-----Message d'origine-----

Est-ce que la méthode "Worksheet_Calculate" réagit
au modifs de tes cellules?


-----Message d'origine-----
j'utilise le code suivant pour afficher un message en
cas

de modification dans une cellule
Private Sub Worksheet_Change(ByVal Target As Range)
If cells(1, 1).Value > 0 Then
MsgBox ("La valeur modifiée est supérieure à
0")



End If
end sub

Ca marche quand je modifie manuellement le contenue
de




la
cellule mais le probleme c est que j'ai une requete
basée

sur le web qui s'actualise toutes les 5 minutes et
que




j'aimerais avoir un message quand des valeurs
récupérées


par cette requete sont modifiées
Et la, ca marche pas
Si quelqu un a une idée merci

.

.


.


.







Avatar
Jp Pradier
Attention, il faut faire le test sur la cellule dans laquelle tu as créé ta requète.
Quelle est ta version d'excel ?
j-p
Avatar
coucou
oui ca y est ca marche, merci
par contre le message box reste dans excel et je le voie
pas si je suis dans une autre appli

y a t il un moyen pour m'attirer l'attention si je suis
dans une autre appli?
merci

-----Message d'origine-----
Attention, il faut faire le test sur la cellule dans
laquelle tu as créé ta requète.

Quelle est ta version d'excel ?
j-p


.



Avatar
Jp Pradier
Tu peux ajouter : Application.WindowState = xlMaximized
qui redonne le focus à Excel.

j-p
Avatar
michdenis
Bonjour Coucou,

Quel est le code qui te permet d'actualiser ta requête au 5 minutes ?

En début du code,

Dim ValeurMaCell as double
ValeurMaCell = worksheets("Feuil1").cells(1, 1).Value

'Ton code pour actualiser la requête.

If ValeurMaCell>0 then
MsgBox ("La valeur modifiée est supérieure à 0")
End If



Salutations!



"coucou" a écrit dans le message de news:286e01c3738c$730021b0$
j'utilise le code suivant pour afficher un message en cas
de modification dans une cellule
Private Sub Worksheet_Change(ByVal Target As Range)
If cells(1, 1).Value > 0 Then
MsgBox ("La valeur modifiée est supérieure à 0")
End If
end sub

Ca marche quand je modifie manuellement le contenue de la
cellule mais le probleme c est que j'ai une requete basée
sur le web qui s'actualise toutes les 5 minutes et que
j'aimerais avoir un message quand des valeurs récupérées
par cette requete sont modifiées
Et la, ca marche pas
Si quelqu un a une idée merci
Avatar
Jp Pradier
Bonjour Denis

Dans Excel 2002, il n'y a pas besoin de code pour actualiser la requète. Ca fait partie des propriétés de la requète.
Dans les versions précédentes d'excel, j'avoue que je ne l'ai jamais utilisé.

j-p
1 2