Vérification_tri de liste VBA
Résolu
dubol
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Ma plage de données s'étend de A6 à S20
Les 3 colonnes A,B,C sont normalement triées par d'ordre croissant.
En VBA, j'aimerai avec une condition (if), vérifier si le tri à bien été fait.
si ce n'est pas le cas : afficher un message qui invite à faire le tri.
Voila mon début:
Je ne sais pas du tout comment commencer :S
Merci de votre aide
Ma plage de données s'étend de A6 à S20
Les 3 colonnes A,B,C sont normalement triées par d'ordre croissant.
En VBA, j'aimerai avec une condition (if), vérifier si le tri à bien été fait.
si ce n'est pas le cas : afficher un message qui invite à faire le tri.
Voila mon début:
If "colonnes triées" ordre croissant = A,B,C Then
'Si oui, afficher le message suivant à l'écran
MsgBox ("Trier la liste")
'Si oui, fin de la macro
GoTo FIN
End If
Je ne sais pas du tout comment commencer :S
Merci de votre aide
A voir également:
- Vérification_tri de liste VBA
- Liste déroulante excel - Guide
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Liste de diffusion whatsapp - Guide
- Site dangereux liste - Guide
3 réponses
Déjà le 'ici' est en bleu, c'est donc un lien cliquable...
Patrice a répondu en commentaire de ton post, sa réponse est donc juste en dessous de ton post.
C'est vrai que les choix faits par les administrateur du site ont plutôt tendance à perdre tout le monde...
Et oui, ça ne sert à rien de perdre du temps à contrôler si le tri est fait pour demander à le faire faire par l'utilisateur.
Tu le fais d'office, au pire avec une demande de confirmation avant.
eric
Patrice a répondu en commentaire de ton post, sa réponse est donc juste en dessous de ton post.
C'est vrai que les choix faits par les administrateur du site ont plutôt tendance à perdre tout le monde...
Et oui, ça ne sert à rien de perdre du temps à contrôler si le tri est fait pour demander à le faire faire par l'utilisateur.
Tu le fais d'office, au pire avec une demande de confirmation avant.
eric
Bonjour tout le monde,
Je rejoinds, bien évidemment, les collègues, bénévoles acharnés de ce site, qui te suggèrent, à juste titre, de trier et point barre. En effet, ton code VBA se résume alors à une seule ligne.
Pour l'exemple :
Tu peux tout à fait demander à l'utilisateur si c'est nécessaire de trier.
Pour l'exemple :
Sinon, tu peux aussi boucler sur chaque donnée contenue dans tes trois premières colonnes et tester si elle est "supérieure" à celle contenue dans la cellule située en dessous...
Pour l'exemple :
Tu vois, tout est possible, mais les demandes d'explications de mes collègues bénévoles sont ici fort bien justifiées.
N'est-il pas?
PS : il s'avère que par pure fainéantise de ma part, je n'ai pas testé ces codes... Je pense que cela doit fonctionner mais j'émets toutefois des réserves sur la partie "tri" de ces différents codes VBA.
De toutes façons : à adapter...
Je rejoinds, bien évidemment, les collègues, bénévoles acharnés de ce site, qui te suggèrent, à juste titre, de trier et point barre. En effet, ton code VBA se résume alors à une seule ligne.
Pour l'exemple :
Sub Tri()
Range("A1:S20").Sort Key1:=Range("A1" ), Order1:=xlAscending, Key2:=Range("B1" ), Order2:=xlAscending, Key3:=Range("C1" ), Order3:=xlAscending
End Sub
Tu peux tout à fait demander à l'utilisateur si c'est nécessaire de trier.
Pour l'exemple :
Sub DemandeSiTri()
Dim Reponse As Integer
Reponse = MsgBox("Voulez-vous trier ?", vbYesNo + vbQuestion, "Pijaku")
If Reponse = vbYes Then
Range("A1:S20").Sort Key1:=Range("A1" ), Order1:=xlAscending, Key2:=Range("B1" ), Order2:=xlAscending, Key3:=Range("C1" ), Order3:=xlAscending
End If
End Sub
Sinon, tu peux aussi boucler sur chaque donnée contenue dans tes trois premières colonnes et tester si elle est "supérieure" à celle contenue dans la cellule située en dessous...
Pour l'exemple :
Sub TestSitri()
Dim Tablo() As String
Dim Lig As Long, DrLig As Long
Dim j As Byte
Dim Reponse As Integer
With Sheets(1) 'A ADPATER!!!
For j = 1 To 3
DrLig = .Columns(j).Find("*", , , , xlByColumns, xlPrevious).Row
ReDim Tablo(DrLig - 1)
For Lig = 1 To DrLig
Tablo(Lig - 1) = Cells(Lig, j)
Next Lig
For Lig = 0 To UBound(Tablo) - 1
If Tablo(Lig) > Tablo(Lig + 1) Then
Reponse = MsgBox("Voulez-vous trier ?", vbYesNo + vbQuestion, "Pijaku")
If Reponse = vbYes Then
.Range("A1:S20").Sort Key1:=.Range("A1" ), Order1:=xlAscending, Key2:=.Range("B1" ), Order2:=xlAscending, Key3:=.Range("C1" ), Order3:=xlAscending
End If
Exit For
End If
Next Lig
Next j
End With
End Sub
Tu vois, tout est possible, mais les demandes d'explications de mes collègues bénévoles sont ici fort bien justifiées.
N'est-il pas?
PS : il s'avère que par pure fainéantise de ma part, je n'ai pas testé ces codes... Je pense que cela doit fonctionner mais j'émets toutefois des réserves sur la partie "tri" de ces différents codes VBA.
De toutes façons : à adapter...