Classement par ordre alphabétique

Bonjour

Dans la création d'un modele de conception de données, j'ai fait un formulaire qui permet d'enregistrer un nouveau client.

Le hic est de le classer par Ordre alphabétique en recopiant la mise en forme de la ligne 3 dans la feuille "INFO_Clients", quelle(s) est/sont les méthoses/fonctions à utiliser ?

Merci

34brouillon.xlsm (79.67 Ko)

Bonsoir,

Un essai en pj.

Cdlt,

Darzou

Hello et merci

Ca fonctionne parfaitement lorsqu'on active le formulaire à partir du bouton sur la page Info_Clients (qui au départ servait juste de raccourci)

Mais si je suis à la page d'accueil, en cliquant "Fiche Client" + "Nouveau Client", le programme se met en erreur après avoir cliqué sur "Enregistrer".

Après je n'ai pas vraiement compris la fonction et la lecture du programme CustSort que tu utilises dans module 3 et son lien avec "A2" dans la USF Newclient.

Public Sub CustSort(ByVal DataName As Range, Data As Range, Crit_Cel As String, Order As Byte)
    Data.Sort key1:=Columns(DataName.Find(Crit_Cel).Column), order1:=Order, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub
 Debug.Print NumL
            CustSort .Rows("2"), .Rows("3:" & NumL), Range("a2"), 1
            .Select
16brouillon.xlsm (84.03 Ko)

Bonjour,

Ca ne plante pas chez moi...

Le fonction CustSort fonctionne ainsi:

DataName = Vos entêtes,

Data = Votre BDD

Crit_Cel = L'entête de référence pour le tri (ici A2 pour un tri selon la colonne A)

Order = L'ordre du tri (Ici 1 pour ascendant)

Public Sub CustSort(ByVal DataName As Range, Data As Range, Crit_Cel As String, Order As Byte)
    Data.Sort key1:=Columns(DataName.Find(Crit_Cel).Column), order1:=Order
End Sub

Vous pouvez enlever la ligne...

Debug.Print NumL

... elle ne sert à rien.

Cdlt,

Darzou

Edit: je n'avais pas vu... Rajoutez un "." devant range("A2")

CustSort .Rows("2"), .Rows("3:" & NumL), .Range("a2"), 1

Merci pour cette réponse rapide.

Donc pour faire simple sur CustSort:

DataName = Vos entêtes (c'est comme une ligne bordure regroupant toutes entêtes ou le tri est possible définissant en même temps la longueur de la zone de sélection)

Data = la largeur de la zone

Et pour le code dessous.

Data.Sort key1:=Columns(DataName.Find(Crit_Cel).Column), order1:=Order, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub

Key1 = commande qui défini le tri alphabétique une fois la sélection de l'entete (A2 ici)

Order1 = ordre ascendant avec (order =1)

OrderCustum = ?

MatchCase = ?

Orientation = tri de haut en bas

DataOption = ?

Le reste du code peut être supprimé.

    Public Sub CustSort(ByVal DataName As Range, Data As Range, Crit_Cel As String, Order As Byte)
        Data.Sort key1:=Columns(DataName.Find(Crit_Cel).Column), order1:=Order
    End Sub

Ce code est suffisant.

Avec:

DataName = La plage de vos entetes (dans votre fichier, la ligne 2 pour faire simple ou le range A2:Dernierecolonne2)

Data = Votre tableau (dans votre fichier, rows("3:" & NumL) pour simplifier ou bien le range A3:Dernierecolonne&NumL)

Pensez à rajouter le point "." devant range("a2") pour prendre en compte le range("a2") de la page où se trouve les données et non la page active.

Cdlt,

Darzou

Bonsoir,

Merci pour toutes ces explications.

Tout est clair, le problème est entièrement résolu.

Bonne continuation.

Hello

Je comprends pourquoi la dernière version ne plantais pas.

CustSort .Rows("2"), .Rows("3:" & NumL), .Range("a2"), 1
            .Select

Une fois que je remets actifs ca rebug et demande un debogage mais seulement quand je passe par l'activation du formulaire en page d'accueil .

Fiche Client >>> Nouveau Client

Mystère

34brouillon.xlsm (83.31 Ko)

Je ne vois pas non plus...

C'est sur Data que ça plante mais je ne comprends pas...

Bref, passez la ligne ".select" au dessus et ça fonctionnera mais sans donner de réponse au problème.

Cdlt,

Darzou

Effectivement,

Maintenant plus de soucis.

Merci et belle efficacité

Rechercher des sujets similaires à "classement ordre alphabetique"