IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-03]Tri (oui encore :s )


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 38
    Par défaut [E-03]Tri (oui encore :s )
    Bonjour,

    après une recherche infructueuse sur la méthode sort, je n'arrive pas a m'en sortir..

    Je me suis basé sur le document "Support de cours complet pour le VBA d'Excel" du site, mais adapté a ma version ca ne marche plus.
    Voici l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim maplage As Range
    With ThisWorkbook.Worksheets("Feuil1")
    Set maplage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 8).End(xlUp))
    End With
     
    Set maplage = maplage.Offset(1).Resize(maplage.Rows.Count - 1)
     
    maplage.Sort Key1:=maplage.Cells(6), order1:=xlAscending, _
    Key2:=maplage.Cells(3), order2:=xlAscending, header:=xlNo, _
    Orientation:=xlTopToBottom
    Elle marche et fait exactement ce qu'elle doit faire
    Mon code avec quelque paramètres changés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim maplage As Range 
    With ThisWorkbook.Worksheets("Listing")
     Set maplage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 13).End(xlUp))
     End With
     Set maplage = maplage.Offset(2).Resize(maplage.Rows.Count - 2)
     maplage.Select
     maplage.Sort Key1:=maplage.Cells(2), order1:=xlDescending, _
    Key2:=maplage.Cells(10), order2:=xlAscending, header:=xlNo, _
    Orientation:=xlTopToBottom
    J'obtiens une "erreur 1004" J'ai placé un select et fait un pas à pas pour voir ce qui était réellement sélectionné et l'erreur semble en effet provenir de la définition de la zone triée.

    Je n'arrive vraiment pas a cerner le problème. Si une âme charitable pouvait me guider.

    Merci d'avance

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonsoir,

    quelle est ta certitude ou ton explication par rapport à cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set maplage = maplage.Offset(2).Resize(maplage.Rows.Count - 2)
    Pour le reste, difficile de dire sans voir les données.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 38
    Par défaut
    Voici une image des données

    Il y a plus de 20000 lignes et ce n'est pas figé.

    Pourquoi je pense que ça vient de la, c'est parce que l'erreur se crée sur le sélect (mis la afin de visualiser la zone sélectionnée) Mais je peux me tromper, ca ne fait que deux jours que je m'essaie au VBA

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Pas de soucis.

    As-tu absolument besoin de la ligne 1 avec /Lists ?

    Sinon je te propose de l'enlever et de tester avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim maplage As Range 
    With ThisWorkbook.Worksheets("Listing")
     Set maplage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 13).End(xlUp))
     End With
     Set maplage = maplage.Offset(1).Resize(maplage.Rows.Count - 1)
     maplage.Select
     maplage.Sort Key1:=maplage.Cells(2), order1:=xlDescending, _
    Key2:=maplage.Cells(10), order2:=xlAscending, header:=xlNo, _
    Orientation:=xlTopToBottom

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 38
    Par défaut
    La ligne 1, non c'est juste du a un import de fichier XML, je l'ai supprimée et ai essayé la solution proposée. Hélas le probleme est toujours présent sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set maplage = maplage.Offset(1).Resize(maplage.Rows.Count - 1)
    Donc le problème pourrait se situer juste au-dessus au niveau de la déclaration de la zone de tri, mais je ne vois pas trop.
    Enfin peut etre qu'il existe une autre définition de Range pour cadrer l'ensemble des donnée.

    Edit : Je crois peut-être avoir trouvé le problème :/ la colonne 13 n'a d'élément qu'a partir de la ligne 14. La définition de la plage doit donc être de taille nulle d'où l'erreur

    Edit2 : Finallement je ne crois pas que ce soit cela
    j'ai essayé ce code de dimensionnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set maplage = .Range(.Cells(1, 1), .Cells(4, 4))
    toujours l'erreur

  6. #6
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonsoir,

    je vois que tu as mis un select dans ton code , rajoute un stop aprés celui-ci et vérifie la plage sélectionné avant le tri :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    maplage.Select
    stop
    maplage.sort
    si c'est la bonne plage essai quand le select est affiché et le code bloqué par le stop , d'effectuer toi même le tri par le menu excel.

    tu dis quoi..

  7. #7
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Tu peux mettre en attachement un fichier excel simplifié avec uniquement ceci :
    1) ta feuille listing avec les 100 premières lignes
    2) ton code vba complet

    Alors je vais tester.

    Edit------
    Salut Jacques.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Preloader..eh oui encore un
    Par lionel20 dans le forum Flash
    Réponses: 3
    Dernier message: 20/12/2006, 11h25
  2. [apache][.htaccess]Oui encore un....
    Par sanosuke85 dans le forum Apache
    Réponses: 3
    Dernier message: 15/05/2006, 19h41
  3. Preloader, et oui encore un !
    Par rawkus dans le forum ActionScript 1 & ActionScript 2
    Réponses: 10
    Dernier message: 09/05/2006, 13h06
  4. Et oui encore un probleme d'icone dans une Jframe
    Par frett dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 17/02/2006, 15h12
  5. Drivers ODBC, ADO et IB (et oui encore!! )
    Par lio33 dans le forum Débuter
    Réponses: 1
    Dernier message: 14/09/2005, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo