Tri dans un tableau à position et taille variables

dingur Messages postés 2 Date d'inscription samedi 13 décembre 2008 Statut Membre Dernière intervention 14 décembre 2008 - 13 déc. 2008 à 20:13
dingur Messages postés 2 Date d'inscription samedi 13 décembre 2008 Statut Membre Dernière intervention 14 décembre 2008 - 14 déc. 2008 à 01:01
Bonjour !

J'ai un bout de macro qui me permet de générer un tableau à partir des premières lignes d'une feuille, elles-même récupérées par ailleurs. J'insère mon tableau sous ses lignes. Comme le nombre de lignes récupérées varient, la position de mon tableau varie. Et pour compliquer un peu, toutes les lignes n'ont pas le même nombre de cellules.

Je souhaite réaliser le tri de ce tableau à partir de la 8è colonne. J'ai réalisé l'opération à la main en enregistrant la macro, ce qui me donne le résultat suivant :

Range("A56").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveWorkbook.Worksheets("Duos").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Duos").Sort.SortFields.Add Key:=Range("H56:H1280") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Duos").Sort
.SetRange Range("A56:AH1280")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Cela marche donc très bien lorsque j'insère ce code dans ma macro. Cependant, comme la taille et position du tableau changent, je voudrais modifier cette macro afin qu'elle ne soit pas limitée à la sélection A56:AH1280.
J'ai pour l'instant modifié avec succès
Range("A56").Select
en
Cells(NbRolls + 6, 1).Select
où NbRolls correspond à la dernière des lignes utilisées pour générer le tableau
En revanche, je ne sais pas comment modifié les deux lignes suivantes :
ActiveWorkbook.Worksheets("Duos").Sort.SortFields.Add Key:=Range("H56:H1280")
.SetRange Range("A56:AH1280")
Je dispose des variables me permettant d'identifier les première et dernière lignes de mon tableau (56 et 1280, respectivement avec "NbRolls + 6" et "NbRolls + 4 + d"), mais je ne sais pas repérer le nombre de colonne max (tout en sachant la valeur inférieure à 100).

Mes questions portent donc sur les deux lignes précédentes :
> comment lui dire de trier selon la 8è colonne tout en ayant des lignes début/fin changeantes ?
> comment lui donner la sélection correspondant au tableau sur lequel travailler ?

Merci pour votre aide !

2 réponses

jclarun Messages postés 6 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 16 décembre 2008
13 déc. 2008 à 22:59
salut!
Si j'ai bien compris:
tu cherche le n° de la derniere colonne utilisée:

dernierecol=activesheet.usedrange.columns.count

cela fonctionne avec rows.count pour les lignes

jc
0
dingur Messages postés 2 Date d'inscription samedi 13 décembre 2008 Statut Membre Dernière intervention 14 décembre 2008
14 déc. 2008 à 01:01
coucou !
nope, ce n'est pas vraiment mon problème, vu qu'il trie *selon* la 8è colonne (petit quiproquo sans doute avec mon "à partir de") qui ne contient aucune cellule vide

mon problème réside dans le fait que parfois mon tableau démarre en ligne 56 pour se finir en ligne 1280, et d'autres fois il peut démarrer en ligne 42 pour finir en ligne 671, ou encore en ligne 37 etc etc ...
(au cas où, je sais trouver la ligne de fin à partir de la ligne de début, via formule mathématique simple)
et je voudrais adapter le bout de macro donné ci-dessus pour tenir compte de ces variations de position et taille du tableau
0
Rejoignez-nous