Validation des données (d)
Si vous consultez le commentaire de mon dernier article,
vous verrez que cduigou
nous a fait la suggestion dans un commentaire d’éliminer tous nos decaler() en
utilisant à la place une table pour chaque colonne de données.
L’avantage de ces tables est qu’elles se redimensionnent
automatiquement dès qu’on leur ajoute un élément. Il suffit alors de donner à
chaque table, dans les colonnes E à J le nom de la première cellule de la
colonne.
Du coup, la validation de cellule de B2 est tout simplement
la formule =indirect($B$1).
En plus, la macro suivante, définie pour l’onglet,
sélectionne par défaut le premier pays du continent quand on change de
continent :
Private
Sub Worksheet_Change(ByVal Target As Range)
If
Target.Address = "$B$1" Then Range("B2").Value = ""
End
Sub
Si vous préférez mettre par défaut le premier pays,
remplacez ""
par Range(Range("B1").Value).Cells(1).Value
Les
tables … ou la fonction decaler()
Certes, cette solution a l’avantage de nous permettre d’éliminer
la nécessité pour la fonction decaler().
En revanche, il faut payer un prix pour cela.
Le premier problème est qu’il ne suffit plus d’effacer par exemple
Angleterre si l’on veut éliminer ce
pays de la liste Europe : il
faut alors supprimer la cellule correspondante pour qu’elle disparaisse de
la table. Sinon, il y aura dans la table une cellule vide…
Le second problème est plus général. Pour moi, une des clefs
de la puissance et de la flexibilité extraordinaires d’Excel, est le fait que
les lignes, les colonnes et les cellules sont indépendantes les unes des
autres. Ces qualités disparaissent quand vous utilisez la pire fonctionnalité jamais
inventée pour Excel, la fusion de cellules.
La force d’Excel réside dans l’indépendance de toutes ses cellules !
Dès qu’il y a deux tables au moins couvrant des lignes en
commun ou des colonnes en commun, vous perdez cette indépendance fondamentale.
Pour en faire l’expérience, c’est tout simple. Créez donc la
première table, en colonne E. Sélectionnez alors les lignes 3 à 6, faites un
clic droit, et vous constatez que les commandes Insérer et Supprimer
sont actives.
Créez maintenant la seconde table, en colonne F. Sélectionnez
alors les lignes 3 à 6, faites un clic droit, et vous constatez que les
commandes Insérer et Supprimer sont désormais inactives.
Vous venez donc de perdre la merveilleuse indépendance que vous aviez
auparavant dans Excel !
2 Commentaire(s):
Bonjour
Concernant l'utilisation des tables comme listes de validation...
En cas d'effacement d'une valeur valeur possible, il suffit de :
- retrier la table par ordre alphabétique pour que la cellule vide soit placée à la fin,
- et de edimensionner la table en utilisant le curseur de dimensionnement de la dernière cellule du tableau.
La liste de sélection n'affichera plus ce cellule vide.
Une petite manipulation à faire... mais dans beaucoup de modèles excel créés, les données utilisées pour les listes de validation sont relativement stables.
Je partage votre souhait de ne pas nuire à l'indépendance des cellules. Mais la grille Excel est suffisamment grande pour que l'on puisse facilement poser les tables contenant les listes de sélection dans une zone où cette perte d'indépendance ne gènera pas la construction ou l'utilisation du corps principal du modèle.
Une des grandes qualité du tableur... c'est de permettre plusieurs chemins possibles pour obtenir une solution...
Cordialement
jhbf
By jhbf, sur 9:00 AM
Merci pour vos remarques et suggestions !
jhbf = Jeune Homme de Bonne Famille ?
By Hervé Thiriez, sur 9:50 PM
Enregistrer un commentaire
<< Accueil