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

Macros et VBA Excel Discussion :

VBA tri alphabetique entre 2 cellules contenant un texte specifique


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Points : 11
    Points
    11
    Par défaut VBA tri alphabetique entre 2 cellules contenant un texte specifique
    Bonjour a tous

    Je souhaite réaliser un tri par ordre alphabétique d'une plage de cellules en fonction de ma colonne A.
    Au début je ne devais trier qu'une certaine plage : des lignes A9 a A19 en fonction de la colonne A. Voici donc la macro que j'avais enregistre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub Tri()
    '
    ' Tri Macro
    '
     
    '
        Rows("9:19").Select
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range( _
            "A9"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Sheet1").Sort
            .SetRange Range("A9:K19")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    Cependant, je vais devoir a présent insérer assez souvent des lignes entre A9 et A19 et donc ma macro n'est plus valide. Je voudrais répéter cette opération un peu plus bas dans la colonne également.

    Exemple : Lignes fixes / Lignes susceptibles de changer du a des insertions

    A1 : TITRE 1
    A2 : valeur 1
    A3 : valeur 3
    A4 : valeur 4

    A5 : TITRE 2
    A6 : valeur 5
    A7 : valeur 6

    A8 : TITRE 3
    A9 : valeur 7
    A10 : valeur 8


    J'avais donc pense a utiliser la formule INDIRECT pour trier les valeurs comprises entre TITRE 1 et TITRE 2 puis entre TITRE 2 et TITRE 3 puis entre TITRE 3 et rien mais je ne sais pas du tout comment faire...

    Si je n'ai pas été assez claire, n'hésitez pas a me poser des questions.

    Merci beaucoup !!!!!

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    il te faut dans ce cas las la determiner les plages
    pour cela tu pourrais peut être commencer par chercher"TITRE" avec find et find next (avec pour argument "xlpart")(F1 te montre un exemple tout prêt )

    entre chaque find c'est une plage a trier
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup pour cette reponse tres rapide j'ai compris le but mais malheureusement je n'ai aucune idee de comment ecrire un tel code...

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    avec find et find next c'est assez complexe avec les xlprevious et xlnext et after etc.....

    je te propose une simple boucle

    analyse bien le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub test()
        With Worksheets(1)' sheets a adapter 
        Set plage = .Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row)' plage a adapter 
        For Each cel In plage.Cells
        If cel Like "*TITRE*" Then
        If i > 0 Then listeplage = listeplage & cel.Offset(-1, 0).Address & ","
        listeplage = listeplage & cel.Offset(1, 0).Address & ":"
           i = i + 1
            End If
        Next
        listeplage = listeplage & Split(plage.Address, ":")(1)
        End With
    plage_a_trier = Split(listeplage, ",")
    MsgBox plage_a_trier(0) 't'affiche dans un message l'adresse de la première plage a trier (0,1,2,3,4,etc......)
    'bref plage_a_trier(X) est une addresse de plage a trier
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Merci j'ai essaye de comprendre au mieux mais en vain...

    J'ai remplace Worksheets(1) par le nom de ma feuille, a1:a par ma plage de cellules a trier et TITRE par le nom de la cellule supérieure.

    Mais que dois-je mettre dans listeplage et plage_a_trier ? Y a-t-il autre chose a remplacer dans ce code ?

    Merci

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    il ne devrait avoir rien d'autre a remplacer

    apres pour faire tes tri
    tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with sheets("lenom que tu veux")
     for i =0 to ubound(plage_a_trier)
    .range(plage_a_trier(i)).sort.....'ou se que tu veux comme operation 
    next 
    end with
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Bon bah je suis nulle

    Une fois le code enregistré, lorsque j'appuie sur le bouton que j'ai inséré pour activer le code, il me met un message avec le numéro d'une cellule...

    Ou dois-je mettre le 2e code que tu viens de me donner aussi stp ?

    Ci-joint un exemple de mon problème
    Fichiers attachés Fichiers attachés

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    ton fichier est inaccessible !!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Mieux ?
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2010] Compter les cellules contenant du texte bleu
    Par ruliann dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/08/2012, 22h46
  2. [XL-2007] Supprimer cellules contenant du texte en format date
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2011, 10h18
  3. Réponses: 4
    Dernier message: 20/01/2010, 20h58
  4. Recherche une valeur dans cellules contenant du texte
    Par assiec dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2010, 12h01

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