Tri d'ordre alphabétique ComboBox mais autres données plus associées
Bonjour,
J'ai un petit soucis et j'espère que quelqu'un aura la solution.
J'ai créé un formulaire me permettant de renseigner des données dans un tableau, j'ai donc admettons 3 colonnes A, B, C (pour l'exemple) et mes données commencent ligne 4.
Le formulaire me renseigne pour chaque colonne (A: le nom, B: le type, C: une date)
J'ai créé une Combobox me permettant de récupérer pour chaque noms les informations contenues dans les cases correspondantes en B et C, de le insérer dans le formulaire, ce qui me permet de les voir, de les modifier et à l'aide d'un bouton modifier les renvoyer dans le tableau.
Jusqu'ici pas de soucis.
Cependant mes données s'accumulent et je voudrais trier par ordre alphabétique mes noms dans la combobox pour les trouver et modifier plus facilement si nécessaire, j'ai trouvé des solutions je les ai testé, pas de soucis tout est bien trié MAIS les données qui me sont renvoyées dans le formulaire des colonnes B et C sont fausses, les données en B et C ne suivent pas le tri.
Je ne sais vraiment pas comment m'y prendre.
Je vous joins le fichier en exemple si vous voulez essayer directement dedans, ou comprendre le système.
Je suis débutant VBA il se peut que vous soyez choqué par le codage ^^
Merci
Bonjour,
L'idéal aurait été d'avoir la référence de votre document. Est-ce possible car je ne vois aucune colonne à ce sujet
Dans votre sub initialize, pensez à déclarer vos variables -->
Dim ws As Worksheet
Dim j As Integeret changer ceci en dessous
Set ws = Worksheets("Données brutes")Il n'y a pas de référence, c'est un fichier qui me sert à rentrer des données. La partie en bleu du tableau est concernée.
Le bouton me sert à ajouter des informations ou à les modifier.
Si je modifie je veux pourvoir retrouver mon document trier en ordre l'alphabétique dans la Combobox mais que également en sélectionnant ce nom de document les informations ( de date et de type) qui lui sont associées dans les colonnes suivantes s'affichent correctement. Or quand j'ai essayé j'arrive à réaliser le tri, je sélectionne un document mais ca ne me renvoi pas la date qui lui était associée au préalable comme si le tri triait la colonne A mais pas le reste en même temps.
Et je n'y arrive pas
Je vous renvoi le document avec des exemples complété peut être que vous comprendrez mieux.
Veillez à mettre à jour le profil de votre compte sur ce forum. On ne sait pas quelle version d'excel vous utilisez. (excel 365, 2019, excel MAC 2011...)
Il n'y a pas de référence, c'est un fichier qui me sert à rentrer des données
Si vous restez tel quel dans la base, alors il y a moyen de trouver une solution mais si par exemple vous avez deux fois TARTE dans votre combo...
Impossible ou pas d'avoir deux fois le même nom ?
Bonjour,
De retour sur le pc je regarderai la version pour mettre à jour mon profil mais il s’agit d’une version assez récente.
En effet dans mon exemple je n’ai pas précisé, il est impossible d’avoir 2 fois le même nom.
Bonjour,
En effet dans mon exemple je n’ai pas précisé, il est impossible d’avoir 2 fois le même nom.
Votre fichier en retour dans lequel :
- A l'ouverture de l'USF, la macro initialize assurera aussi le tri par ordre alphabétique de la colonne A de votre tableau. Le code est pplacé dans l'USF mais si vous voulez avoir la possibilité de l'utiliser seul, vous pouvez le placer dans le module 1 en enlevant le mot "Private". Il sera également appelé à l'ouverture de l'USF.
- j'en ai profité pour adapter les codes Initialize ainsi que les codes Ajouter et Modifier (pour faire plus court et simple)
Si ok pour vous
Cordialement
Bonjour,
N'étant pas expert de VBA j'ai pris le temps de lire et de comprendre votre code surtout si j'ai besoin d' faire d'autres modifs. C'est super merci!!
J'ai juste un petit problème quand je clique sur mon bouton il y a une erreur, il me demande de débugger et l'erreur qui apparait est la suite, je vous met la photo.
Je ne comprends pas pourquoi il refuse de charger le formulaire.
Pour la version Excel j'ai regardé il s'agit de Microsoft Excel 2013.
Merci
Bonjour,
Vous avez surement une erreur dans la Private sub Initialize de votre Userform.
Vérifiez déjà le nom de l'userform c'est bien Userform1 ?
Avez-vous testé sur le fichier que j'ai posté ?
Edit : Pensez à faire du pas à pas dans l'exécution du code. pour ce faire : Click sur la ligne du code "renseignementdonnees" puis appuyez sur F8 (ou FN + F8) pour exécuter chaque ligne du code. Vous allez directement voir sur quelle ligne le code bugue
Bonjour,
En effet il manquait un "1" dans l'initialisation.
J'avais adapté votre code directement dans mon fichier et dans le mien il manquait également le 1 mais le formulaire s'exécutait quand même, je ne sais pas pourquoi .
Maintenant que je rajoute "UserForm1_Initialize", mon formulaire s'ouvre bien (que ça soit dans votre fichier ou le mien), mais il n'y a pas les noms dans la combo box et les champs ne sont pas préremplis alors qu'avec l'erreur "UserForm" tout était préremplis et le formulaire allait chercher les données. Je ne comprends plus.
Du coup je ne peux pas vérifier si le tri marche.
J'ai essayé avec votre fichier ça ne fonctionne pas également.
Et autre petite question je souhaiterai que les dates qui s'affiche soit à droite dans les cases, que dois-je entrer dans le code pour effectuer celà?
Merci à vous pour votre grande aide.
Maintenant que je rajoute "UserForm1_Initialize", mon formulaire s'ouvre bien (que ça soit dans votre fichier ou le mien), mais il n'y a pas les noms dans la combo box et les champs ne sont pas préremplis alors qu'avec l'erreur "UserForm" tout était préremplis et le formulaire allait chercher les données. Je ne comprends plus.
mais pourquoi UserForm1_Initialize ???
Dans le fichier que j'ai posté vous avez quoi ?
J'ai essayé avec votre fichier ça ne fonctionne pas également.
Pas possible. Voilà ce que j'ai avec le fichier posté en cliquant sur le bouton
Et autre petite question je souhaiterai que les dates qui s'affiche soit à droite dans les cases, que dois-je entrer dans le code pour effectuer celà?
Non pas de code nécessaire. Il vous suffit de sélectionner le textbox de date et aller dans la propriété Textalign de l'objet et de modifier en prenant l'option 3
L'erreur n'est peut-être pas là.
Désactivez l'instruction CALL TRI pour vérifier
Edit :
1. aussi autre chose puisque votre fichier posté n'est pas le bon fichier, copiez tous les codes qui se trouvent dans l'userform et collez-les dans l'userform de votre fichier.
2. vérifiez aussi dans le gestionnaire de noms que votre tableau structuré est bien nommé "Tableau2"
J'ai désactivé l'instruction call tri, mais rien ne change.
Je vous joins le fichier originel celui sur le quel je travaille.
J'ai vérifié il s'agit bien du tableau 2.
J'ai fais pas mal de test mais rien n'y change
J'aurai quelques autres petites questions mais c'est vraiment du détails je voudrais arriver à régler ce problème avant : ).
J'espère que ça ne vous embête pas trop.
Aucun problème dans votre fichier. Simplement que vous ne lisez pas bien ce que je vous ai écrit ! --> https://forum.excel-pratique.com/s/goto/1101991
mais pourquoi UserForm1_Initialize ???
Dans le fichier que j'ai posté vous avez quoi ?
Code différent dans votre fichier de celui montré ici https://forum.excel-pratique.com/s/goto/1101995 .
J'aurai quelques autres petites questions mais c'est vraiment du détails je voudrais arriver à régler ce problème avant
A vous relire sur ces points
Bon tout charge bien, mais si j'active le call tri ce coup ci il m'affiche.
Aucun souci chez moi sur votre fichier
Par contre Call tri est placé au début du code comme montré ici --> https://forum.excel-pratique.com/s/goto/1101995 .
edit : Je vous rappelle vous avoir écrit :
- de mettre votre profil excel à jour. Cela peut jouer des tours selon les versions
- si vous voulez savoir à quel endroit cela bugue --> pensez à faire du pas à pas (voir mes explications ce matin dans "Edit" --> https://forum.excel-pratique.com/s/goto/1101963)
Bon, je ne sais pas alors :/
Surement ma version d'Excel qui est trop ancienne, je ne sais pas. Je crois que je vais devoir laissé tomber.
Sinon j'avais juste quelques petites autres questions, j'essai depuis ce matin mais rien de concluant :
- Je voudrais que si l'on ne rentre pas de date dans une case (que ça soit pour ajouter ou modifier) alors pas de soucis rien ne se passe l'excel restera vide, mais si on rentre une date et quelle n'est pas au format "dd/mm/yyyy" alors une message d'erreur apparaissent (exemple si on rentre 23/071/2000)
Autre petite chose quand je commence à taper dans ma Combobox un nom admettons commençant pas F, alors il va sélectionner les données du premier document F déjà existant mais si je continu à taper le nom pour rentrer un document non existant il conserve ces données dans le formulaire, il faut les enlever à la main ce qui est embêtant. Est-il possible de ne pas conserver ces données quand on continu à rentrer un nom.
Concernant l'erreur sur le tri je vais chercher voir si je trouve quelques choses qui m'explique pourquoi ça ne fonctionne pas.
Autre petite chose dans votre code si je souhaite modifier le type de document celà ne fonctionne pas est ce normal? Sinon je reprends mon ancien code
Merci beaucoup en tout cas pour votre aide
Surement ma version d'Excel qui est trop ancienne, je ne sais pas. Je crois que je vais devoir laissé tomber.
Concernant l'erreur sur le tri je vais chercher voir si je trouve quelques choses qui m'explique pourquoi ça ne fonctionne pas.
Les questions restent. C'est quoi votre version ? et avez-vous testé pas à pas ?
Sans cela on n'avance pas là...
suggestion pour le tri : Faite un enregistrement automatique du code de tri puis postez le ici que je regarde
Autre petite chose quand je commence à taper dans ma Combobox un nom admettons commençant pas F, alors il va sélectionner les données du premier document F déjà existant mais si je continu à taper le nom pour rentrer un document non existant il conserve ces données dans le formulaire, il faut les enlever à la main ce qui est embêtant. Est-il possible de ne pas conserver ces données quand on continu à rentrer un nom.
Si je comprends lorsque vous entrez des données mais qu'au final le document n'existe pas dans la liste vous devez effacer.
Si cela vous convient on peut réinitialiser en faisant un double click dans la combo par exemple.
Autre petite chose dans votre code si je souhaite modifier le type de document celà ne fonctionne pas est ce normal? Sinon je reprends mon ancien code
C'est à dire ? Donnez un exemple que je le reproduise
Concernant ma version j'ai ceci,
J'ai effectué le pas à pas, l'erreur apparait après cette ligne si je press F8.
Pour être plus clair je vais vous mettre des images en même temps.
J'ouvre le formulaire, puis je veux taper admettons "FFF", dès que je tape le premier F le formulaire trouve un document existant et complètent avec ces données, si je tape un autre F il va complété avec les données d'un document existant nommé "FF" jusqu'à ce qu'aucun document ne portent le même nom, sauf que quand c'est le cas il conserve les données du dernier document.
J'ai fais un petit code qui permet d'effacer les données lors d'un nouveau doc, ca fera l'affaire.
Le code pour remplacer me permet à la création d'un nouveau fichier de cliquer dans "Date de demande" et d'effacer tout le reste
Cette question est donc clause.
Pour le dernier point si dans le formulaire je sélectionne le document "F00049" qui est cocher en temps que formulaire, et que je veux le passer en liste celà ne fonctionne pas, quand je coche et que je fais modifier il reste en formulaire



