Private Sub Worksheet_Change

Le
CAT
Bonjour à tous,

J'ai mit un code dans La macro 'Private Sub Worksheet_Change' qui efface la
valeur que l'on vient de saisir dans une cellule si la cellule à droite de
cette dernière est vide. Ce code fonctionne très bien quand je saisie une
valeur manuellement dans la cellule mais ne fonctionne pas si une valeur est
validée par un clic de souris dans une liste de coix (liste déroulante).

Existe-il une façon pour contourner ce problème ?

Merci pour votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CAT
Le #20086101
Re bonjour,

Je pense que le problème vient du fait qu'il n'y a pas de changement de
cellule quand on valide un choix dans une liste déroulante.

Mais ça ne me trouve pas la solution pour autant :)

A+

"CAT" %
Bonjour à tous,

J'ai mit un code dans La macro 'Private Sub Worksheet_Change' qui efface
la valeur que l'on vient de saisir dans une cellule si la cellule à droite
de cette dernière est vide. Ce code fonctionne très bien quand je saisie
une valeur manuellement dans la cellule mais ne fonctionne pas si une
valeur est validée par un clic de souris dans une liste de coix (liste
déroulante).

Existe-il une façon pour contourner ce problème ?

Merci pour votre aide.






FFO
Le #20086421
Salut à toi

L'évennement "Private Sub Worksheet_Change" réagit à tout changement de la
valeur d'une cellule de la feuille concernée que celui-ci survienne suite à
une saisie ou un choix d'une liste déroulante
Quel est ton code ????
CAT
Le #20086411
Voici le code qui ne fonctionne pas avec la liste déroulante mais fonctionne
bien avec une saisie directe.

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(Target.Row, 5).Value = "" Then
Cells(Target.Row, Target.Column).Value = ""
End If
End Sub

"FFO"
Salut à toi

L'évennement "Private Sub Worksheet_Change" réagit à tout changement de la
valeur d'une cellule de la feuille concernée que celui-ci survienne suite
à
une saisie ou un choix d'une liste déroulante
Quel est ton code ????




Xavier
Le #20086401
Bonjour CAT,
j'ai testé chez moi et ça marche(aussi bien en saisie manuelle qu'avec
modification par liste de validation

j'ai mis le code suivant
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Offset(0, 1) = "" Then Target = ""
End Sub

Xavier


CAT a écrit :
Re bonjour,

Je pense que le problème vient du fait qu'il n'y a pas de changement de
cellule quand on valide un choix dans une liste déroulante.

Mais ça ne me trouve pas la solution pour autant :)

A+

"CAT" %
Bonjour à tous,

J'ai mit un code dans La macro 'Private Sub Worksheet_Change' qui efface
la valeur que l'on vient de saisir dans une cellule si la cellule à droite
de cette dernière est vide. Ce code fonctionne très bien quand je saisie
une valeur manuellement dans la cellule mais ne fonctionne pas si une
valeur est validée par un clic de souris dans une liste de coix (liste
déroulante).

Existe-il une façon pour contourner ce problème ?

Merci pour votre aide.










Xavier
Le #20086541
J'ai testé avec ton code et ça marche chez moi

bizarre

Xavier


CAT a écrit :
Voici le code qui ne fonctionne pas avec la liste déroulante mais fonctionne
bien avec une saisie directe.

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(Target.Row, 5).Value = "" Then
Cells(Target.Row, Target.Column).Value = ""
End If
End Sub

"FFO"
Salut à toi

L'évennement "Private Sub Worksheet_Change" réagit à tout changement de la
valeur d'une cellule de la feuille concernée que celui-ci survienne suite
à
une saisie ou un choix d'une liste déroulante
Quel est ton code ????








FFO
Le #20086701
Rebonjour à toi

Essaies plutôt comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(Target.Row, 5).Value = "" Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column).Value = ""
Application.EnableEvents = True
End If
End Sub

Et dis moi !!!!!
michdenis
Le #20086931
Bonjour CAT,

De mémoire, la version Excel 2000 se comporte tel que tu le décris.

Pour solutionner ton problème, tu peux insérer une feuille que tu
masqueras avec un bout de code
Worksheets("Nom_De_La_Feuille").visible = xlveryhidden
La feuille ne sera pas accessible par l'usager via l'interface de la
feuille de calcul.
Dans cette feuille, tu choisis une cellule, et tu inscris la formule
suivante :
=MaFeuille!A1
MaFeuille -> nom de la feuille où se trouve ta liste de validation
A1 la cellule qui contient la liste de validation

Et tu insères ta procédure 'Private Sub Worksheet_Change'
dans le module feuille de la feuille que tu viens d'ajouter.
Ceci fera déclencher la procédure événementielle à chaque fois
que tu modifieras dans ta liste de validation.


Exemple ta liste de validation est en Feuil2, cellule D1
Le code dans le module feuille de ta feuil2

Cette procédure est appelée par la procédure événementielle
de la feuille que tu as ajoutée. Tu dois enlever le mot "Private"
à la ligne de déclaration de la procédure :
'----------------------------------
Sub Worksheet_Change(ByVal Target As Range)

Set Target = ActiveCell
Cells(Target.Row, Target.Column).Value = ""

End Sub
'----------------------------------

Dans la feuille que tu as ajoutée et masquée, ce code :
'-----------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = Range("A1").Address Then
Feuil2.Worksheet_Change Target
End If
End Sub
'-----------------------------------------------

Tout ceci n'est qu'un exemple, il peut être adapté selon la
nécessité de ton application.





"CAT" #
Bonjour à tous,

J'ai mit un code dans La macro 'Private Sub Worksheet_Change' qui efface la
valeur que l'on vient de saisir dans une cellule si la cellule à droite de
cette dernière est vide. Ce code fonctionne très bien quand je saisie une
valeur manuellement dans la cellule mais ne fonctionne pas si une valeur est
validée par un clic de souris dans une liste de coix (liste déroulante).

Existe-il une façon pour contourner ce problème ?

Merci pour votre aide.
Caetera
Le #20086921
"CAT"
Voici le code qui ne fonctionne pas avec la liste déroulante mais fonctionne
bien avec une saisie directe.



Si le Worksheet_Change ne réagit pas au changement de valeur avec une liste de
validation c'est que tu utilises XL 97 !
Pour contourner, utiliser l'évènement Calculate d'une autre feuille (cachée par
ex.)

Etc
CAT
Le #20087371
Ca ne fonctionne pas mieux chez moi bien que la commande s'exécute.
J'ai mis un point d'arret et je vois bien que l'évènement se produit, mais
l'effacement de la cellule semble être innéficace alors qu'elle que la
commande est bien exécutée.


"FFO"
Rebonjour à toi

Essaies plutôt comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(Target.Row, 5).Value = "" Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column).Value = ""
Application.EnableEvents = True
End If
End Sub

Et dis moi !!!!!



CAT
Le #20087361
Je suis avec Excel 2003, mais ça ne fonctionne pas chez moi.

"Caetera"
"CAT"
Voici le code qui ne fonctionne pas avec la liste déroulante mais
fonctionne bien avec une saisie directe.



Si le Worksheet_Change ne réagit pas au changement de valeur avec une
liste de validation c'est que tu utilises XL 97 !
Pour contourner, utiliser l'évènement Calculate d'une autre feuille
(cachée par ex.)

Etc



Publicité
Poster une réponse
Anonyme