Filtre Alphabétique

Bonjour à tous,

J'ai une base de donnée avec un formulaire d'ajout, le problème c'est qu'il ajoute à la dernière ligne de mon tableau.... Je pense qu’insérer la ligne directement au bon endroit peut être dur m'y connaissant rien mais si c'est possible je suis preneur. Sinon :

Peut-on alors crée une macro qui tri ma base par ordre alphabétique d'abord dans B puis si et seulement c'est égal tri alphabétique C puis si et seulement si égal alors tri colonne D et enfin si encore pareil tri sur la colonne E. Cela correspond donc à ce que je voulais avec le bouton ajouter.

Voilà je vous remercie d'avance à ceux qui prendrons le temps de me lire

Bonne journée,

Bonsoir,

sans fichier ce n'est pas facile

un code ci-joint qui trie les colonnes à partir de la colonne B :E jusqu'à 100 lignes

Si votre ajout se met en bas du tableau, il sera imbriqué dans la liste

Pierrot

Sub Tri_B_E()
'
' Tri_B_E Macro
'5 colonnes et 100 lignes

' A1 = la 1ère cellule du tableau colonne A
    Range("A1:E100").Select

    ActiveWorkbook.Worksheets("Contacts").Sort.SortFields.Clear  'Nom de la feuille
    ActiveWorkbook.Worksheets("Contacts").Sort.SortFields.Add Key:=ActiveCell. _
        Offset(0, 1).Range("A1:A99"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal              'Colonne B
    ActiveWorkbook.Worksheets("Contacts").Sort.SortFields.Add Key:=ActiveCell. _
        Offset(0, 2).Range("A1:A99"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal              'Colonne C
    ActiveWorkbook.Worksheets("Contacts").Sort.SortFields.Add Key:=ActiveCell. _
        Offset(0, 3).Range("A1:A99"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal                'Colonne D
    ActiveWorkbook.Worksheets("Contacts").Sort.SortFields.Add Key:=ActiveCell. _
        Offset(0, 4).Range("A1:A99"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal              'Colonne E
    With ActiveWorkbook.Worksheets("Contacts").Sort
        .SetRange ActiveCell.Offset(-1, 0).Range("A1:E100")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveCell.Offset(-1, 0).Range("A1").Select
End Sub

Merci de votre aide malgré mon oublie de joindre le fichier. C'est vrai que sans fichier, dur de faire un code qui s'adapte au fichier.

En revanche une erreur d’exécution apparaît lorsque je lance le module.... C'est peut être moi qui est mal modifié le code...

Ci-joint mon fichier, qui est un test pour l'instant, avec votre code dans le module 3.

A bientôt

10test.xlsm (76.18 Ko)

Bonjour,

A quoi sert le bouton Valide dans le formulaire Modification ?

Pour entrer une nouvelle donnée, vous devez la placer sous la dernière ligne remplie du tableau, et ensuite, trier

après une modification, un tri est effectué

cela devrait être la même chose pour une nouvelle entrée

Amicalement

Pierrot

Votre fichier mis à jour à tester

18test-loris01.xlsm (84.26 Ko)

Merci beaucoup pour la macro, c'est parfaitement ce que je voulais

Pour vous répondre, le bouton valide (enfin ajouter) doit ajouter les données mises dans les textbox et combobox mais je ne sais pas programmer le bouton...

J'ai encore d'autre petite programmation à faire de ce style mais je ne veux pas tout demander d'un coup à la même personne.

A bientôt

Loris,

Bonsoir, LORIS

Si je peux t'aider, ce sera avec plaisir

Bon Week-end

Pierrot

C'est très gentil de votre part d'apporter votre aide, je vous mets mes idées d'amélioration mais je ne vous oblige en rien à toutes les faire bien entendu.

J'aimerais dans mon UserForm1 changer la combobox "Référence" en textbox car avoir une liste de 250 noms ce n'est pas top...

Toujours dans l'UserForm1 est-ce possible d'avoir une combobox pour "continent" et des options boutons (Plastique ou Verre) pour la catégorie "Matière" (Petit ou Grand) pour la catégorie "Grandeur". Je pense que les textboxs restent la meilleur solution pour les autres catégories.

Cette programmation me paraît plus difficile mais si vous savez, je suis preneur :

J'ai créé une macro qui tri dans l'odre alphabétique les colonnes B,C,D,F,G,H,I,J,K de la feuille 3 (qui sert pour les combobox de mes 2 formulaires) mais j'aimerais avant d'effectuer celle-ci une autre macro (ou la même complétée) qui en cas de nouvelles ajout ou modification avec de nouveaux pays, ville,forme ect... s'ajoutent dans la colonne du même nom.

Par exemple : J'ajoute une ligne de données via le formulaire avec un nouveau pays comme la Suisse, et bien je voudrais que ce pays se rajoute à la liste de la feuille 3 et puis grâce à l'autre macro déjà faîtes, se rangent dans l'autre alphabétique. Idem si il y a une nouvelle ville, forme, année...

Je vous mets ci-joint le fichier que j'ai amélioré (bouton ajouter programmé, et quelques petits détails)

Je me répète mais je ne veux absolument pas vous déranger, vous faîtes ce que vous voulez quand vous pouvez.

Bonne soirée

Loris

5test-loris01.xlsm (75.23 Ko)

Bonsoir, LORIS01

a tester, mais je dois encore améliorer

et expliquer ce que j'ai modifier

à plus tard

Amitiés

Pierrot

Bonsoir,

L'idée du double clique pour ouvrir le formulaire fonctionne très bien.

En revanche le formulaire 1 ne fonctionne plus, la combobox "continent" affiche Afrique quoiqu'on choisisse. De plus les valeurs des autres textbox s'affichent en fonction du "continent" ce qui n'est pas pratique car il y a plusieurs choix. Dans ce formulaire, je voudrais que les valeurs s'affichent uniquement en fonction de la "Référence" (qui est unique) et non du continent.

Pour les recherches, j'utilise l'autre formulaire filtre, ou le bouton Manuel de la feuille 2 donc pas besoin de transformer le premier formulaire en outil de recherche. Je préfère avoir 2 formulaires bien distinct, Le premier pour ajouter, modifier, supprimer des données et le deuxième pour rechercher en fonction de tous les critères dont je dispose.

Mais bon, comme vous l'avez précisez, vous n'avez pas finis je suis sûr que le formulaire marchera une fois toute la programmation finis.

Un grand merci à vous pour ce premier jet

Bonne soirée,

Loris

Ps: il y a un bout de code sur une base véhicule avec park, je pense que c'est une erreur.

Bonsoir, LORIS

j'ai modifié quelques lignes de code

j'ai testé l'ajout, la modification, la suppression, et tout fonctionne,

tu as beaucoup de doublons dans ta base " un tunisien sur un chameau " par exemple

j'ai fait une nouvelle macro Tri du tableau1 en tenant compte des N°s de références

après chaque modification, ajout ou suppression, le programme exécute une sauvegarde

Tu testes et tu me dit ce qu'il faut changer

Amitiés

Pierrot

Bonsoir,

J'ai un problème avec la base... Elle a du subir un bug, car en effet il y a pas mal de doublons. De plus les étiquettes Continents Pays Ville/Région ont disparu ce qui provoque un échec des macros tris... J'ai beaucoup de mal à m'y retrouver avec ces changements involontaires...

J'ai essayé de reprendre vos codes et de les mettre sur ma base d'origine afin de reprendre les vrai données mais je dois me planter sur certains modules car je n'arrive pas à faire fonctionner l'userform ou autre macro...

Je vous remets ci-joint ma base d'origine si vous pouvez transvaser les codes/userforms (qui pour ce que j'ai pu tester m'ont l'air vraiment bien) vous y arriverez beaucoup mieux que moi je n'en doute pas.

Niveau amélioration : il me semble que dans le formulaire les valeurs s'affichent en fonction de la référence comme souhaité mais également en fonction du continent, je voudrais vraiment que toutes les données s’affichent uniquement en fonction de la référence, la combobox "continent" sert uniquement à choisir en cas d'ajout ou modif' mais pas à rechercher.

Questions : L'idée de sauvegarder peut être utile mais y a t il un endroit pour la retrouver plus tard ?

Votre idée de trier par référence est également super, mais je n'ai pas su comment l'activer et surtout comment revenir à ma base en tri alphabétique ?

Je suis un peu gêné de vous posez toutes ces questions je voudrais vraiment pas vous déranger... si vous n'avez pas le temps je le comprendrais volontiers.

Merci en tout cas pour vos idées et programmation

Amitié

Loris

8test-loris01.xlsm (75.23 Ko)

Bonjour, Loris,

pour moi, tout fonctionne, un ajout, avec tri sur la référence

une modification, une suppression

mais je ne comprends pas les tris BCDE

Pourquoi ne pas trier tout ensemble

j'ai rajouté les boutons d'options matière et grandeur

Tu testes et tu me fais part de tes remarques

Amitiés

Pierrot

Bonjour Pierrot,

Tout d'abord merci on se rapproche vraiment de ce que j'imaginais pour ma base.

J'ai pu tester bien tester le fichier, j'ai apporté quelques retouches au niveau de ma base dont principalement l'arrêt du filtre référence après des ajouts ou modifications. En revanche, ce filtre étant très utile dans certains cas en terme de visibilité je l'ai associé à un bouton en dessous de celui qui filtre B à E. Pour vous répondre d'ailleurs à ce sujet, je voulais un filtre BCDE car je préfère avoir une base en ordre alphabétique que ranger par référence (question de goût bien sûr).

Par contre, il y a un problème concernant l'ajout, voici ce qui s'affiche : //La méthode "_default" de l'objet range a échoué// et ensuite le fichier s'arrête. J'ai même pas le temps de voir le débogage pour essayé de résoudre le bug.

Si vous avez le temps de jeter un coup d'oeil sur le formulaire filtre de la feuille 2, je n'arrive pas à descendre les boutons "valider" et "fermer" dans l'userform. En tout cas même en les baissant visuellement il reste au même endroit.

Sinon tous les autres boutons marchent parfaitement !

A bientôt,

Loris

15base-2.xlsm (89.06 Ko)

Bonsoir Loris,

Pour une nouvelle entrée, j'ai un problème avec la référence colonne A

comment attribues-tu cette référence ?

si j'efface la référence, l'UserForm m'affiche les "en-têtes de colonnes pour une nouvelle entrée

sinon les modifications cela fonctionnent

je ne sais pas faire autre chose, désolé, j'ai testé avec le fichier Base 2

Amicalement

Pierrot

Re-bonsoir,

Pour attribuer la référence, je prends les codes pays en 2 lettres utilisé par l'OTAN puis j'attribue le chiffre montant de +1 à chaque ajout

Ex : Ca_003 (Canada n°3) puis Ca_004 (Canada n°4)

De plus dans la colonne A il y a une validation de donné qui n'accepte aucun doublon.

Amitiés

Loris


PS : Effectivement j'ai remarqué qu'en cas de nouvelle référence les en-tête s'affichent, c'est pour ça que j'avais crée un bouton effacer qui supprime le texte de toutes les textboxs afin de saisir les valeurs plus rapidement.

Merci pour tes explications, que puis-je faire d'autre ?

comment sais-tu quel N° sera le suivant dans une série ?

Bonne soirée

Pierrot

Avez-vous le problème au moment de l'ajout de données chez vous ? Car j'ai réessayé ce soir et pas moyen de faire un ajout... très bizarre... surtout que c'est le seul bouton qui plante.

Sinon ma dernière idée pour automatiser la base entièrement, si vous savez faire, c'est de créer une macro pour extraire les données sans doublon de chaque colonne de ma base pour les mettre dans la feuille 3 afin de faire une liste (c'est déjà le cas mais je fais l'extraction manuellement à chaque ajout). Ensuite grâce à votre code de la feuille 3, cette liste se mettra dans l'ordre alphabétique.

Bonne soirée et encore merci pour tous ce que vous avez déjà fais

Loris

tu n'as pas répondu à ma question : comment choisir le N° référence ?, c'est la seule chose qui cloche chez moi pour un ajout.

Bonne soirée

Pierrot

Ah oui excusez moi, les numéros sont dans l'ordre croissant de 1 en 1. Donc si il existe dans la série Turquie "Tu_001" le prochain ajout turque sera forcément Tu_002. C'est toujours le dernier chiffre du pays +1. Si le dernier de la France est Fr_122 alors le prochain ajout France sera Fr_123 obligatoirement.

Je ne peux juste pas savoir dans quel pays sera le prochain ajout.

J’espère vous avoir répondu,

Bonne soirée,

Loris

Bonjour, Loris,

comment savoir quel numéro porte la dernière entrée de la France par exemple ?

ceci dit, j'ai bien dormi

Pierrot

Rechercher des sujets similaires à "filtre alphabetique"