Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

3 réponses
Avatar
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

3 réponses

Avatar
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" a écrit dans le message de news:
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







Avatar
j-pascal
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" a écrit dans le message de news:

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" a écrit dans le message de news:
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











Avatar
j-pascal
Re,

Je confirme : C'est parfait !

Merci +++

JP


"Youky" a écrit dans le message de news:

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" a écrit dans le message de news:
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