Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA Tirer une Plage Nommee en fonction de la premiere colonne

  • Initiateur de la discussion Initiateur de la discussion patapock
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

patapock

Guest
Bonsoir.

Soit le tableau B3,D8 comportant les colonnes "NOM", "RENOM", "DATE DE NAISSANCE".
La plage contenant les données saisies (B4,D8) a été nommée "SM"

Quel serait la fonction qui permettrait de trier les lignes de la plage "SM" par ordre croissant de la colonne "NOM" ?

Je pensais a quelque chose comme:


Range("SM").Sort key1:=Range("???"), order1:=xlAscending​


Je ne sais pas quoi mettre a la place des ??? pour que le code fonctionne ?!

Merci de votre aide

Cordialement
 

Pièces jointes

Re : VBA Tirer une Plage Nommee en fonction de la premiere colonne

Bonjour patapock, le forum,
Une solution avec le fichier joint.
Cordialement,
Bernard
 

Pièces jointes

Dernière édition:
Re : VBA Tirer une Plage Nommee en fonction de la premiere colonne

Bonjour bbb38, et merci de répondre si vite.

C'est vrai que ta solution trie bien la première colonne ("B", en l'occurrence), mais ce n'est pas ce que je souhaite.

Je reformule le problème différemment, en mettant moins de données a disposition:


  • soit un tableau comprenant un certain nombre de lignes et de colonnes, que l'on a nommé "SM".

    Avec un bouton, comment trier les ligne de "SM" en ordre croissant en fonction de sa première colonne?

    On ne sait pas ou se trouve "SM" sur la feuille! 🙄


Je sais, c'est fourbe, mais, au lire de plusieurs posts sur la toile, dans une quête désespérée, il me semble que la solution ravirait nombre d'entre nous.
 
Re : VBA Tirer une Plage Nommee en fonction de la premiere colonne

Bonjour

En mettant ton tableau sous forme de vrai tableau excel
Ce lien n'existe plus

Code:
Sub trie()
With Worksheets("feuil1").ListObjects("tableau1")
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("tableau1[[#Headers],[#Data],[nom]]"), _
 SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With .Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With
End Sub

ce code reste valable quel que soit le nombre de lignes, de colonnes (c'est dynamique, pas besoin de plage nommée avec decaler ou autre).Tu peux bien sur renommer SM ce tableau 1 (en supprimant le nom que tu as déjà mis sinon conflit).
 

Pièces jointes

Re : VBA Tirer une Plage Nommee en fonction de la premiere colonne

Misange, merci pour ce modèle de code que je trouve très réussi.
La encore, tu contourne le problème, non?

Mon entêtement a vouloir traiter une "Plage Nommée", indépendamment de sa position, vient du fait que dans plusieurs de mes projets, j'utilise (ou vais utiliser) différents formulaires pour alimenter des tableaux "nommes". Par la suite, je souhaiterai reproduire des fragments de ces tableaux dans d'autres feuilles avec une mise en page qui m'est imposée (mêmes données, mais agencées différemment).

L’idée me parait séduisante, d'un bout de code facilement transposable en ne changeant qu'un nom (la plage nommée), insère une nouvelle ligne (enregistrement par formulaire) dans la bonne plage nommée, puis la classe alphabétiquement au bon endroit.

Pourquoi pas, non plus, alimenter différentes plages nommées dans différentes feuilles, en ne pressant qu'une fois sur un bouton "valider" de formulaire.

Mais peut être fais-je fausse route?
 
Re : VBA Tirer une Plage Nommee en fonction de la premiere colonne

Là où tu fais fausse route c'est en n’utilisant pas les tableaux alors que tu as excel 2010 🙂
Tu n'as plus besoin de plages nommées avec les tableaux. Ou plus exactement un tableau EST une plage nommée mais avec des tas d'autres avantages. Je t'incite à lire la page dont je t'ai donné le lien pour voir les nombreux avantages.
Un tableau peux très bien s'alimenter avec un formulaire par VBA (tu trouveras un exemple de code sur excelabo).
 
Re : VBA Tirer une Plage Nommee en fonction de la premiere colonne

salut

j'approuve pleinement le conseil donné par Misange 😀 de passer par un tableau et le tri peut être fait avec un code très simple :
VB:
Sub trie()
  [Tableau1].Sort [Tableau1[NOM]], 1, Header:=1
End Sub

le tableau nommé ainsi est trié en fonction de la colonne dont le titre suit, en ordre décroissant (2 pour l'autre) etsans toucher à la ligne des titres.

Remarque le code est indépendant de la position du tableau sur la feuille !
 
Re : VBA Tirer une Plage Nommee en fonction de la premiere colonne

Si...

Je teste ta méthode sans succès. Je pense avoir un problème de syntaxe.
Aurais-tu la gentillesse de joindre un fichier exemple?

Tri s'effectuant en cliquant sur un bouton qui valide un formulaire (dans mon cas, ajoutant un nouvel enregistrement dans "Tableau1".

-Plage de cellules concernées: appelée "Tableau1"
-Tri croissant en fonction de la colonne "Colone1"
-Pas d’entêtes de colonnes

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

E
Réponses
4
Affichages
775
Ethlios
E
G
  • Question Question
Réponses
1
Affichages
772
Grouchet
G
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…