lancer une macro sur change

  • Initiateur de la discussion Evelynetfrancois
  • Date de début
E

Evelynetfrancois

Guest
bonjour
j'ai un ptit soucis voila
comment faire pour lancer une macro sur le changement de la valeur de a1

Avec une liste deroulante , janvier à decembre, j'ai une cellule liée qui est A1
donc si je clic sur cette liste sur un mois , mettons mars , alors A1 prends la valeur 3.

C'est la que je souhaiterais que ce lance ma macro ( qui elle est ecrite et marche parfaitement si elle est lie a un bouton)
moi je souhaiterais qelle parte suite a un changement de valeur de A1
en fait a chaque modif dans la liste de mois .
j'espere etre clair

merci d'avance pour vos solutions
bonne journees
evelynetfrancois
 
L

Lord Nelson

Guest
Salut,

Voici une piste :

- ALT F11 pour passer en VBA,
- Dans la fenêtre projet, double-click sur Feuil1,
- En haut de la fenêtre de code, dérouler "Général" pour afficher "WorkSheet",
- Dérouler la liste des évènements pour afficher "Change"
- Tu obtiens alors une procédure événementielle :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address="$A$1" Then
MaMacro
End If
End Sub

Dans cet exemple, MaMacro représente ton code. Il te suffit d'indiquer le vrai nom de ta macro.
Tu peux aussi copier/coller les lignes de code de ta macro pour les insérer directement dans cette procédure, si tu préfères.

A+
LN
 
O

omicron

Guest
Bonjour Evelyne et François,

Vous trouverez en pièce jointe un exemple qui je pense répondra au problème posé.

Cordialement ...

Omicron
 

Pièces jointes

  • ChangeA1.zip
    7.5 KB · Affichages: 151
M

Marc

Guest
Bonjour,

Une question complémentaire : si, au lieu de sélectionner une valeur dans une liste, je dis A1=E1, lorsque je change E1, A1 est automatiquement modifié (normal) mais la macro n'est pas activée (pourtant A1 a changé de valeur).

Si vous avez une solution, ça m'intéresse

Merci
 
L

Lord Nelson

Guest
Salut Marc,

Tu as raison, dans ce cas l'évènement Change ne se produit pas dans A1 puisque son contenu reste "=E1".
Si tu veux intercepter le changement de valeur de A1, tu peux exploiter l'évènement Calculate, comme ceci par exemple :

Dim VA1 As String

Private Sub Worksheet_Activate()
VA1 = Range("A1").Text
End Sub

Private Sub Worksheet_Calculate()
If Range("A1").Text <> VA1 Then
MsgBox VA1 & " " & Range("A1").Text
VA1 = Range("A1").Text
End If
End Sub

La variable VA1 retient le contenu de A1 que tu peux comparer à chaque fois qu'un calcul est effectué.

A+
LN
 
L

Laurent et Cathy

Guest
Bonjour à tous,

ça faisait longtemps, E&F, chers voisins!

Le truc à savoir, c'est que lorsqu'on change une sélection dans une liste de validation, l'événement Change d'une worksheet ne se déclenche malheureusement pas dans les anciennes versions d'excel, si je ne me trompe pas (ici, j'ai excel XP, et là, pas de problème). Je dis ça par souvenir, sans être sûr de mon coup.

En tout cas, Ti avait donné cette astuce dans un autre fil: passer par une autre cellule:
par exemple, si la liste est en A1, dans une cellule cachée (par exemple AA1), on écrit: =A1

Et on utilise l'évènement Calculate. (Private Sub Worksheet_Calculate()
)

En effet, lorsqu'on change A1, la formule de AA1 est recalculée. A la condition bien sûr d'être en mode de calcul automatique (Menu outils, Options, onglet calcul d'excel).

Il n'y avait que Ti pour nous trouver ça!

Cela répond également à la question de Marc, car dans son cas, la cellule A1 n'est pas changée (sa formule reste la même). Seul le résultat est modifié.

Bonne journée à tous.
 
E

Evelynetfrancois

Guest
bonsoir a tous ca y est !!
et oui je suis de passage laurent salut!!


j'utilisais une liste deroulante de la barre formulaire contenant
les douzes mois qui me renvoyait les valeurs 1;2;3 JUSQUE 12 dans A1(celule liee)

je l'ai changée par une liste de validation qui renvoye directement les valeurs janvier fevrier etc .....
la cellule A1 change bien

de ce fait tout maintenant ,grace à vos explications fonctionne à merveille !

une fois de plus merci à vous tous.


Evelynetfrancois
 

Discussions similaires

Réponses
7
Affichages
360

Statistiques des forums

Discussions
312 500
Messages
2 089 004
Membres
104 003
dernier inscrit
adyady__