|
Publicité | ||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : octobre 2008 Messages : 23 ![]() |
Bonjour,
Dans un classeur Excel, (Excel 2003 (11.8237.8221) SP3 Sur une sheet Excel (pour l’exemple, Colonne E à J, ligne 18 à 37) j’ai une liste de choix qui est (0, D, I, R, NA, NS) pour certaines cellules. Le choix est défini par 5 critères. Toutes les cases de la liste de choix sont grisé interior.Color (Grise) La valeur initiale est 0 plus les Choix D I R NA NS Définie par données / validation / liste / Source : =Delivrable_status « Ignorer si vide » activée « Liste déroulante dans la cellule » activée « Appliquer ces modification aux cellules de paramètres identiques » désactivée Dans le cas d’une saisie (vide) "" j’utilise le code ci-dessous pour remettre la valeur initiale (zéro). Avec certaine manip à la souris ou clavier ( Supp, <- , Enter, ….) J’ai le code ci-dessous qui boucle avec lancement du débugger via la touche Echap. Avez-vous une autre solution pour interdire dans ces cellules un choix différent de (0, D, I, R, NA, NS) ? Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : juillet 2007 Messages : 2 134 ![]() |
Salut pasclaire et le forum
Sans chercher plus loin (on aimerait bien savoir quelles manips te coincent), Tu utilises Activecell, alors que la cellule modifiée est target ! Ce n'est qu'à la validation de ta cellule par Enter que la macro _Change se lance, c'est-à-dire quand la cellule active change. Ensuite, pourquoi revérifier toute ta plage à chaque changement d'une seule cellule ? Code :
D'autres remarques - Si tu veux tester la non condition, pas la peine de passer par else "If condition = False" ou "If Not Condition" marche aussi bien, en rendant le code plus lisible. - Dans le même ordre d'idée, l'indentation doit être là pour rendre le code plus lisible, pas "pour faire joli" - Utiliser .Color n'est pas forcément la meilleure solution. Regarde à .ColorIndex Mais si tu utilises les listes de validation, pourquoi refaire une telle macro ? A+ |
||
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : octobre 2008 Messages : 23 ![]() |
Bonjour Gorfael,
Ce code est tel qu'il est par ignorance de ma part pour ce type de test que j'ai très peu utilisé dans mes macros. Merci pour tes explications, j'ai modifié mon code en conséquence. Je n'ai pas provoqué la mise en boucle de ton code J’ai suivie ton conseil en utilisant .ColorIndex qui est plus facile à utiliser. (*) Une liste de diffusion est utilisé pour plusieurs cellules, Pour ces cellules,Il est possible supprimer le contenu de la cellule ce qui donne la valeur "" à la cellule soit different de (0, D, I, R, NA, NS) C'est pour cette raison que je test cette manipulation pour remettre la valeur initial. J'ai un indicateur ou je compte les cellules <> de "" Ci les cellules (*) son à "" le calcul est faut. Merci encore pour ton aide. Dernière modification par pasclaire ; 12/03/2010 à 15h58. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com