Monsieur Excel
Pour tout savoir faire sur Excel !

20 avril 2019

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 Blogger jhbf, sur 9:00 AM  

  • Merci pour vos remarques et suggestions !

    jhbf = Jeune Homme de Bonne Famille ?

    By Blogger Hervé Thiriez, sur 9:50 PM  

Enregistrer un commentaire

<< Accueil