|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : décembre 2011 Messages : 31 ![]() |
Bonjour à tous,
j'ai un petit soucis et j'aurais bien besoin d'un petit coup de pouce si c'est possible.. Pour info: mon fichier est à destination de mon service et comme je ne serais pas la seule à l'utiliser, il est à la base entièrement verrouillé à toutes modifications, (en particulier pour "garantir" l'intégrité des données mais aussi pour éviter les mauvaises manips de personnes maladroites) Pour cela, voilà ce que j'aurais souhaité faire si c'est possible, (je vais essayer d'être clair): Premièrement j'ai créé une liste dans la feuille2 de mon classeur que j'ai nommé "Mylist" Dans ma feuille1, J'ai créé avec l'outil d'excel une validation de donnée dans la cellule "A1" avec comme liste de choix "Mylist"; Donc jusque là pas de soucis, tout fonctionne très bien. Voilà juste, "mylist" est une liste très longue et non exhaustive. Donc j'ai bien retiré le bloquage quand la donnée tapée en "A1" ne fait pas partie de la liste mais j'aurais bien voulu avoir dans ce cas un message (type userform) qui s'ouvre, indiquant que la donnée ne fait pas partie de la liste et demander si on veut l'y ajouter. Si oui, une macro permettrait l'insertion automatique de la nouvelle donnée dans "mylist". Mon soucis est que je suis nulle en codage VBA. Je parviens à adapter un code à mon utilité mais je ne sais pas les créer... Est ce que quelqu'un aurait une solution à me proposer?? Je vous en remercie grandement par avance!!!!!! |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
C'est tout à fait possible, mais avant de te proposer quelque chose, il y a aussi la possibilité de ne pas faire de VBA et de rendre ton myList dynamique. Il faudra juste laisser aux utilisateurs la possibilité d'ajouter une valeur dans cette liste.
Un petit exemple de liste dynamique
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : décembre 2011 Messages : 31 ![]() |
Merci pour ta réponse (elle me sera certainement utile sur un autre fichier
En effet mylist est assez longue et j'ai trouvé une formule à rentrer dans la source qui me permette un choix qui se réduit suivant les premières lettres tapées: =DECALER(PHARMATH;EQUIV(G5&"*";PHARMATH;0)-1;0;NB.SI(PHARMATH;G5&"*") Pour cette utilisation, je crois qu'il est nécessaire que la liste soit triée par ordre alphabétique, et je ne voudrais pas que l'utilisateur alpha aille bidouiller dedans(rentrer une nouvelle donnée, trier la liste...), si possible, de façon à éviter les erreurs de manipulation et les pertes de données... C'est pour ça que j'essaye de complétement verrouiller mon fichier avec la mise en place d'actions bien spécifiques et cadrées.. |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Voici mon exemple mieux adapté à ton cas en Feuille 2. Avec le code suivant dans la feuille :
Code :
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Guillaume ChaudemancheBack Office Marchés Inscription : mars 2011 Messages : 39 ![]() |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Comme c'est une plage dynamique, on ne la voit pas à gauche au dessus des cellules. Mais tu peux la trouver dans Insertion/Nom/Définir sous 2003 (Il doit y avoir un menu équivalent sous 2007/2010). C'est une formule du type :
Code :
=DECALER(Feuil1!$D$4;0;0;NBVAL(Feuil1!$D$4:$D$65536))
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : décembre 2011 Messages : 31 ![]() |
Merci Zebreloup, c'est exactement ce qu'il me faut mais je ne parviens pas à l'adapter à une plage de cellule:
J'aimerais que cela fonctionne une colonne (par exemple toutes les cellules de B2 à B500 avec cette validation) mais avec le "Target.Address" j'ai essayé toutes sortes de référencement ("$B", "$B$", "$B:$B", "$B$2:$B$500"...) , je n'y parviens pas. |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Remplace
par Code :
If Target.Column = 2 And Target.Row >= 2 Then Il y a aussi Code :
If Intersect(Target, Me.Range("B2:B1000")) Then
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : décembre 2011 Messages : 31 ![]() |
Ca marche super!!!!!!
Merci beaucoup de ton aide!!!!!!
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com