Exécution d'une macro événementielle

P

Patrick

Guest
Bonjour a tous,
Et oui, les vacances sont finies et nous voila de nouveau confronté au problème de programmation en V.B.A.
Mon problème est le suivant :
Je veut réaliser une macro événementielle lorsque je modifie une cellule dans le colonne A.
Le programme si dessous marche bien lors que je fait une saisie au clavier.
Mais mes saisies doivent se faire par l’intermédiaire d’une liste (Données / Validation / Liste) et dans ce cas ce programme ne marche pas.
Pouvez-vous m’aider ?
Bonne reprise à tous.
Patrick

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Target.Value <> valeur Then
MsgBox "VALEUR CHANGEE DANS COLONNE A"
End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then
valeur1 = Target
End If
End Sub
 

Pièces jointes

  • MacEvenementielle.xls
    23.5 KB · Affichages: 40
T

Ti

Guest
Erreur classique : tu ne travailles pas en mode Option Explicit et tu n'as pas déclaré ta variables Valeur en début de module. Conséquence, comme tu as fait une erreur de frappe et que tu utilises un coup Valeur, puis un autre coup Valeur1, les deux ne seront jamais égales, tu auras donc l'impression que ça ne marche pas !
Voici comment corriger ça :

Option Explicit
Dim Valeur

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Target.Value <> Valeur Then
MsgBox "VALEUR CHANGEE DANS COLONNE A"
End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then
Valeur = Target
End If
End Sub


Note que j'ai laissé le type Variant à la variable Valeur, puisqu'on ne sait pas a priori ce qu'elle peut contenir.

Conclusion : travaillez systématiquement Option Explicit !
 
P

Patrick

Guest
reboujour,
merci Ti pour ton aide, mais ta proposition ne marche toujours pas lorsque je modifie une celule de la colonne A par l’intermédiaire d’une liste (Données / Validation / Liste).
Voir fichier joint.
Patrick
 

Pièces jointes

  • Evenementielle.xls
    29 KB · Affichages: 56
  • Evenementielle.xls
    29 KB · Affichages: 52
  • Evenementielle.xls
    29 KB · Affichages: 53
R

romfret

Guest
Salut ti, patrick,

Je voulais vous informer que le fichier de ti marche tres bien ! ( office xp 2002 , windows xp )


Cela doit etre un probleme de version , quelles version tu as patrick ??!!

merci de ta reponse, romfret
 
P

Patrick

Guest
Bonjour Ti, Romfret et tous les autres
J’ai eu l’occasion de tester mon programme dans le même environnement que toi, Win XP et Excel XP et effectivement ça marche.
Malheureusement se programme doit être utilisé avec Win NT et Excel 97
Et dans se cas le même fichier ne marche pas avec une saisie par l’intermédiaire de la liste.
Si quelque sais comment contourner le problème
L’objectif de ce programme est de permettre la saisir dans une colonne de données du types B001 – B002 et M001 –M002
Par l’intermédiaire d’une liste. Comme il ne faut pas saisir deux fois la même valeur je veux supprimer la valeur de la liste dès quelle est saisie.
Ensuite j’incrémente ma liste, mais ceci est autre chose et ne me pose pas de problèmes particuliers.
le fichier joint dans ma réponse à Ti devrait vous permettre de mieux comprendre le but de la macro.
Patrick
 

Discussions similaires

Réponses
1
Affichages
377

Statistiques des forums

Discussions
314 085
Messages
2 105 646
Membres
109 408
dernier inscrit
demichoux50