Macro tri sur resultats de formules

  • Initiateur de la discussion Initiateur de la discussion STEF67
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

STEF67

XLDnaute Nouveau
Bonjour à tous,
J'avais sollicité le forum pour une marcro de tri avec les "-" systématiquement à la fin. L'un d'entre vous dont le nom m'echappe (désolé car je n'arrive plus à retrouver le post) m'avais trouvé une solution qui marche bien.
Avec
Call raz & Call remettre en debut et fin de chaque macro
puis

Sub raz()
Dim i As Long, nbl As Long, cel As Range
nbl = Range("B65500").End(xlUp).Row
For Each cel In Range("B6:b" & CStr(nbl))
If cel.Value = "-" Then cel.ClearContents
Next
End Sub
Sub remettre()
Dim i As Long, nbl As Long, cel As Range
nbl = Range("B65500").End(xlUp).Row
For Each cel In Range("B6:b" & CStr(nbl))
If cel.Value = "" Then cel.Value = "-"
Next

End Sub

Le pb est que le tri ne porte pas en fait sur des données brutes mais sur les resultats de formules.(je ne l'avais pas précisé Mea Culpa !) cf PJ
Cette macro efface donc les formules et avec à la mise à jour ultérieure de la base je suis planté
Avec vous une solution ?
Grand merci d'avance
 

Pièces jointes

Re : Macro tri sur resultats de formules

STEF67 à dit:
Bonjour à tous,
J'avais sollicité le forum pour une marcro de tri avec les "-" systématiquement à la fin. L'un d'entre vous dont le nom m'echappe (désolé car je n'arrive plus à retrouver le post) m'avais trouvé une solution qui marche bien.
Avec
Call raz & Call remettre en debut et fin de chaque macro
puis

Sub raz()
Dim i As Long, nbl As Long, cel As Range
nbl = Range("B65500").End(xlUp).Row
For Each cel In Range("B6:b" & CStr(nbl))
If cel.Value = "-" Then cel.ClearContents
Next
End Sub
Sub remettre()
Dim i As Long, nbl As Long, cel As Range
nbl = Range("B65500").End(xlUp).Row
For Each cel In Range("B6:b" & CStr(nbl))
If cel.Value = "" Then cel.Value = "-"
Next

End Sub

Le pb est que le tri ne porte pas en fait sur des données brutes mais sur les resultats de formules.(je ne l'avais pas précisé Mea Culpa !) cf PJ
Cette macro efface donc les formules et avec à la mise à jour ultérieure de la base je suis planté
Avec vous une solution ?
Grand merci d'avance
Salut
Une possubilité :
Tu selectionnes ta zone de valeur
tu la copies Dans la colonne C (en Pastespeciel => Xlvalue)
tu supprimes dans C les - (si j'ai bien compris
tu tries A:C sur C
Tu supprimes C

Avec les macros apprentissages, tu devrais avoir ton code.
Pour l'épuration de celui-ci, tu peux le mettre sur un poste, on
t'aideras
A+
 
Re : Macro tri sur resultats de formules

Merci Gorfael,
Ton idée est astucieuse et me permet d'avoir une solution (cf PJ)
Mais n'y a t il pas une façon plus simple d'ecrire le code et même eviter de passer par l'astuce de la colonne C ?
Merci
Sub H()
Range("B6:B15").Select
Selection.Copy
Range("C6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A6:C15").Select
Call raz
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Call remettre
Range("C6:C15").Select
Selection.Delete Shift:=xlToLeft

End Sub
Sub raz()
Dim i As Long, nbl As Long, cel As Range
nbl = Range("C65500").End(xlUp).Row
For Each cel In Range("C6:C" & CStr(nbl))
If cel.Value = "-" Then cel.ClearContents
Next
End Sub
Sub remettre()
Dim i As Long, nbl As Long, cel As Range
nbl = Range("C65500").End(xlUp).Row
For Each cel In Range("C6:C" & CStr(nbl))
If cel.Value = "" Then cel.Value = "-"
Next

End Sub
 

Pièces jointes

Re : Macro tri sur resultats de formules

STEF67 à dit:
Merci Gorfael,
Ton idée est astucieuse et me permet d'avoir une solution (cf PJ)
Mais n'y a t il pas une façon plus simple d'ecrire le code et même eviter de passer par l'astuce de la colonne C ?
Merci
Sub H()
Range("B6:B15").Select
Selection.Copy
Range("C6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A6:C15").Select
Call raz
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Call remettre
Range("C6:C15").Select
Selection.Delete Shift:=xlToLeft

End Sub
Sub raz()
Dim i As Long, nbl As Long, cel As Range
nbl = Range("C65500").End(xlUp).Row
For Each cel In Range("C6:C" & CStr(nbl))
If cel.Value = "-" Then cel.ClearContents
Next
End Sub
Sub remettre()
Dim i As Long, nbl As Long, cel As Range
nbl = Range("C65500").End(xlUp).Row
For Each cel In Range("C6:C" & CStr(nbl))
If cel.Value = "" Then cel.Value = "-"
Next

End Sub
Salut
Test macros, un peu modifiées
Code:
Sub alpha()
Range("A6:B15").Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A4").Select
End Sub
Sub H()
Dim Cel As Range
Range("B6:B15").Copy
Range("C6").PasteSpecial Paste:=xlPasteValues
For Each Cel In Range([C6], [C15])
If Cel.Value = "-" Then Cel.ClearContents
Next
Range("A6:C15").Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("C6:C15").Delete Shift:=xlToLeft
Range("A4").Select
End Sub
Sub B()
Range("A6:B15").Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A4").Select
End Sub
Existe-t-il une autre méthode : oui
plus simple : non, il faut que tu fasse un tri dans la macro, et ce sera moins rapide
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
733
Réponses
7
Affichages
454
Réponses
5
Affichages
910
Réponses
3
Affichages
922
Réponses
5
Affichages
573
Retour