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

Macros et VBA Excel Discussion :

Alimenter 3 ListBox par un seul tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonsoir …

    Pour jouer un peu, un autre exemple …
    Dans un commentaire tu trouveras quelques pistes à suivre (ou pas).
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par apt Voir le message
    [...]
    Primo, cette application est destinée aux agents d'un service, ou tout le monde ne s'est pas utilisé l'outil Excel

    Donc, leur faciliter la tache est le principal but de cette application.[...]
    Il serait moins coûteux de leur apprendre les bases d'Excel (filtrer avec les outils natifs n'a quand même rien de compliqué, ajouter une nouvelle ligne de données, surtout avec de la validation, est normalement à la portée du premier venu) que de développer du code (surtout si on n'est pas programmeur) qui va inévitablement rendre le classeur plus fragile et imposer, de toute manière, une formation même légère sur l'outil développé... De plus, dans les codes qui t'ont été proposés, il n'y a aucune gestion d'erreurs, et donc si ça plante, ton utilisateur "qui ne sait pas utiliser Excel" va se retrouver dans du VBA avec une belle ligne jaune, des événements qui ne fonctionneront plus parce la gestion des événements a été désactivée sans aucune précaution, etc... C'est sûr que ça va les aider ^^ Si on a des utilisateurs qui sont nuls à ce point, on leur propose un truc bétonné dans une application fermée et pas un bricolage mal foutu en Excel...

    My two cents...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonsoir OrDonc, Pierre,

    Merci OrDonc pour ton dernier exemple.

    Pour Pierre, la gestion d'erreurs, c'est une partie non négligeable dans un code. Merci de nous l'avoir rappeler son importance

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Franchement...

    Je me pose à nouveau la question de l'utilité de la ligne jaune avec les listes déroulantes qui masquent les outils natifs de filtre Excel. En plus, si je tente de saisir une valeur de la liste sans l'ouvrir, j'ai des beaux caractères ésotériques... Effectivement, pour "jouer" un peu ^^

    Nom : 2020-01-10_201944.png
Affichages : 104
Taille : 4,6 Ko


    J'ai vraiment des difficultés à comprendre à quoi sert de réinventer, en moins bien, en plus fragile et en moins fonctionnel, ce qui existe en natif dans Excel, pour finalement, par code, replacer le filtre automatique.


    Je rappelle également qu'un Application.EnableEvents = 0 (outre le fait que c'est plus compréhensible d'écrire False que 0, même si "ça fait mieux" d'écrire 0) doit être utilisé avec une gestion d'erreurs, car en cas d'erreur et de sortie brusque du code, les événements ne seront plus gérés. Et ce n'est pas la procédure Sub evO(): Application.EnableEvents = 1: End Sub qui sert à grand chose comme son commentaire 'pour rétablir les évènement en cas d'erreur le laisse supposer, puisqu'elle n'est jamais appelée par le code. et on ne voit pas bien quand elle serait appelée puisqu'il n'y a pas de gestion d'erreurs. De plus, perso, je ne suis pas fan de l'écriture, ça coûte quoi de respecter les blocs et l'indentation? Dans du code à usage personnel, on fait ce qu'on veut, mais lorsque l'on partage sur des forums, il me semble normal d'adopter un style plus classique qui ne perd pas les personnes que l'on est censé aider (avis personnel).

    Il serait préférable d'écrire le code suivant, qui, en plus, éviterait l'Exit Sub.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_SelectionChange(ByVal R As Range)
        On Error GoTo EndHandler
     
        If R.CountLarge <= 1 Then 
          Application.ScreenUpdating = False
          Application.EnableEvents = False
          ....
          ...
        End If
     
    EndHandler:
        Application.EnableEvents = True
    End Sub
    Je rappelle également que normalement, le code événementiel ne doit rien faire d'autre que d'appeler du code applicatif. Ca clarifie le code, ça permet de comprendre quelle procédure fait quoi, ça facilite les tests et ça rend l'évolution du code plus aisée.

    J'ai déjà dit dans une autre discussion ce que je pensais de l'écriture à crochets [Tb].Rows(0) qui prive de la saisie semi-automatique, qui amène de la confusion dans le code car on ne sait pas avec quoi on travaille et qui impose du Late Binding à tout coup (Voir mon billet à ce sujet). C'est une source non négligeable d'erreurs de code et ça en ralentit l'exécution. A part "faire initié" et à nouveau perturber la personne que l'on est censé aider, je n'ai jamais compris à quoi ça servait ^^



    PS: Je précise pour les esprits chagrins que je ne fais que donner mon avis
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Alimentation d'une LISTBOX par une variable tableau triée
    Par Osaka2017 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/06/2019, 09h05
  2. [XL-2010] Alimenter une listbox par un textbox - 3 colonnes
    Par KINOU94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/08/2016, 15h33
  3. Réponses: 7
    Dernier message: 01/06/2013, 06h50
  4. Réponses: 0
    Dernier message: 26/05/2013, 15h10
  5. Alimenter une listbox multicolonnes avec un tableau de variables
    Par windsor dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/08/2009, 19h23

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