Comment utiliser SpecialCells(xlLastCell) avec la commande "Sort" ?

Le
Gouap
Bonjour à tous,

Avec l'enregistreur de macro d'Excel j'obtients le code suivant qui
fonctionne très bien mais qui ne tri que les ligne 1 à 32. Ce que je cherche
à faire c'est à modifier ce code pour qu'il tri jusqu'à la ligne
correspondant à SpecialCells(xlLastCell) sans devoir mettre ("A1: B65536")
mais toutes mes tentatives sont regetées par Excel.

ActiveCell.Offset(0, -2).Columns("A:B").EntireColumn.Select
ActiveWorkbook.Worksheets("Consolidation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Consolidation").Sort.SortFields.Add Key:= _
ActiveCell.Offset(0, 1).Range("A1:A32"), SortOn:=xlSortOnValues,
Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Consolidation").Sort
.SetRange ActiveCell.Range("A1:B32")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Pouvez vous m'aider à trouver la bonne syntaxe ?

@+
Philippe
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Tatanka
Le #21181681
Bonjour Gouap,

Ces deux instructions peuvent-elles te venir en aide ?

j = Range("B2").SpecialCells(xlLastCell).Row
Set ici = Range("A1:B" & j)

Serge


"Gouap"
Bonjour à tous,

Avec l'enregistreur de macro d'Excel j'obtients le code suivant qui fonctionne très bien mais qui ne tri que les ligne 1 à 32. Ce
que je cherche à faire c'est à modifier ce code pour qu'il tri jusqu'à la ligne correspondant à SpecialCells(xlLastCell) sans
devoir mettre ("A1: B65536") mais toutes mes tentatives sont regetées par Excel.

ActiveCell.Offset(0, -2).Columns("A:B").EntireColumn.Select
ActiveWorkbook.Worksheets("Consolidation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Consolidation").Sort.SortFields.Add Key:= _
ActiveCell.Offset(0, 1).Range("A1:A32"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Consolidation").Sort
.SetRange ActiveCell.Range("A1:B32")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Pouvez vous m'aider à trouver la bonne syntaxe ?

@+
Philippe




Gouap
Le #21181661
Merci de ton aide.

En tenant compte de ton code, j'ai simplifié et obtenu ça qui semble
fonctionner:

Sheets("Consolidation").Select

With ActiveWorkbook.Worksheets("Consolidation").Sort
.SetRange Range("A1:B" & Range("B2").SpecialCells(xlLastCell).Row)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

@+
Philippe

"Tatanka" e%
Bonjour Gouap,

Ces deux instructions peuvent-elles te venir en aide ?

j = Range("B2").SpecialCells(xlLastCell).Row
Set ici = Range("A1:B" & j)

Serge


"Gouap"
Bonjour à tous,

Avec l'enregistreur de macro d'Excel j'obtients le code suivant qui
fonctionne très bien mais qui ne tri que les ligne 1 à 32. Ce que je
cherche à faire c'est à modifier ce code pour qu'il tri jusqu'à la ligne
correspondant à SpecialCells(xlLastCell) sans devoir mettre ("A1:
B65536") mais toutes mes tentatives sont regetées par Excel.

ActiveCell.Offset(0, -2).Columns("A:B").EntireColumn.Select
ActiveWorkbook.Worksheets("Consolidation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Consolidation").Sort.SortFields.Add Key:= _
ActiveCell.Offset(0, 1).Range("A1:A32"), SortOn:=xlSortOnValues,
Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Consolidation").Sort
.SetRange ActiveCell.Range("A1:B32")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Pouvez vous m'aider à trouver la bonne syntaxe ?

@+
Philippe








FFO
Le #21181831
Salut à toi

Mets ceci :

Range("A1:A32")

Comme ceci

Range("A1","A" & Range("A1").SpecialCells(xlLastCell).Row)

Idem pour

Range("A1:B32")

à mettre comme ceci :

Range("A1","B" & Range("A1").SpecialCells(xlLastCell).Row)

Celà devrait faire

Dis moi !!!!!
Tatanka
Le #21181951
> j = Range("B2").SpecialCells(xlLastCell).Row
Set ici = Range("A1:B" & j)


Je voulais écrire B1 au lieu de B2

Même principe :
j = Range("A1").SpecialCells(xlLastCell).Row
Set ici = Range("A1:A" & j)
...

Serge


"Tatanka"
Bonjour Gouap,

Ces deux instructions peuvent-elles te venir en aide ?

j = Range("B2").SpecialCells(xlLastCell).Row
Set ici = Range("A1:B" & j)

Serge


"Gouap"
Bonjour à tous,

Avec l'enregistreur de macro d'Excel j'obtients le code suivant qui fonctionne très bien mais qui ne tri que les ligne 1 à 32. Ce
que je cherche à faire c'est à modifier ce code pour qu'il tri jusqu'à la ligne correspondant à SpecialCells(xlLastCell) sans
devoir mettre ("A1: B65536") mais toutes mes tentatives sont regetées par Excel.

ActiveCell.Offset(0, -2).Columns("A:B").EntireColumn.Select
ActiveWorkbook.Worksheets("Consolidation").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Consolidation").Sort.SortFields.Add Key:= _
ActiveCell.Offset(0, 1).Range("A1:A32"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Consolidation").Sort
.SetRange ActiveCell.Range("A1:B32")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Pouvez vous m'aider à trouver la bonne syntaxe ?

@+
Philippe








Caetera
Le #21182081
"Gouap"

correspondant à SpecialCells(xlLastCell)



*************
Conseil :
Ne JAMAIS utiliser la méthode "SpecialCells(xlLastCell)"

Etc
Gouap
Le #21183151
Merci de ta proposition, c'est ce que je fais maintenant et effectivement ça
fonctionne !
@+
Philippe

"FFO"
Salut à toi

Mets ceci :

Range("A1:A32")

Comme ceci

Range("A1","A" & Range("A1").SpecialCells(xlLastCell).Row)

Idem pour

Range("A1:B32")

à mettre comme ceci :

Range("A1","B" & Range("A1").SpecialCells(xlLastCell).Row)

Celà devrait faire

Dis moi !!!!!



Publicité
Poster une réponse
Anonyme