IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

"Validation de données" à sélection multiple


Sujet :

Contribuez

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut "Validation de données" à sélection multiple
    Bonjour,

    La validation de données standard d'Excel ne permet de faire qu'un seul choix à la fois.
    Or on a parfois besoin de sélectionner plusieurs choix et dès lors, on abandonne cette validation de données si bien que les données sont pénibles à saisir et potentiellement avec des fautes de frappe, ce qui nuit aux filtrages ou à la bonne exploitation de ces cellules.
    Pour remédier à ça dans un de mes fichiers, j'ai créé une pop-up qui s'ouvre lorsqu'on double-clique dans la cellule à modifier et contient la liste des choix possibles (checkBoxes).

    Jusque-là rien de bien excitant me direz-vous, mais l'intérêt de ma solution réside dans sa généricité puisque les choix sont construits dynamiquement. Voici le principe basé sur le fichier exemple ci-joint:
    - Le tableau de l'onglet RiskMatrix est celui qui nous intéresse.
    - L'onglet Data est l'onglet utilisé par la macro pour lister les choix qui seront proposés à l'utilisateur en fonction de la colonne de la case sur laquelle il fait le double-clic dans l'onglet RiskMatrix.
    En gros, à chaque double-clic dans l'onglet RiskMatrix, la macro regarde si l'entête de colonne correspondante est aussi utilisée comme entête de colonne dans un des tableaux de l'onglet Data. Si oui, elle va ouvrir une pop-up listant toutes les valeurs de ce tableau issu de Data en présélectionnant les cases à cocher selon le contenu de la cellule visée. Là, il suffit de cocher/Décocher et valider pour mettre à jour la cellule.


    Nom : CheckBox.png
Affichages : 4104
Taille : 26,0 Ko


    Les avantages:
    Rien à faire dans la macro:
    - Pour ajouter une nouvelle liste de choix; il suffit juste de rajouter un tableau dans l'onglet Data ayant la même entête que la colonne visée dans l'onglet Risk Matrix.
    - Pour ajouter un élément à une liste existante, il suffit de le rajouter au tableau correspondant dans l'onglet Data. Dans la pop-up, les éléments seront présentés dans le même ordre que dans l'onglet Data. La taille de la pop-up s'ajuste automatiquement en hauteur.
    - Possibilité de tout faire au clavier: espace pour cocher/décocher; entrée pour valider; échap pour annuler; tab pour passer à la checkBox suivante.

    Pour l'adapter chez vous, il faut:
    - Reprendre le code de l'onglet RiskMatrix gérant l'événement Double-Clic et le copier dans chaque onglet où vous voulez vous en servir.
    - Importer la UserForm.
    - Créer l'onglet Data et s'assurer qu'il s'appelle bien DataSheet dans VBA (son nom dans Excel n'a pas d'importance) ou bien remplacer DataSheet par le nom que vous souhaitez dans le code fourni.
    - Copier ces deux lignes de code dans un module standard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    '---
    'Public data for check box management
    Public rangeTextStr As String
    Public tableForCheckBoxesStr As String
    '---

    La solution est implémentée selon mes besoins donc il y a quelques limitations:
    - F2 au lieu du double-clic permet de contourner la pop-up.
    - Si dans une même liste, un nom est contenu dans un autre, ça devrait mal se passer... :p => facile à résoudre si nécessaire en supposant que personne ne modifie la case manuellement.
    - Dans l'onglet Data, il peut y avoir d'autres tableaux n'ayant aucun rapport mais ils doivent n'avoir qu'une seule colonne. => facile à résoudre aussi mais il est possible de n'utiliser cette onglet que pour les checkBoxes et de le masquer pour éviter tout souci.
    - Dans l'onglet où l'on capte les double-clics, pour avoir un code VBA générique à n'importe quel onglet, j'attaque le 1er tableau de l'onglet (Me.ListObjects(1)) donc il faut que le tableau visé soit le 1er de l'onglet. => facile à adapter si nécessaire
    - Il n'y a pas de sélectionner/désélectionner tout.
    - Pas d'ajustement de la pop-up en largeur.
    - Je ne suis pas développeur donc le code n'est peut-être pas 100% optimisé.
    - Testé sur Excel 2010 mais j'imagine que ça marche sur d'autres versions.


    Voilà. J'espère que ça sera utile à quelqu'un.
    Si vous trouvez cette solution intéressante et souhaitez voir ses limitations franchies ou si vous avez d'autres suggestions, discutons-en!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 566
    Points : 2 525
    Points
    2 525
    Par défaut
    Bonsoir Promethee25,

    plutôt sympa comme procédé... on pourrait y ajouter un choix par bouton radio (1 parmi n), ça complèterait ta contribution.

    Dans tout les cas, j'aime bien.

    Bon travail.

    Curt
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Merci Curt.
    Pour le choix d'1 parmi n, ne penses-tu pas que la validation de données Excel est suffisante?
    Ou alors je n'ai pas bien compris ce que tu proposes.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/08/2014, 17h25
  2. selections multiples pour validation des données
    Par Olaf69 dans le forum Excel
    Réponses: 3
    Dernier message: 30/07/2007, 14h22
  3. Réponses: 1
    Dernier message: 08/12/2006, 16h00
  4. [MySQL] Récupération données champ sélection multiple
    Par Manuxy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/07/2006, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo