IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Macro selection d'un champ de cellules et trier


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut Macro selection d'un champ de cellules et trier
    Bonjour,
    Je voudrais me servir d'une macro pour selectionner un champ de cellules en partant de A2 jusqu'à la cellule contenant ma dernière valeur (lignes et colonnes) puis les trier dans l'ordre alphabétique des valeurs d'une colonne de ce champ de cellules.

    Par exemple:

    Champ: de A2 à AI500 (cellule dans laquelle je trouverais la dernière valeur de mon tablleau), à trier dans l'ordre alphabétique des valeurs des cellules de la colonne AB.

    J'imagine que l'instruction du tri ne dois pas être compliquée et je la trouve en enregistrant une macro, j'ai lu pas mal de choses sur la recherche de la cellule contenant la dernière valeur d'un tableau mais n'arrive pas trop à réutiliser tout ça, enfin, je bloque complètement sur l'enchaînement des deux.


    Merci

  2. #2
    Membre chevronné
    Avatar de bifconsult
    Homme Profil pro
    Consultant
    Inscrit en
    Mars 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 189
    Par défaut
    Pour renvoyer la dernière cellule utilisée d'une colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dernier_rang = Cells(Cells.Rows.Count, x).End(xlUp).Row
    x étant le numéro de la colonne ou son appellation alphabétique (exemple pour la colonne B : 2 ou "B")

    Ensuite, pour le tri, lancer l'enregistreur de macro et adapter le code généré en remplaçant le numéro du dernier rang utilisé par la variable 'dernier_rang' (sans guillemets).

  3. #3
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Bonjour,

    La formule qu'a propose bisconfit est valable si toute tes colonnes ont la meme
    taille ou que tu connais la colonne la plus longue.

    Je te propose quelque chose de plus souple, qui te renvoie egalement la derniere colonne.
    Avec ceci, tu devrais avoir toutes les infos dont tu as besoins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Ligne_Premiere_Cellule = UsedRange.Rows.Row
        Nombre_De_Ligne = UsedRange.Rows.Count
     
        Colonne_Premiere_Cellule = UsedRange.Columns.Column
        Nombre_De_Colonne = UsedRange.Columns.Count
     
        Ligne_Derniere_Cellule = Ligne_Premiere_Cellule + Nombre_De_Ligne - 1
     
        Colonne_Derniere_Cellule = Colonne_Premiere_Cellule + Nombre_De_Colonne - 1

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Si je comprends bien, pour la première réponse, quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub XYZ()
     
    dernier_rang = Cells(Cells.Rows.Count, x).End(xlUp).Row
     
    ' J'insère le code pour le tri
     
    End Sub ?

    Pour la seconde, en revanche, je ne vois pas la syntaxe??? Il ne faut pas déclarer de variables.....


    Merci

  5. #5
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Bonjour,

    J'ai juste donné la syntaxe pour trouvé les 4 coins de ta zone utile (UsedRange).

    Après, à toi de les utiliser à bon escient.

    Au plaisir

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Attention avec la propriété "End".

    S'il y a des cellules vides dans la colonne scrutée, elle va renvoyer la dernière cellule occupée avant la première cellule vide, y compris si après cette cellule vide se trouvent d'autres cellules occupées.
    Il n'est donc pas possible de l'utiliser dans n'importe quel cas.

    Pour ce qui est du tri, voir la méthode Sort de l'objet Worksheet.
    Mais, comme le conseille bifconsult, il vaut mieux que tu fasses d'abord un petit coup d'enregistrement automatique de macro en faisant un tri "à la main" pour voir sa syntaxe car elle est un peu complexe et que l'aide Excel (ou plus exactement sa traduction) n'est pas très pratique pour ce type de syntaxes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Macro copier/coller et champ recherche + afficher cellule absolue.
    Par Spamev dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 31/07/2014, 14h54
  2. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 15h30
  3. d'un select vers un champ text
    Par alexander dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/03/2005, 14h14
  4. select sur un champ de type LONG
    Par ppd dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2004, 18h19
  5. Select * sauf un champ
    Par Hell dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/08/2004, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo