Rechercher : dans
Par :

Fonction trier et erreur 1004

Dernière réponse le 27 avr 2009 à 15:17:25 vash641, le 24 avr 2009 à 10:26:25 
 Signaler ce message aux modérateurs

Bonjour, j'ais généré via l'enregistreur de macro le code suivant devant me permettre de trier de manière croissante une suite de chiffres dans une colonne, mais j'ais une erreur 1004 qui apparait:

Sub TrierFourniture() 

Range("B1:C8000").Select
    Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End Sub


Auriez vous une idée d'ou ça peut provenir ? Merci de votre aide

Meilleures réponses pour « Fonction trier et erreur 1004 » dans :
Javascript - trim() VoirLa fonction trim() de PHP (et d'autres langages) permet de supprimer les espaces en début et fin de chaîne. Il n'existe pas de telle fonction en Javascript mais le code suivant permet de la remplacer : Function trim (myString) { return...

1

chossette9, le 24 avr 2009 à 10:32:03

Bonjour,

je viens de lancer ta fonction sur un classeur Excel quelconque contenant des valeurs dans la colonne B, et je n'ai pas eu de problème.

Quel est exactement le message d'erreur affiché ?

Répondre à chossette9

2

vash641, le 24 avr 2009 à 10:38:49

Ayant généré cette macro sur un classeur vierge, je n'ais pas eu de problème non plus :s

Le message exact étant

"Erreur d'exécution 1004
Erreur définie par l'application ou par l'objet"

Répondre à vash641

3

Lupin.A, le 24 avr 2009 à 13:21:20

Bonjour,

Si la fonction est dans un module standard, il faut lui indiquer sur quelle feuille opérer.

L'erreur 1004 est un erreur de débordement d'adressage d'objet.

Or la ligne [ Range("B1:C8000").Select ] ne spécifie pas la feuille a tester !

Essayer comme suit :

Sub TrierFourniture()

    With Sheets("Feuil1")
        .Range("B1:C8000").Select
        Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    End With
    
End Sub
'
'


ou

Sub TrierFourniture(ByVal NomFeuille As String)

    With Sheets(NomFeuille)
        .Range("B1:C8000").Select
        Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    End With
    
End Sub
'


en espérant que j'ai vu juste, mais soyez conscient que je puis me tromper, je ne
vois pas votre classeur !!!

Lupin
~L'essentiel est invisible pour les yeux~
  ~On ne voit bien qu'avec le coeur~

Répondre à Lupin.A

4

vash641, le 24 avr 2009 à 13:47:33

Le souci venait de la, merci Lupin :)

Par contre il me tri tout sauf la première ligne, que dois je modifier dans le code afin de prendre en compte la première ligne ?

Répondre à vash641

5

Lupin.A, le 24 avr 2009 à 14:07:02

Re:

Chez moi, il trie correctement incluant la première ligne, le seul paramètre manquant au tri
est le DataOption !

    With Sheets("Feuil1")
        .Range("B1:C8000").Select
        Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End With

Le paramètre [ Header:=xlGuess ] est bien affecté par rapport à un tri contenant
une entête [ Header:=xlYes ].

Lupin
~L'essentiel est invisible pour les yeux~
  ~On ne voit bien qu'avec le coeur~

Répondre à Lupin.A

6

vash641, le 24 avr 2009 à 14:51:38

Sub TrierFourniture()

With Sheets("Fournitures")
Range("A1:F8000").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End With
End Sub


J'ais rajouté le dataoption, et l'erreur 1004 a refait son apparition ^^'

Répondre à vash641

7

Lupin.A, le 24 avr 2009 à 14:56:19

Re:

Sub TrierFourniture()

With Sheets("Fournitures")
Range("A1:F8000").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End With
End Sub


Avec l'utilisation du mot clé [ With ], le mot clé [ Range ] doit être précédé d'un point [ . ]

Sub TrierFourniture()

 With Sheets("Fournitures")
    .Range("A1:F8000").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
 End With
End Sub


Lupin
~L'essentiel est invisible pour les yeux~
  ~On ne voit bien qu'avec le coeur~

Répondre à Lupin.A

8

vash641, le 24 avr 2009 à 15:02:57

Ok, en faisant le mode Pas à Pas l'erreur 1004 apparait plus tard dans le code ( au End With pour être précis )

Il y aurait il une autre erreur de syntaxe ?

Répondre à vash641

9

Lupin.A, le 24 avr 2009 à 21:18:23

Re:

Pour moi, le code suivant fonctionne :

Option Explicit

Sub TrierFourniture()

    With Sheets("Feuil1")
        .Range("B1:C8000").Select
        Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End With
    
End Sub
'


Toutefois, la même remarque peut s'appliquer sur la paramètre [ Key1 ]

Option Explicit

Sub TrierFourniture()

    With Sheets("Feuil1")
        .Range("B1:C8000").Select
        Selection.Sort Key1:=.Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End With
    
End Sub
'


Lupin ~L'essentiel est invisible pour les yeux~
  ~On ne voit bien qu'avec le coeur~

Répondre à Lupin.A

10

vash641, le 27 avr 2009 à 08:54:02

En fait j'ais le souci, le code est sur une feuille 2 mais je lance ce code via un boutton feuille1.
Il fonctionne lorsque je suis sur la feuille2, mais l'erreur survient quand je me place sur les autres feuilles :s

Répondre à vash641

11

vash641, le 27 avr 2009 à 11:21:21

J'ais réussi à m'en tirer avec un Sheets("feuilX").select et tout marche comme je le souhaite.

Problème résolu :)

Répondre à vash641

12

 Lupin.A, le 27 avr 2009 à 15:17:25

Re:

Tout s'explique, ça c'est l'information qui manquait et qui spécifie
des espaces de noms différents pour le code derrière une feuille.
Le code qui effectue le tri devrait être dans un Module et
non derrière une feuille.

Bonne continuité.

Lupin
~L'essentiel est invisible pour les yeux~
  ~On ne voit bien qu'avec le coeur~

Répondre à Lupin.A