Tri selon infos rentrées via inputBox

stephane.79

XLDnaute Nouveau
Bonjour à tous,

J’essaie depuis un bon moment, mais là je flanche ... et ne trouve pas de solutions sur le forum.
Via une imputbox j’aimerais réaliser des tris.
J’arrive à faire sélectionner la colonne mais pour ce qui est du « sens » du tri je bloque !

Ci joint une copie du code :

Sub Tri ()
Dim Coltri As String
Dim Typetri As String

Coltri = InputBox("Indiquer la colonne à trier ", "DONNEES TRIEES ?", "K")
Typetri = InputBox("Indiquer le type de tri Croissant = C, Décroissant = D, ...", "TYPE DE TRI ?", "D")

If Typetri = "D" Then
Typetri = "Descending"

ElseIf Typetri = "C" Then
Typetri = "Ascending"

End If

' Définition plage
Set rngPlage = Range(Range("B1"), Range("B65000").End(xlUp))

For Each C In rngPlage.Cells
If C Like "Total *" Then
C.Offset(-1, 1).Select
Range(Selection, Selection.End(xlUp).Offset(1, 15)).Select

'TRI / la colonne Sélectionnée par InputBox
'Voilà ce que je souhaiterai réaliser :
'Selection.Sort Key1:=Range("K10"), Order1:=xlDescending

'Mais avec ceci cela ne fct pas :
Selection.Sort Key1:=Range(Coltri & "10"), Order1:=xl & Typetri

End If
Next

Set rngPlage = Nothing: Set C = Nothing
End Sub


En termes d’optimisation, est-ce efficace ?
Merci d’avance pour vos réponses.
Stéphane.79
 

stephane.79

XLDnaute Nouveau
Re : Tri selon infos rentrées via inputBox

Bonsoir José & le Forum,

Non mais en fait, j'ai de très nombreuses plages à trier sur des tableaux et de le faire à la main ... c'est usant ! (définition des zones avec Ctrl + Flèches, etc ... ). Même avec F4.

C'est pourquoi j'ai tenté de réaliser qqc en VBA. Mais bon, je ne sais pas trop si c'est correct.

Mon souci dans cette macro se situe au niveau du tri. Je n'arrive pas à reprendre le sens du tri indiqué ds l'inputbox.
Ton avis sur son optimisation m'intéresse également.

A bientôt.
Stéphane.79
 

ChTi160

XLDnaute Barbatruc
Re : Tri selon infos rentrées via inputBox

Salut stephane.79
bonsoir José (j'espère que tu vas bien)

voilà ce que j'ai pondu après avoir utilisé l'enregistreur de macro lol

le sens peut être défini par 1 ou 2
ainsi que la colonne
Code:
Sub tri()
'
' tri Macro
' Macro enregistrée le 01/11/2006 par  Jean Marie
'
Dim Col As Byte
Dim Sens As Byte
Sens = 2         '[COLOR=Blue]1 ascendant ou 2 descendant[/COLOR]
Col = 3
    Cells(5, [COLOR=Red]Col[/COLOR]).Select
    
    Selection.Sort Key1:=[COLOR=Blue]Cells(5, [COLOR=Red]Col[/COLOR])[/COLOR], Order1:=[COLOR=Red]Sens[/COLOR], Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
bonne fin de soirée :p
 

stephane.79

XLDnaute Nouveau
Re : Tri selon infos rentrées via inputBox

Bonjour Jean-Marie, le Forum,

C'est parfait cela fonctionne.

Est-il possible de transformer le " 1 ascendant ou 2 descendant " en 1 = C et 2 = D ? C pour croissant et D pour décroissant pour mettre ces lettres dans mon inputbox au lieu de 1 & 2 ?

Une 2 ème question qui s'éloigne un peu du fil, comment mettre en forme le text de l'inputbox (retour à la ligne, gras, taille caractère, ... ?)

Encore merci et à bientôt
Stephane.79
 

ChTi160

XLDnaute Barbatruc
Re : Tri selon infos rentrées via inputBox

Salut stephane.79
Bonjour le Forum
Bonjour le fil

peut être en insérant cette ligne dans ta procèdure (non testé)

Code:
[COLOR=black][FONT=Verdana]Typetri = InputBox("Indiquer le type de tri Croissant = C, Décroissant = D _[/FONT][/COLOR]
[COLOR=black][FONT=Verdana], ...", [/FONT][/COLOR][COLOR=black][FONT=Verdana]"TYPE DE TRI ?", "D")[/FONT][/COLOR]
[COLOR=black][FONT=Verdana]Typetri=iif(Typetri= "D" ,2,1)[/FONT][/COLOR]
pour ce qui est de la deuxieme question le retour à la ligne doit être possible
Code:
Typetri = InputBox("Indiquer le type de tri" & Chr(13) & "Croissant = C," _
 & Chr(13) & "Décroissant = D, ...", "TYPE DE TRI ?", "D")
pour le reste je ne sais pas
bonne journée
 

stephane.79

XLDnaute Nouveau
Re : Tri selon infos rentrées via inputBox

Bonjour Jean-Marie,
bonjour le Forum,

Désolé de répondre un peu tardivement !

Je viens de tester et tout fonctionne : MERCI
J'ai changé la déclaration de variable de Byte qui bugait en String (toujours un peu confus pour moi !)

Pour le saut de ligne j'ai utiliser : & Chr(13) comme indiqué. Mais pour sauter deux lignes, je n'ai pas trouver d'autre solution que de mettre 2 fois & Chr(13) à la suite.
Existe-t-il un moyen de répéter 2 fois une commande ?

Encore merci pour votre aide.
A bientôt.
Stéphane.79
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 452
Messages
2 088 541
Membres
103 880
dernier inscrit
rafaelredsc