[Catégorie modifiée VB6 -> VBA] Probleme de trie

Signaler
-
 gislain99 -
bonjour,
j'ai cree une frame qui regroupe mes differente options de trie qui comporte 2 optionbutton pour les trie croissant et decroissant et 3 commandboutton pour le choix des collones à trier.
Voici mon code pour chaque commandboutton:
[i]Private Sub CommandButton_Click()
Sheet("Bases_Containers").Activate
Range("A2":A6000).Select
Selection.Sort Key1:=Range("A2"),Order1:=xlAscending
[A2].Select
End Sub/i


1)Quand je lancele trie je demmande que celui ci commance à la ligne A2 (ligne A1 = Intitulé colonne)
je ne comprend pas le trie inclu toujours la ligne A1 dans sa selection comment faire pour interdire la ligne A1.

2)J'ai ajouté 2 optionboutton pour un trie croissant ou decroissant mais je sais pas ou les integrers dans mon code.


Merci pour votre aide

6 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
Commence s'il te plait :
1) par poster dans la bonne section (Langages dérivés > VBA) et non :
Forum > Visual Basic 6 > Windows

2) par présenter ton code indenté et entre balises codes (3ème icône en partant de la droite)
3) par nous montrer le code tel que tu l'as écrit (par copier/coller). Celui que tu montres n'est manifestement pas dans ce cas !
Pour ton info : bien que maladroit (tes Activate, Select puis Selection ...), ce code devrait faire son travail proprement(sur la feuille "Bases_Containers"), pour autant qu'il soit placé dans l'évènement click d'un bouton existant. Et le tri s'effectuerait sur la feuille "Bases_Containers"), à partir de la ligne 2.
Alors ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Tu fais du VBA, pas du VB6.

Si tu avais enregistré une macro pendant que tu fais un tri à la main, tu aurais vu qu'il existe plusieurs paramètres, notamment le Header qui détermine s'il y a un titre (header) à la zone à trier.

Pour ta seconde question, je pense que tu sais où intégrer ce choix mais que tu ne sais pas comment.
Ça se passe dans le paramètre Order, bien sûr.
Sachant que ce paramètre accepte les constantes :
xlAscending qui a la valeur 1, et
xlDescending qui a la valeur 2,
il te suffit de transformer ton OptionButton en un chiffre, 1 ou 2.
Autre solution : Créer 2 blocs de lignes de programme (un avec xlAscending, l'autre avec xlDescending) que tu exécuteras dans un If-Then-Else en fonction de ton OptionButton

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
J'espère vraiment que tu n'as pas réellement écrit une procédure évènementielle :
Private Sub CommandButton_Click()
en croyant qu'un click sur CommandButton1 la déclencherait !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
salut excuser moi pour les erreur mais sa fait tout juste 2 mois que je programme en VBA.

Ci joint mon code comme demandé

Private Sub CommandButton8_Click()
Sheets("Bases_Containers").Activate
Range("A2:A660").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending
[A2].Select
End Sub


mais il me selectionne toujours la ligne A1 quand il fait un trie

Merci
SALUT
pour le probleme de la ligne A1 ta solution de Header
est impecable merci baucoup maintenant je vais regarder pour mes option boutton

et encore merci
SALUT
j'ai pu resoudre tous mes problemes grace a vous merci baucoup.
ci joint le code que j'ai réalisé toute vos critique sont le bien venue.

Private Sub CommandButton8_Click()
Sheets("Bases_Containers").Activate
Range("A2:A660").Select
If OptionButton3 = True Then Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess
If OptionButton4 = True Then Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess
[A2].Select
End Sub