OVH Cloud OVH Cloud

Problème de naviguation sur excel 97

6 réponses
Avatar
Le Lillois
Bonsoir,
j'ai cr=E9er un tableau avec des menus d=E9roulant afin=20
d'=E9viter une erreur de saisie (validation liste)pour 15000=20
cellules.
Est-il possible de cr=E9er une macro pour alleger la=20
naviguation entre les cellules (ca rame)
Exemple : Il faudrait que je puisse cliquer dans une=20
cellules qui me propose une liste de possibilit=E9es, (j'ai=20
143 possibilit=E9s), ce qui =E9viterais une erreur de saisie.
Merci pour la r=E9ponse=20
Cordialement

6 réponses

Avatar
AV
Pour alléger, tu pourrais ne créer la liste de validation qu'à la sélection de
la cellule et la supprimer à la "désélection"
Exemple pour la plage A2:A1500 - "laListe" est une plage nommée
Dans le module de la feuille :

Private mém$

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If Intersect(zz, [A2:A1500]) Is Nothing Then Exit Sub
With zz.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=laListe"
End With
On Error Resume Next
Range(mém).Validation.Delete
mém = zz.Address
End Sub

AV
Avatar
Denis Michon
Bonjour AV,

Compte tenu de l'étendue de la plage, il me semble qu'un contrôle combobox dans une barre d'outil aurait pu être une
avenue intéressante... mais à cette heure, la paresse est bien installée ! ;-)


Salutations!



"AV" a écrit dans le message de news:bmvo1b$sqk$
Pour alléger, tu pourrais ne créer la liste de validation qu'à la sélection de
la cellule et la supprimer à la "désélection"
Exemple pour la plage A2:A1500 - "laListe" est une plage nommée
Dans le module de la feuille :

Private mém$

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If Intersect(zz, [A2:A1500]) Is Nothing Then Exit Sub
With zz.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=laListe"
End With
On Error Resume Next
Range(mém).Validation.Delete
mém = zz.Address
End Sub

AV
Avatar
bonjour merci pour la réponse mais ca ne fonctionne pas
peut etre que je fais une fausse manipulation
merci de jeter un oeil sur votre macro
coldialement
-----Message d'origine-----
Pour alléger, tu pourrais ne créer la liste de validation
qu'à la sélection de

la cellule et la supprimer à la "désélection"
Exemple pour la plage A2:A1500 - "laListe" est une plage
nommée

Dans le module de la feuille :

Private mém$

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If Intersect(zz, [A2:A1500]) Is Nothing Then Exit Sub
With zz.Validation
.Delete
.Add Type:=xlValidateList,
AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:="=laListe"
End With
On Error Resume Next
Range(mém).Validation.Delete
mém = zz.Address
End Sub

AV


.



Avatar
Philippe.R
Bonsoir,
Je viens de tester le code d'AV ; ça tourne impeccablement à condition d'avoir préalablement créé
quelque part dans la feuille la liste des données autorisées et d'avoir nommé la plage qui la contient :
laListe
En sus, le code est à coller dans le module de la feuille (clic droit sur l'onglet / visualiser le code
/ coller dans la fenêtre qui vient de s'ouvrir).
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

a écrit dans le message de
news:073e01c396f8$d7a0eed0$
bonjour merci pour la réponse mais ca ne fonctionne pas
peut etre que je fais une fausse manipulation
merci de jeter un oeil sur votre macro
coldialement
-----Message d'origine-----
Pour alléger, tu pourrais ne créer la liste de validation
qu'à la sélection de

la cellule et la supprimer à la "désélection"
Exemple pour la plage A2:A1500 - "laListe" est une plage
nommée

Dans le module de la feuille :

Private mém$

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If Intersect(zz, [A2:A1500]) Is Nothing Then Exit Sub
With zz.Validation
.Delete
.Add Type:=xlValidateList,
AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:="=laListe"
End With
On Error Resume Next
Range(mém).Validation.Delete
mém = zz.Address
End Sub

AV


.



Avatar
Le Lillois
Bonjour,
Je viens de tester le code d'AV
Je fais un copier coller du code mais la ligne 1-2-4-6-7
deviens rouge, donc je suppose qu'il y a un problème
quelque part, bien que je ne doute pas du bon
fonctionnement du code, j'arrive pas à le faire
fonctionner et j'ai vraiment besoin de ce code
Merci d'apporter une solution
Cordialement



-----Message d'origine-----
Bonsoir,
Je viens de tester le code d'AV ; ça tourne
impeccablement à condition d'avoir préalablement créé

quelque part dans la feuille la liste des données
autorisées et d'avoir nommé la plage qui la contient :

laListe
En sus, le code est à coller dans le module de la feuille
(clic droit sur l'onglet / visualiser le code

/ coller dans la fenêtre qui vient de s'ouvrir).
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

a écrit dans le
message de

news:073e01c396f8$d7a0eed0$
bonjour merci pour la réponse mais ca ne fonctionne pas
peut etre que je fais une fausse manipulation
merci de jeter un oeil sur votre macro
coldialement
-----Message d'origine-----
Pour alléger, tu pourrais ne créer la liste de validation
qu'à la sélection de

la cellule et la supprimer à la "désélection"
Exemple pour la plage A2:A1500 - "laListe" est une plage
nommée

Dans le module de la feuille :

Private mém$

Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If Intersect(zz, [A2:A1500]) Is Nothing Then Exit Sub
With zz.Validation
.Delete
.Add Type:=xlValidateList,
AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:="=laListe"
End With
On Error Resume Next
Range(mém).Validation.Delete
mém = zz.Address
End Sub

AV


.




.




Avatar
AV
Merci d'apporter une solution


Si tu as une adresse valide (à me tranmettre en bal perso), je peux t'envoyer un
exemple

AV