Macro tri tableau - pb-
Résolu
benji71
Messages postés
738
Date d'inscription
Statut
Membre
Dernière intervention
-
benji71 Messages postés 738 Date d'inscription Statut Membre Dernière intervention -
benji71 Messages postés 738 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous et toutes,
j'espère que vous allez bien.
je poste ce message car j'ai un souci avec l'éxécution de ma macro.
cherchant à faire un tri dans le sens plus petit plus gard, j'ai trouvé cette macro que j'ai mis sur ma woorkdsheet :
rivate Sub Worksheet_Change(ByVal Target As Range)
Static EnCours As Boolean 'Evite l'effet de boucle sur l'évènement Change()
If EnCours Then Exit Sub
If Not Application.Intersect(Target, Range("k3:l35")) Is Nothing Then
EnCours = True
Range("k3:l35").Sort Key1:=Range("l2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
EnCours = False
End If
End Sub
le hic, c'est que ne s'applique pas..."Ah ! voila les petits futés qui vont "piqué" les macros des autres et quine savent pas l'utiliser :-)"
je suis sur que parmi vous il y a des petits "bisons" qui auront la solution..
je joins le fichier histoire que je sois compris par le plus grand nombre : https://www.cjoint.com/?3GttaIk1ewU
merci de votre aide et très bonne soirée à vous,
cdlmnt,
berni///
j'espère que vous allez bien.
je poste ce message car j'ai un souci avec l'éxécution de ma macro.
cherchant à faire un tri dans le sens plus petit plus gard, j'ai trouvé cette macro que j'ai mis sur ma woorkdsheet :
rivate Sub Worksheet_Change(ByVal Target As Range)
Static EnCours As Boolean 'Evite l'effet de boucle sur l'évènement Change()
If EnCours Then Exit Sub
If Not Application.Intersect(Target, Range("k3:l35")) Is Nothing Then
EnCours = True
Range("k3:l35").Sort Key1:=Range("l2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
EnCours = False
End If
End Sub
le hic, c'est que ne s'applique pas..."Ah ! voila les petits futés qui vont "piqué" les macros des autres et quine savent pas l'utiliser :-)"
je suis sur que parmi vous il y a des petits "bisons" qui auront la solution..
je joins le fichier histoire que je sois compris par le plus grand nombre : https://www.cjoint.com/?3GttaIk1ewU
merci de votre aide et très bonne soirée à vous,
cdlmnt,
berni///
A voir également:
- Macro tri tableau - pb-
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Tableau croisé dynamique - Guide
10 réponses
Bonjour,
Range("k3:l35").Sort Key1:=Range("l2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Key1:=Range("l2") : non, c'est en dehors de ta plage. Donc L3 (ou K3 si tu veux trier par nom)
Header:=xlYes : non, tu n'as pas de ligne de titre, donc xlno
Range("k3:l35").Sort Key1:=Range("L3"), Order1:=xlAscending, Header:=xlNo
devrait suffire.
eric
Range("k3:l35").Sort Key1:=Range("l2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Key1:=Range("l2") : non, c'est en dehors de ta plage. Donc L3 (ou K3 si tu veux trier par nom)
Header:=xlYes : non, tu n'as pas de ligne de titre, donc xlno
Range("k3:l35").Sort Key1:=Range("L3"), Order1:=xlAscending, Header:=xlNo
devrait suffire.
eric
bonjour eriiic, bonjour à tous,
merci à vous de m'avoir répondu. mais visiblement il y a qq chose que j'ai pas compris car cela ne fonctionne pas. voici le macro que je placé :
Private Sub Worksheet_Change(ByVal Target As Range)
Static EnCours As Boolean 'Evite l'effet de boucle sur l'évènement Change()
If EnCours Then Exit Sub
If Not Application.Intersect(Target, Range("k3:l35")) Is Nothing Then
EnCours = True
Range("k3:l35").Sort Key1:=Range("L3"), Order1:=xlAscending, Header:=xlNo
EnCours = False
End If
End Sub
mais ,cela n'a pas d'effet.. :-(
je ne comprends pas...
l'objectif es de trier la tableau sur base de la colonne L mais ça prends pas...
aurai-je commis une erreur ?
merci de votre aide...
cdlmnt,
berni//
merci à vous de m'avoir répondu. mais visiblement il y a qq chose que j'ai pas compris car cela ne fonctionne pas. voici le macro que je placé :
Private Sub Worksheet_Change(ByVal Target As Range)
Static EnCours As Boolean 'Evite l'effet de boucle sur l'évènement Change()
If EnCours Then Exit Sub
If Not Application.Intersect(Target, Range("k3:l35")) Is Nothing Then
EnCours = True
Range("k3:l35").Sort Key1:=Range("L3"), Order1:=xlAscending, Header:=xlNo
EnCours = False
End If
End Sub
mais ,cela n'a pas d'effet.. :-(
je ne comprends pas...
l'objectif es de trier la tableau sur base de la colonne L mais ça prends pas...
aurai-je commis une erreur ?
merci de votre aide...
cdlmnt,
berni//
le problème pourrait-il provenir du fait qu'il y a des les cellules k3:k35 une formule ?
j'ai essayé sur un autre tableau et sans formule et ça semble sauf que le classement ne se fait pas du plus élevé au moins élevé mais du mois élevé au plus élevé.
j'ai essayé sur un autre tableau et sans formule et ça semble sauf que le classement ne se fait pas du plus élevé au moins élevé mais du mois élevé au plus élevé.
Bonjour,
dans la colonne L (difficile de savoir si c'est I majuscule ou L miniscule!!!) tu as
une formule
L'événement "change" ne réagit que sur saisie et non sur calcul d'une cellule...
dans la colonne L (difficile de savoir si c'est I majuscule ou L miniscule!!!) tu as
une formule
L'événement "change" ne réagit que sur saisie et non sur calcul d'une cellule...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour michel_m,
j'ai une formule en l3:l35.
voici le fichier avec la modification proposé par eriiic :https://www.cjoint.com/?3Gula7nYcgJ
merci pour votre aide
cdlmnt,
berni////
j'ai une formule en l3:l35.
voici le fichier avec la modification proposé par eriiic :https://www.cjoint.com/?3Gula7nYcgJ
merci pour votre aide
cdlmnt,
berni////
Bonjour à tous,
voici le fichier avec la modification proposé par eriiic
Non, j'avais mis Key1:=Range("L3") et tu as laissé Key1:=Range("L2")
sauf que le classement ne se fait pas du plus élevé au moins élevé mais du mois élevé au plus élevé.
Ca trie dans l'ordre que tu lui indiques : Order1:=xlAscending
Si tu te mettais sur .Sort et que tu faisais F1 ?
Et comme dit michel :
L'événement "change" ne réagit que sur saisie et non sur calcul d'une cellule...
Donc soit tu revalides une des cellule de K3:L35 (mets tes ref en majuscule stp), soit tu mets ta macro sur un bouton, soit tu supervises les cellules nécessitant un nouveau tri (colonnes D et/ou E sans doute)
eric
voici le fichier avec la modification proposé par eriiic
Non, j'avais mis Key1:=Range("L3") et tu as laissé Key1:=Range("L2")
sauf que le classement ne se fait pas du plus élevé au moins élevé mais du mois élevé au plus élevé.
Ca trie dans l'ordre que tu lui indiques : Order1:=xlAscending
Si tu te mettais sur .Sort et que tu faisais F1 ?
Et comme dit michel :
L'événement "change" ne réagit que sur saisie et non sur calcul d'une cellule...
Donc soit tu revalides une des cellule de K3:L35 (mets tes ref en majuscule stp), soit tu mets ta macro sur un bouton, soit tu supervises les cellules nécessitant un nouveau tri (colonnes D et/ou E sans doute)
eric
bonjour eriiic,
merci de votre réponse. désolé de répondre seulement maintenant mais j'ai eu des souci d'accès à l'internet (mon pc me lâche).
j'ai bine compris votre message. en résumé si je comprends bien ma macro doit devenir :
Private Sub Worksheet_Change(ByVal Target As Range)
Static EnCours As Boolean 'Evite l'effet de boucle sur l'évènement Change()
If EnCours Then Exit Sub
If Not Application.Intersect(Target, Range("K3:L35")) Is Nothing Then
EnCours = True
Range("K3:L35").Sort Key1:=Range("L3"), Order1:=Descending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
EnCours = False
End If
End Sub
mais celle-ci ne marche" pas car j'ai des formules dans ma colonne L.
correct ?
si je veux appliquer une macro je dois :
soit créer un bouton pour mettre la macro,
soit je passe par une autre colonne pour appliquer la macro
soit et là j'ai pas compris, je "revalide une des cellule de K3:L35" qu'entendez-vous par revalidez ?
je reposte le fichier : https://www.cjoint.com/?3GvtcSBdX0Z
mais je crois que les carottes sont cuites :-) (comme ça je le sais pour la prochaine)
très cdlmnt,
berni///
merci de votre réponse. désolé de répondre seulement maintenant mais j'ai eu des souci d'accès à l'internet (mon pc me lâche).
j'ai bine compris votre message. en résumé si je comprends bien ma macro doit devenir :
Private Sub Worksheet_Change(ByVal Target As Range)
Static EnCours As Boolean 'Evite l'effet de boucle sur l'évènement Change()
If EnCours Then Exit Sub
If Not Application.Intersect(Target, Range("K3:L35")) Is Nothing Then
EnCours = True
Range("K3:L35").Sort Key1:=Range("L3"), Order1:=Descending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
EnCours = False
End If
End Sub
mais celle-ci ne marche" pas car j'ai des formules dans ma colonne L.
correct ?
si je veux appliquer une macro je dois :
soit créer un bouton pour mettre la macro,
soit je passe par une autre colonne pour appliquer la macro
soit et là j'ai pas compris, je "revalide une des cellule de K3:L35" qu'entendez-vous par revalidez ?
je reposte le fichier : https://www.cjoint.com/?3GvtcSBdX0Z
mais je crois que les carottes sont cuites :-) (comme ça je le sais pour la prochaine)
très cdlmnt,
berni///
Bonsoir,,
mais celle-ci ne marche" pas car j'ai des formules dans ma colonne L.
correct ?
Tout à fait, l'évènement Change n'est déclenché que sur une saisie. Et tes saisies nécessitant un recalcul se font en D.
Et Order1:=xlDescending
soit et là j'ai pas compris, je "revalide une des cellule de K3:L35" qu'entendez-vous par revalidez ?
Tu double-cliques en K3 comme si tu voulais l'éditer et tu valides. Ca déclenche l'évènement Change comme c'est une saisie.
Mais surveille D :
Dès que tu saisiras une commune le classement se refera.
eric
mais celle-ci ne marche" pas car j'ai des formules dans ma colonne L.
correct ?
Tout à fait, l'évènement Change n'est déclenché que sur une saisie. Et tes saisies nécessitant un recalcul se font en D.
Et Order1:=xlDescending
soit et là j'ai pas compris, je "revalide une des cellule de K3:L35" qu'entendez-vous par revalidez ?
Tu double-cliques en K3 comme si tu voulais l'éditer et tu valides. Ca déclenche l'évènement Change comme c'est une saisie.
Mais surveille D :
Private Sub Worksheet_Change(ByVal Target As Range) Static EnCours As Boolean 'Evite l'effet de boucle sur l'évènement Change() If EnCours Then Exit Sub If Not Application.Intersect(Target, Range("D:D")) Is Nothing Then EnCours = True Range("K3:L35").Sort Key1:=Range("L3"), Order1:=xlDescending, Header:=xlNo EnCours = False End If End Sub
Dès que tu saisiras une commune le classement se refera.
eric
merci à vous de m'avoir répondu. mais visiblement il y a qq chose que j'ai pas compris car cela ne fonctionne pas. voici le macro que je placé :
Private Sub Worksheet_Change(ByVal Target As Range)
Static EnCours As Boolean 'Evite l'effet de boucle sur l'évènement Change()
If EnCours Then Exit Sub
If Not Application.Intersect(Target, Range("k3:l35")) Is Nothing Then
EnCours = True
Range("k3:l35").Sort Key1:=Range("L3"), Order1:=xlAscending, Header:=xlNo
EnCours = False
End If
End Sub
mais ,cela n'a pas d'effet.. :-(
je ne comprends pas...
l'objectif es de trier la tableau sur base de la colonne L mais ça prends pas...
aurai-je commis une erreur ?
merci de votre aide...
cdlmnt,
berni///