Précédent   Forum du club des développeurs et IT Pro > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 29/05/2012, 13h16   #1
Razekiel_
Invité de passage
 
Homme
Étudiant
Inscription : 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.
Razekiel_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2012, 13h43   #2
jfontaine
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 4 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 39
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 4 598
Points : 9 266
Points : 9 266
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

Citation:
"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.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 29/05/2012, 14h07   #3
Razekiel_
Invité de passage
 
Homme
Étudiant
Inscription : 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
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?
Razekiel_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2012, 14h45   #4
jfontaine
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 4 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 39
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 4 598
Points : 9 266
Points : 9 266
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

Citation:
"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.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2012, 15h30   #5
Razekiel_
Invité de passage
 
Homme
Étudiant
Inscription : 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
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"?
Razekiel_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2012, 15h40   #6
jfontaine
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 4 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 39
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 4 598
Points : 9 266
Points : 9 266
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

Citation:
"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.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2012, 16h00   #7
Razekiel_
Invité de passage
 
Homme
Étudiant
Inscription : 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
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.
Razekiel_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2012, 16h07   #8
jfontaine
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 4 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 39
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 4 598
Points : 9 266
Points : 9 266
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

Citation:
"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.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 29/05/2012, 16h25   #9
Razekiel_
Invité de passage
 
Homme
Étudiant
Inscription : 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
super merci.
Cela me sera très utile.

Merci pour ton temps.

Crdt
Razekiel_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2012, 11h40   #10
Razekiel_
Invité de passage
 
Homme
Étudiant
Inscription : 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
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
Type de fichier : xls Suivi et Historique des interventions.xls (30,0 Ko, 1 affichages)
Razekiel_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2012, 12h10   #11
jfontaine
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 4 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 39
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 4 598
Points : 9 266
Points : 9 266
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

Citation:
"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.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2012, 12h31   #12
Razekiel_
Invité de passage
 
Homme
Étudiant
Inscription : 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
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.
Razekiel_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2012, 13h50   #13
jfontaine
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 4 598
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 39
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 4 598
Points : 9 266
Points : 9 266
Pourquoi toutes ces procédures ? Seule la première étant exécutéeWorksheet_BeforeDoubleClickX ?
__________________
Jérôme

Citation:
"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.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2012, 13h59   #14
Razekiel_
Invité de passage
 
Homme
Étudiant
Inscription : 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
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
Razekiel_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h39.


 
 
 
 
Partenaires

Hébergement Web