+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2011
    Messages : 35
    Points : 0
    Points
    0

    Par défaut Associer Cellule à un code VBA + tri automatique

    Bonjour,

    Je souhaiterais avoir un tri automatique d'une colonne par simple clique sur un bouton.
    J'ai trouvé les codes en cherchant sur le net et sur le forum et pourtant j'ai une erreur.

    Je ne m'y connais pas en VBA mais je sais que certains membres avaient pu m'apporter leur aide en prenant de leur temps.

    J'espère ainsi que vous pourrez m'aider.

    Code pour Associer un Code VBA à une cellule:
    Code :
    1
    2
    3
    4
    5
    6
    7
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
     
        'macro à mettre
     
        End If
    Code pour faire un trie automatique que j'insère sous 'macor à mettre
    Code :
    1
    2
    3
    4
    Call Private Sub CommandButton1_Click()
        [C7:D660].Select
        Selection.Sort Key1:=Range("C7"), Order1:=xlAscending
        [C7].Select
    J'ai combiné les deux pour avoir:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
     
        'macro à mettre
    Call Private Sub CommandButton1_Click()
        [C7:D660].Select
        Selection.Sort Key1:=Range("C7"), Order1:=xlAscending
        [C7].Select
        End If
    Mais j'ai une erreur de synthaxe ou j'ai également eu le message qu' "un End Sub était attendu".

    Je précise que j'ai mis ce code en faisant un clique droit/Visualiser le code sur la feuille que je souhaite.

    J'ai des donnée sur la colonne C, celles-ci commencent en C7 (pour l'instant les données s'arretent en C19 mais je dois en rajouter un grand nombre), et je souhaite ajouter la cellule à cliquer pour le tri en C6.

    Merci d'avance.

  2. #2
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 9 261
    Points
    9 261

    Par défaut

    Bonjour,

    Ci dessous un code qui tri la colonne ou on fait le double click, le tableau commençant ligne 7 (ligne de titre)
    Code :
    1
    2
    3
    4
    5
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Range("A7:D" & Range("C" & Rows.Count).End(xlUp).Row).Sort Key1:=Cells(8, Target.Column), Order1:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End Sub
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2011
    Messages : 35
    Points : 0
    Points
    0

    Par défaut

    Super, ca fonctionne impec.
    UN grand merci pour ta rapidité et ton aide.

    Pourrais tu juste m'expliquer pourquoi tu as écris:
    Code :
    Range("A7:D" & Range("C" & Rows.Count)
    Juste à titre d'information si on veut "étendre la séelction" lors du tri que faudrait il rajouter au code?

  4. #4
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 9 261
    Points
    9 261

    Par défaut

    Code :
    Range("C" & Rows.Count).End(xlUp).Row
    Le code ci dessus retourne la dernière ligne utilisée de la colonne C.
    On utilise Rows.Count ce qui permet de rendre dynamique le nombre de lignes total d'une feuille et ainsi éviter d'avoir un nombre différent pour excel 2003 et excel 2007-2010
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  5. #5
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2011
    Messages : 35
    Points : 0
    Points
    0

    Par défaut

    En faite ma question portait surtout sur
    Je me demande sa car je souhaite commencer mon trie à partir de C7.

    Par défaut se trie "étend la sélection"?

  6. #6
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 9 261
    Points
    9 261

    Par défaut

    Le code commence le tri de la ligne 8 (on considère la ligne 7 comme titre) jusqu’à la dernière ligne utilisée
    Si le titre est ligne 6 adapte le code en remplacant 7 par 6 et 8 par 7
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  7. #7
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2011
    Messages : 35
    Points : 0
    Points
    0

    Par défaut

    D'accord, merci pour ces précisions.
    Vu que ce code compte des lignes, il étend la sélection lors du trie. Ce qui implique que toutes les lignes sont triées hors je souhaiterais que seule la colonne soient triées.

    Est ce possible? Après je ne te dérange plus.

  8. #8
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 9 261
    Points
    9 261

    Par défaut

    Voila
    Code :
    1
    2
    3
    4
    5
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Range(Cells(7, Target.Column), Cells(Range("C" & Rows.Count).End(xlUp).Row, Target.Column)).Sort Key1:=Cells(8, Target.Column), Order1:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End Sub
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  9. #9
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2011
    Messages : 35
    Points : 0
    Points
    0

    Par défaut

    super merci.
    Cela me sera très utile.

    Merci pour ton temps.

    Crdt

  10. #10
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2011
    Messages : 35
    Points : 0
    Points
    0

    Par défaut

    bonjour,

    je reviens vers toi car je souhaiterais une précision.
    Avec le code que tu m'as fourni pour le tri, dès que je fais un double clic dans ma colonne pour faire une modificatin de texte celui ci est trié.

    Est-il possible de localiser le tri à une cellule.

    Pour un tri en colonne B, commencant en B6, je souhaiterais un tri en double cliquant uniquement sur la cellule B5 par exemple. Tu trouveras mon fichier excel en PJ.

    Est ce possible?

    Normalement je n'ai pas attribué de tri à la colonne F mais pourtant dès que je clique sur une cellule de la colonne F il y a un tri...
    dans l'attente de ta réponse.
    merci
    Fichiers attachés Fichiers attachés

  11. #11
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 9 261
    Points
    9 261

    Par défaut

    En reprenant mon code plus haut

    On ne fait l'action que si la ligne double cliquer est la 5

    Code :
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      if Target.Row = 5 then
        Range(Cells(7, Target.Column), Cells(Range("C" & Rows.Count).End(xlUp).Row, Target.Column)).Sort Key1:=Cells(8, Target.Column), Order1:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
       end if
    End Sub
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  12. #12
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2011
    Messages : 35
    Points : 0
    Points
    0

    Par défaut

    Merci beaucoup.

    Et comment ca se fait que quand je double clic sur la colonne F celle ci se trie alors que je ne lui ais pas attribué de code?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Target.Row = 5 Then
        Range("A5:J" & Range("B" & Rows.Count).End(xlUp).Row).Sort Key1:=Cells(6, Target.Column), Order1:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        End If
    End Sub
    Private Sub Worksheet_BeforeDoubleClick2(ByVal Target As Range, Cancel As Boolean)
        If Target.Row = 5 Then
        Range("A5:J" & Range("C" & Rows.Count).End(xlUp).Row).Sort Key1:=Cells(6, Target.Column), Order1:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        End If
    End Sub
    Private Sub Worksheet_BeforeDoubleClick3(ByVal Target As Range, Cancel As Boolean)
        If Target.Row = 5 Then
        Range("A5:J" & Range("D" & Rows.Count).End(xlUp).Row).Sort Key1:=Cells(6, Target.Column), Order1:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        End If
    End Sub
    Private Sub Worksheet_BeforeDoubleClick4(ByVal Target As Range, Cancel As Boolean)
        If Target.Row = 5 Then
        Range("A5:J" & Range("G" & Rows.Count).End(xlUp).Row).Sort Key1:=Cells(6, Target.Column), Order1:=xlAscending, Header:= _
            xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        End If
    End Sub
    J'ai utilisé le code que tu m'avais fournit en en rajoutant un pour les colonnes que je souhaitais pouvoir trier.

    J'ai modifié cette ligne:
    Code :
    Range("A5:J" & Range("D" & Rows.Count).End(xlUp).Row).Sort
    en mettant A5:J car sinon le tri n'étendait pas la sélection et m'affichais un message d'erreur.

  13. #13
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 9 261
    Points
    9 261

    Par défaut

    Pourquoi toutes ces procédures ? Seule la première étant exécutéeWorksheet_BeforeDoubleClickX ?
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  14. #14
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2011
    Messages : 35
    Points : 0
    Points
    0

    Par défaut

    bin parce que ca ne fonctionnait pas quand je cliquais sur les autres cellules. Mais je viens d'essayer en supprimant le reste et c'est bon.

    C'est grâce Target.Row = 5 du coup.
    merci pour ton aide

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •