|
|
|
|
Salut la compagnie.
Aujourd'hui, j'écris une macro pour un classeur excel contenant plusieurs feuilles. Les données contenues dans les feuilles doivent être triées par ordre décroissant en fonction de la valeur de la cellule de la colonne la plus à droite.
C'est flou hein? Z'inquiétez pas en lisant le code vous allez vite comprendre.
J'ai fait ça:
[quote]
Sub classement()
'
' classement Macro
' Macro enregistrée le 25/08/2008 par *
'
'
Dim feuille As String
Dim r, c, r2, class As Long
Dim f As Integer
Do
Select Case feuille 'permet de passer d'une worksheet à l'autre
Case ""
feuille = "Appro"
Case "Appro"
feuille = "CA"
Case "CA"
feuille = "Comm"
Case "Comm"
feuille = "PuetQ"
End Select
c = 1
a:
If Worksheets(feuille).Cells(1, c + 1) <> "" Then 'permet de savoir combien de colonne compte la feuille
c = c + 1
GoTo a
End If
r = Worksheets(feuille).Range("A1").End(xlDown).Row 'pour connaitre le nombre de lignes de la feuille
Worksheets(feuille).Range(Cells(1, 1), Cells(r, c)).Sort _
Key1:=Worksheets(feuille).Cells(1, c), Order1:=xlDescending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'permet de trier la région "sélectionnée"
f = f + 1
Loop While f < 4
End Sub/quote
Mon problème c'est qu'arrivé à la ligne de trie (la méthode Sort) j'ai une erreur 1004 "erreur définie par l'application ou par l'objet". Je suis sur que c'est une erreur toute bête qui doit venir d'une variable mal initialisée ou mal déclarée mais je n'arrive pas à trouver seul.
toute aide sera la bienvenue, merci d'avance.
Configuration: Windows XP Internet Explorer 7.0
Bonjour,
Option Explicit
Sub Classement()
Dim Feuille As String, f As Integer
Dim r As Long, c As Long, r2 As Long
'Dim Classe As Long ' Le mot [ class ] est un mot réservé
f = 0
Feuille = ActiveSheet.Name
Do
Select Case (Feuille) 'permet de passer d'une worksheet à l'autre
Case ""
Feuille = "Appro"
Case "Appro"
Feuille = "CA"
Case "CA"
Feuille = "Comm"
Case "Comm"
Feuille = "PuetQ"
End Select
'pour connaitre le nombre de colonne compte la feuille
c = Worksheets(Feuille).Range("A1").End(xlRight).Column
'pour connaitre le nombre de lignes de la feuille
r = Worksheets(Feuille).Range("A1").End(xlDown).Row
Worksheets(Feuille).Range(Cells(1, 1), Cells(r, c)).Sort _
Key1:=Worksheets(Feuille).Cells(1, c), Order1:=xlDescending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'permet de trier la région "sélectionnée"
f = f + 1
Loop While (f < 4)
End Sub
'
Lupin |
Merci de ton aide,
|
Re :
Feuille = ActiveSheet.Name ' Ici , Feuille prend le nom de la feuille active
Do
Select Case (Feuille) 'permet de passer d'une worksheet à l'autre
Case ""
Feuille = "Appro"
Case "Appro"
Feuille = "CA"
Case "CA"
Feuille = "Comm"
Case "Comm"
Feuille = "PuetQ"
End Select
' Ajoute ici
Sheets(Feuille).Select ' pour pointer sur la bonne feuille au moment du [ Sort ] .
...
Lupin |