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).
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" a écrit dans le message de news: %
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.
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" <cat@cat.fr> a écrit dans le message de news:
%23AFI0R6LKHA.5880@TK2MSFTNGP02.phx.gbl...
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).
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" a écrit dans le message de news: %
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
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 ????
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 ????
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
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" a écrit dans le message de news:
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 ????
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" <FFO@discussions.microsoft.com> a écrit dans le message de news:
A4BE7E50-E2E0-4C49-B386-51A2A24EC03B@microsoft.com...
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 ????
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" a écrit dans le message de news:
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
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" a écrit dans le message de news: %
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.
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" <cat@cat.fr> a écrit dans le message de news:
%23AFI0R6LKHA.5880@TK2MSFTNGP02.phx.gbl...
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).
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" a écrit dans le message de news: %
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
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" a écrit dans le message de news:
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 ????
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" <FFO@discussions.microsoft.com> a écrit dans le message de news:
A4BE7E50-E2E0-4C49-B386-51A2A24EC03B@microsoft.com...
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 ????
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" a écrit dans le message de news:
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
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 !!!!!
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
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
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" a écrit dans le message de groupe de discussion : # 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.
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" <cat@cat.fr> a écrit dans le message de groupe de discussion :
#AFI0R6LKHA.5880@TK2MSFTNGP02.phx.gbl...
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).
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" a écrit dans le message de groupe de discussion : # 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
"CAT" a écrit dans le message de news:
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" <cat@cat.fr> a écrit dans le message de news:
OpOZvy6LKHA.1452@TK2MSFTNGP06.phx.gbl...
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.)
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
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" a écrit dans le message de news:
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 !!!!!
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" <FFO@discussions.microsoft.com> a écrit dans le message de news:
AAFC689E-2E4E-48C4-B582-0743E3619620@microsoft.com...
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
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" a écrit dans le message de news:
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
Je suis avec Excel 2003, mais ça ne fonctionne pas chez moi.
"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news:
"CAT" a écrit dans le message de news:
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
Je suis avec Excel 2003, mais ça ne fonctionne pas chez moi.
"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news:
ue58rS7LKHA.220@TK2MSFTNGP02.phx.gbl...
"CAT" <cat@cat.fr> a écrit dans le message de news:
OpOZvy6LKHA.1452@TK2MSFTNGP06.phx.gbl...
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.)
Je suis avec Excel 2003, mais ça ne fonctionne pas chez moi.
"Caetera" <EtiennePloufCahé@wanadoo.fr> a écrit dans le message de news:
"CAT" a écrit dans le message de news:
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.)