ListBox pour selection des colonnes
Bonsoir le forum
Y-a-t-il une possibilité de créer un "ListBox" avec pour référence les lettres des colonnes, ceci afin de pouvoir en sélectionner celle que je veux garder et supprimer toutes les autres?
Une fois par semaine je reçois un fichier avec des colonnes allant de A à FH, et pour effectuer différents comparatifs je voudrais pouvoir supprimer les colonnes qui ne me servent à rien en sélectionnant que celles que je veux garder. J'ai besoin de faire différentes comparaisons, donc la sélection des colonnes à garder est changeante en fonction des dossiers à vérifier
Je peux fournir un fichier si besoin
D'avance merci pour votre aide et votre disponibilité
Bonsoir,
Oui bien sûr, ce sont des données comme les autres...
Ceci dit cela fait 164 éléments, ce qui ne va pas être très pratique...
Je suppose que si tu prévois de sélectionner celles à garder, c'est qu'il y en a moins qu'à supprimer, et également que cela change d'un fichier à l'autre si tu veux un dispositif de ce type.
Est-ce qu'un système où tu indiquerais les colonnes à garder (ou supprimer peu importe), par exemple : A à C, F à AB, AX à AX, etc.
par 2 TextBox à servir, revenant en boucle autant de fois que nécessaire et qui exécuterait une fois les désignations achevées, ne pourrait pas s'avérer plus pratique ?
Cordialement.
Bonsoir le forum
Bonsoir MFerrand, oui je pensais plutôt indiquer les colonnes à garder, vu qu'en plus en fonction des besoins je ne supprimerais par forcément toujours les mêmes colonnes.
L'idée des 2 "TextxBox" je comprends mais je ne vois pas comment faire
Bonsoir,
Bonsoir MFerrand,
petite question : comment opères-tu cette comparaison pour déterminer les colonnes à éliminer ?
Un simple clic (radical) sur l'en-tête d'une colonne à supprimer ne suffirait-il pas ?
A+
Bonsoir eole-33, curulis57.
eole ! Quand l'idée est là, faut pas hésiter à te lancer et commencer à voir les détails, ça s'enchaîne au fur et à mesure...
Ici : 1 Userform, 2 TextBox (1re et dernière colonnes du groupe à conserver), 3 boutons (1 pour continuer en boucle les différents groupes à conserver, 1 autre pour valider, et 1 pour annuler comme toujours). Tu peux dessiner, ajuster maintenant plus tard les détails esthétiques, mettre quelques étiquettes, renommer les contrôles, et programmer l'interne (au userform) :
Que la tabulation fasse se succéder 1er TextBox, 2e TextBox et bouton de continuation (où tu prévois de renvoyer le focus sur le 1er).
Une variable tableau (dynamique) pour enregistrer la saisie : dimensionnement 1 (1re dimension à 2 éléménts), et 0 (2e dimension, à redimensionner par la suite au cours de l'exécution du formulaire, en préservant les valeurs déjà saisies). L'élément 0,0 servira de compteur. Initialisation faite par procédure Initialize du Userform.
Les TextBox : mise en majuscules, et limitation à 2 caractères.
Le bouton continuation : ajoute un élément au tableau, y affecte les valeurs des TextBox, redonne le focus au 1er.
Le bouton validation : ajoute un élément (le dernier) y affecte les valeurs, et masque Userform (pour repasser la main...
Le bouton annulation : met l'élément 0,0 à 0 (=pas de suppression à exécuter), et masque...
Là on a bouclé le Userform en tant que tel.
Se pose la question du positionnement de la variable tableau (naturellement publique), l'idée de départ c'est le Userform (on est sur place), mais là VBA va te dire : variable publique tableau interdite dans un module d'objet ! Donc interdit également dans le module de la feuille de calcul, donc ne reste qu'un module Standard.
Comment l'utiliser ? Diverses méthodes possibles : je choisis une fonction qui appelle le Userform, reprend la main après remplissage du tableau, renvoie le tableau et décharge le Userform. Simple intermédiare en somme. On aurait pu s'en passer mais j'étais parti là-dessus... et c'est resté.
Procédure lancée par bouton : qui appelle la fonction récupère le tableau (qui aurait pu l'utiliser sans passer par la fonction, tu pourras toujours modifier ça, je n'étais pas prédisposé à faire ce truc ce soir...). Elle teste qu'il n'y a pas eu annulation. Récupère le nom du classeur (j'ai supposé que la feuille 1 était concernée, si pas le cas à modifier). Masque les colonnes à conserver, supprime les colonnes visibles de A à FH, démasque, et terminé.
Le nom du classeur est à porter sur la feuille, à côté du bouton. Le classeur à traiter doit être préalablement ouvert. J'ai cru bon de préciser dans la même instance d'Excel car pour le classeur que j'ai créé pour tester j'avais rouvert Excel, et donc une autre instance, d'où erreur 9 car l'application ne le trouvait pas chez elle !
A tester de ton côté.
Un petit remords de te laisser un programme musardant un peu inutilement. J'ai donc opéré la simplification que j'indiquais.
Une seule procédure associée au bouton (devenu bouton de formulaire) s'occupe de tout, sans intermédiaire !
J'en ai profité pour ajouter au début une vérification sur le nom du classeur (et vérifier qu'il est ouvert). Ça c'est parce que sur tous les tests j'ai réussi à commencer par taper un faux nom !!!
Note qu'il était possible de faire la même chose en notant les colonnes sur la feuille... mais un Userform demeure plus élégant.
Cordialement.
Bonjour le forum
Bonjour MFerrand,
Merci beaucoup pour ce fichier, je ne m'y connais pas assez pour faire ce que tu à fais.
C'est impec et pile poil ce dont j'avais besoin car envoyé à untel un fichier avec telles colonnes, l'autre avec d'autres colonnes, puis lancer de des vérif encore avec d'autres colonnes...
La je peux modifier le fichier comme j'ai besoin
Merci beaucoup pour ta disponibilité et ton aide