(vba) déplacer la sélection après validation

Le
j-pascal
Bonjour,

Dans une feuille, j'ai le choix de saisir une donnée par :
- le menu déroulant (Validation de Donnée / Liste) ou
- par la saisie "directe" sous la forme hh:ss

Pour une raison que j'ignore (j'ai déjà posté sur ce "pb" !), dans certaines
circonstances, la cellule où je vais saisir une donnée affiche le "cadre
habituelle" (indiquant que la cellule est sélectionnée) ou parfois seulement
la petite flèche en bas à droite (correspondant à la présence d'un menu
déroulant). Dans les deux cas, la saisie est possible (dans le second cas,
c'est un peu perturbant car la cellule n'est pas entourée d'un cadre et
l'utilisateur peut se demander s'il est bien dans la "bonne" cellule ).

Je pense que ce pb est lié soit à la protection (par macro) de la feuille ou
à un DoEvent, ou à un application.Event

J'ai cherché, en vain

Problème :
Dans certaines circonstances, je souhaite effacer la dernière saisie. J'ai
donc recours à :
"ActiveCell.ClearContents". Le problème est que si la sélection a été
déplacée après validation, je dois utiliser : "ActiveCell.Offset(-1,
0).ClearContents". Mais si j'utilise cette dernière solution et que (cf plus
haut) la cellule a été déplacée vous voyez le pb !!

Questions :

- Est-il possible d'insérer qqch dans le code qui modifie l'option d'Excel :
"Outils / Options / Modifications / Déplacer la sélection après validation"
?
Quid de la "remise en place" à la fermeture du classeur ou en Exit Sub ???
Cette solution m'intrigue, mais je ne suis pas sûr qu'elle soit la
meilleure.

- Comment peut-on "assurément" re-sélectionner la dernière valeur saisie
dans une cellule ; que cette dernière ait été ou pas déplacée après
validation ?

- Y-a-t-il un moyen de vérifier dans quel état est le code à un moment
donné, en terme de "Application.Events " True ou False !! (C'est presque
une question subsidiaire)

Un grand merci d'avance pour vos lumières, car ce petit pb me cause de
grands soucis

Cordialement,

JP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Youky
Le #5280881
Salut,
L'adresse est stokée dés un changement dans la feuille
tu peux selectionner d'autres trucs, utilises dans ta macro
Range(lieu).Value=""


Dim lieu

Private Sub Worksheet_Change(ByVal Target As Range)
lieu = Target.Address
End Sub

Youky

"j-pascal" ee9o%
Bonjour,

Dans une feuille, j'ai le choix de saisir une donnée par :
- le menu déroulant (Validation de Donnée / Liste) ou
- par la saisie "directe" sous la forme hh:ss

Pour une raison que j'ignore (j'ai déjà posté sur ce "pb" !), dans
certaines circonstances, la cellule où je vais saisir une donnée affiche
le "cadre habituelle" (indiquant que la cellule est sélectionnée) ou
parfois seulement la petite flèche en bas à droite (correspondant à la
présence d'un menu déroulant). Dans les deux cas, la saisie est possible
(dans le second cas, c'est un peu perturbant car la cellule n'est pas
entourée d'un cadre et l'utilisateur peut se demander s'il est bien dans
la "bonne" cellule ...).

Je pense que ce pb est lié soit à la protection (par macro) de la feuille
ou à un DoEvent, ou à un application.Event ...

J'ai cherché, en vain ...

Problème :
Dans certaines circonstances, je souhaite effacer la dernière saisie. J'ai
donc recours à :
"ActiveCell.ClearContents". Le problème est que si la sélection a été
déplacée après validation, je dois utiliser : "ActiveCell.Offset(-1,
0).ClearContents". Mais si j'utilise cette dernière solution et que (cf
plus haut) la cellule a été déplacée ... vous voyez le pb !!

Questions :

- Est-il possible d'insérer qqch dans le code qui modifie l'option d'Excel
: "Outils / Options / Modifications / Déplacer la sélection après
validation" ?
Quid de la "remise en place" à la fermeture du classeur ou en Exit Sub ???
Cette solution m'intrigue, mais je ne suis pas sûr qu'elle soit la
meilleure.

- Comment peut-on "assurément" re-sélectionner la dernière valeur saisie
dans une cellule ; que cette dernière ait été ou pas déplacée après
validation ?

- Y-a-t-il un moyen de vérifier dans quel état est le code à un moment
donné, en terme de "Application.Events ..." True ou False !! (C'est
presque une question subsidiaire)

Un grand merci d'avance pour vos lumières, car ce petit pb me cause de
grands soucis ...

Cordialement,

JP







j-pascal
Le #5280471
Bonjour Youky,

Ceci semble répondre parfaitement à ma question ! (Je n'ose à peine y croire
!!)

En ajoutant ceci, j'efface le contenu saisi ou validé par
Donnée/Validation/Liste ; ce que je souhaitais.

'---
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lieu

lieu = Target.Address
'MsgBox lieu
Range(lieu).ClearContents

End Sub
'---

Je fais un essai "grandeur nature" et je te tiens au courant ...

Un (très) grand merci !

JP
"Youky"
Salut,
L'adresse est stokée dés un changement dans la feuille
tu peux selectionner d'autres trucs, utilises dans ta macro
Range(lieu).Value=""


Dim lieu

Private Sub Worksheet_Change(ByVal Target As Range)
lieu = Target.Address
End Sub

Youky

"j-pascal" ee9o%
Bonjour,

Dans une feuille, j'ai le choix de saisir une donnée par :
- le menu déroulant (Validation de Donnée / Liste) ou
- par la saisie "directe" sous la forme hh:ss

Pour une raison que j'ignore (j'ai déjà posté sur ce "pb" !), dans
certaines circonstances, la cellule où je vais saisir une donnée affiche
le "cadre habituelle" (indiquant que la cellule est sélectionnée) ou
parfois seulement la petite flèche en bas à droite (correspondant à la
présence d'un menu déroulant). Dans les deux cas, la saisie est possible
(dans le second cas, c'est un peu perturbant car la cellule n'est pas
entourée d'un cadre et l'utilisateur peut se demander s'il est bien dans
la "bonne" cellule ...).

Je pense que ce pb est lié soit à la protection (par macro) de la feuille
ou à un DoEvent, ou à un application.Event ...

J'ai cherché, en vain ...

Problème :
Dans certaines circonstances, je souhaite effacer la dernière saisie.
J'ai donc recours à :
"ActiveCell.ClearContents". Le problème est que si la sélection a été
déplacée après validation, je dois utiliser : "ActiveCell.Offset(-1,
0).ClearContents". Mais si j'utilise cette dernière solution et que (cf
plus haut) la cellule a été déplacée ... vous voyez le pb !!

Questions :

- Est-il possible d'insérer qqch dans le code qui modifie l'option
d'Excel : "Outils / Options / Modifications / Déplacer la sélection après
validation" ?
Quid de la "remise en place" à la fermeture du classeur ou en Exit Sub
??? Cette solution m'intrigue, mais je ne suis pas sûr qu'elle soit la
meilleure.

- Comment peut-on "assurément" re-sélectionner la dernière valeur saisie
dans une cellule ; que cette dernière ait été ou pas déplacée après
validation ?

- Y-a-t-il un moyen de vérifier dans quel état est le code à un moment
donné, en terme de "Application.Events ..." True ou False !! (C'est
presque une question subsidiaire)

Un grand merci d'avance pour vos lumières, car ce petit pb me cause de
grands soucis ...

Cordialement,

JP











j-pascal
Le #5153371
Re,

Je confirme : C'est parfait !

Merci +++

JP


"Youky"
Salut,
L'adresse est stokée dés un changement dans la feuille
tu peux selectionner d'autres trucs, utilises dans ta macro
Range(lieu).Value=""


Dim lieu

Private Sub Worksheet_Change(ByVal Target As Range)
lieu = Target.Address
End Sub

Youky

"j-pascal" ee9o%
Bonjour,

Dans une feuille, j'ai le choix de saisir une donnée par :
- le menu déroulant (Validation de Donnée / Liste) ou
- par la saisie "directe" sous la forme hh:ss

Pour une raison que j'ignore (j'ai déjà posté sur ce "pb" !), dans
certaines circonstances, la cellule où je vais saisir une donnée affiche
le "cadre habituelle" (indiquant que la cellule est sélectionnée) ou
parfois seulement la petite flèche en bas à droite (correspondant à la
présence d'un menu déroulant). Dans les deux cas, la saisie est possible
(dans le second cas, c'est un peu perturbant car la cellule n'est pas
entourée d'un cadre et l'utilisateur peut se demander s'il est bien dans
la "bonne" cellule ...).

Je pense que ce pb est lié soit à la protection (par macro) de la feuille
ou à un DoEvent, ou à un application.Event ...

J'ai cherché, en vain ...

Problème :
Dans certaines circonstances, je souhaite effacer la dernière saisie.
J'ai donc recours à :
"ActiveCell.ClearContents". Le problème est que si la sélection a été
déplacée après validation, je dois utiliser : "ActiveCell.Offset(-1,
0).ClearContents". Mais si j'utilise cette dernière solution et que (cf
plus haut) la cellule a été déplacée ... vous voyez le pb !!

Questions :

- Est-il possible d'insérer qqch dans le code qui modifie l'option
d'Excel : "Outils / Options / Modifications / Déplacer la sélection après
validation" ?
Quid de la "remise en place" à la fermeture du classeur ou en Exit Sub
??? Cette solution m'intrigue, mais je ne suis pas sûr qu'elle soit la
meilleure.

- Comment peut-on "assurément" re-sélectionner la dernière valeur saisie
dans une cellule ; que cette dernière ait été ou pas déplacée après
validation ?

- Y-a-t-il un moyen de vérifier dans quel état est le code à un moment
donné, en terme de "Application.Events ..." True ou False !! (C'est
presque une question subsidiaire)

Un grand merci d'avance pour vos lumières, car ce petit pb me cause de
grands soucis ...

Cordialement,

JP











Publicité
Poster une réponse
Anonyme