Erreur 1004 Erreur 1004_La méthode range de l'objet global a

Bonjour à tous,

Je débute dans VBA et je rencontre un problème que d'autres ont déjà eu mais dont je ne comprends toujours pas la raison, ni la correction à apporter.

Je sollicite donc votre aide pour comprendre, merci d'avance.

ce qui fonctionne :

Range("J2:J57").Select

ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Add Key:=Range("J2"), _

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Liste").Sort

.SetRange Range("J2:J57")

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

mais quand je remplace "j2:j57" etc, par des cells, j'ai cette erreur 1004, pourquoi ? c'est un mystère pour moi.

cells(2,pos+1) prend bien la valeur de la cellule mais la méthode Range de l'objet global échoue ...? J'ai essayé plusieurs formes d'écriture (voir d'autres questions posées dans le forum sur le même sujet)

pos=9 ' pour pouvoir modifier plus tard la colonne en une fois

Range(cells(2, pos+1), cells(57, pos+1)).Select

ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Add Key:=Range(cells(2, pos+1)), _ ICI CA COINCE !

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Liste").Sort

.SetRange Range(cells(2, pos+1), cells(57, pos+1))

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Bonjour,

à tester,

Range(cells(2, pos+1).Address, cells(57, pos+1).Address).Select

Bonjour dry7552, bonjour le fil, bonjour le forum,

Ceci est, selon moi, incohérent : Range(cells(2, pos+1))

Si tu veux une seule cellule : cells(2, pos+1) ou à la rigueur Range(Cells(2, pos + 1), Cells(2, pos + 1))

Joseph

Bonjour,

Tu devrais peut-être commencer par mettre tes données sous forme de tableau.

Le tri serait plus facile.

Ensuite, pour éviter une perte de temps pour les intervenants, il serait judicieux de joindre un fichier.

Cdlt.

Merci sabV de ta réponse, mais ce n'est pas à ce niveau que ça coince.


Bonjour retraite8,

j'ai la solution :

au lieu de

pos=9 ' pour pouvoir modifier plus tard la colonne en une fois

Range(cells(2, pos+1), cells(57, pos+1)).Select

ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Add Key:=Range(cells(2, pos+1)), _ ICI CA COINCE !

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Liste").Sort

.SetRange Range(cells(2, pos+1), cells(57, pos+1))

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

il faut juste que j'écrive :

pos=9 ' pour pouvoir modifier plus tard la colonne en une fois

Range(cells(2, pos+1), cells(57, pos+1)).Select

ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Liste").Sort.SortFields.Add Key:=cells(2, pos+1), _

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Liste").Sort

.SetRange Range(cells(2, pos+1), cells(57, pos+1))

.Header = xlNo

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

et là ça marche sans erreur !

merci à tous

C'est résolu !

Bonjour Jean-Eric,

merci pour tes conseils et ta solution pour m'aider, il ne me semblait pas judicieux de joindre un fichier pour une question d'ECRITURE du programme.

En ce qui concerne un tableau, comment fait-on le tri plus simplement ?

Bien cordialement.

Re,

un exemple.

Cdlt.

Public Sub SortTable()
Dim lo As ListObject
Dim lCol As Long
    Set lo = ActiveSheet.ListObjects(1)
    lCol = 9
    With lo
        .Sort.SortFields.Add .ListColumns(9).DataBodyRange, xlSortOnValues, xlAscending
        .Sort.Apply
        .Sort.SortFields.Clear
    End With
    Set lo = Nothing
End Sub
Rechercher des sujets similaires à "erreur 1004 methode range objet global"