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 :

[VBA-E] Trie de données sur 2 feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut [VBA-E] Trie de données sur 2 feuilles
    Bonjour,

    Jusque là pour trier une feuille excel j'utilisait une macro toute faite à l'aide de l'enregistreur de macro.
    Mais maintenant que j'ai plus de données j'ai un léger soucis...

    j'ai 2 feuilles de classeurs dont une qui a 60000 enregistrements et l'autre 24000.
    Chaque enregistrement à un code.
    j'aimerai pouvoir trier en ordre croissant les enregistrements des 2 feuilles afin que le premier enregistrement de la feuille B suive le dernier de la feuille A...

    Est-ce possible ???

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    En fait, tu veux trier les 84000 lignes se trouvant sur deux feuilles ?
    Si c'est ça, je n'ai pas d'idée. En passant par une table Access, peut-être...

    A+

    Edit
    Question subsidiaire ... Ton tri est ponctuel ou doit-il se répéter ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    arf ... et en restant sous excel c'est impossible ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    réponse à la question subsidiaire : Non une fois qu'il est fait on y touche plus. c'est un tri ponctuel .

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Et sinon en passant par acess comment je pourrais faire ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Alors le mieux est de passer par Access ou par word.
    L'un et l'autre autorisent les plus de 65535 lignes
    Dans word, c'est plus simple mais il faut de la place en mémoire...
    Le mieux serait de le faire par macro en mettant en tête de ta macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            ActiveDocument.UndoClear
    qui dit à word que tu n'es pas "intéressé" par le retour au tri précédent. Donc une occupation de mémoire réduite au minimum

    Dans word, tu te places dans ton tableau et tu fais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
         ActiveDocument.UndoClear
        Selection.Tables(1).Select
        Selection.Sort ExcludeHeader:=True, FieldNumber:="Colonne 6", _
            SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _
            FieldNumber2:="Colonne 3", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
            wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _
            wdSortFieldAlphanumeric, Separator:=wdSortSeparateByTabs
    Vérifie les colonnes du tri ou mieux enregistre la macro sur un bout de tableau avant de te lancer sur les 80...mille lignes, et ajoute ce que t'ai dit au début de ta macro
    Un simple copier/coller te permets de passer d'Excel à Word et inversement.(***)
    Pour sélectionner tout le tableau dans Word, c'est (sauf modif) Alt+Maj+5

    A+

    Tu dis

    Edit
    (***)Sauf si tu as des formules

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    cette macro je la met sous excel c'est bien ça ? ou sous word ?

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je t'ai conseillé d'enregistrer la macro, donc sous WORD, SUIS CE CONSEIL !
    Excuse mais je te vois mal parti. Le tri, c'est sous word que tu vas le faire.
    On est bien là dans un traitement ponctuel, sinon je ne t'aurais pas proposé cette solution...
    Fais tout comme je t'ai dit et tu n'auras pas de pb.
    J'ai fait ça sur 131000 lignes.
    Si tu n'as pas assez de mémoire pour tout coller d'un coup, colle tes données morceau par morceau mais de manière à ce que les tableau successifs, dans word, soient bien consécutifs (sans ligne vide entre les morceaux collés)
    Je suis inquiet tout à coup...

    A tout'

  9. #9
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut,

    et pourquoi on passerait pas par un tableau en memoire il me semble qu'on est pas limité en nombre de ligne

    Citation Envoyé par msdn
    Limites de la taille d'un tableau

    La longueur de chaque dimension d'un tableau est limitée à la valeur maximale d'un type de données Long, qui est (2 ^ 64) - 1. La taille totale limite d'un tableau varie en fonction de votre système d'exploitation et de la quantité de mémoire disponible. L'utilisation d'un tableau qui dépasse la quantité de RAM disponible sur votre système est plus lente, car les données doivent être lues à partir du disque et être écrites sur celui-ci.
    En fin juste une idée comme cela en passant

    Igloobel

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    j'y ai pensé mais comment faire pour trier dans le tableau... ça pourrait prendre pas mal de temps à moins qu'il y ait une fonction qui facilite la chose.

    Ce celà dit j'ai environ 52 colonnes , ça risque de fair un gros tableaux .

    Avis aux connaisseurs celà est il jouable ?

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    As-tu essayé avec Word ? Tu n'as pas à t'occuper du nombre de colonnes ni du fait que tu n'en vois qu'une partie dans Word.
    Un tableau en mémoire ? de 80000 lignes ? Effectuer un tri dessus ?
    Si tu peux faire ça alors c'est que t'en as une grosse de mémoire et tu n'auras pas de pb pour copier tout ton tableau dans word en une seule opération.

    Comme tu veux mais c'est de loin le plus simple.

    A+

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    en fait avec word je ne vois pas comment passer mes tableaux qui sont sous excel vers word pour ensuite les trier, et ensuite les remettre sous excel... :

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je t'ai pourtant tout expliqué... Je suis mauvais comme pédagogue...
    Bien (soupir !)
    Dans Excel, tu sélectionnes ta plage et tu fais "Copier" tout simple
    Dans word, dans un nouveau doc, tu fais "Coller"
    Dans word, tu te places dans une cellule du tableau, n'importe laquelle.
    Une fois là, tu vas dans le menu "Tableau" et tu sélectionnes "Sélectionner le tableau"
    Ensuite, tu retournes dans le menu "Tableau" et tu sélectionnes "Trier"
    Là, tu réponds aux questions :
    Selon quelle colonne en critère 1
    Selon quelle colonne en critère 2
    Selon quelle colonne en critère 3
    Tu lances le tri
    Tu sélectionnes tout ton tableau (menu "Tableau")
    Tu fais "Copier"
    Tu retournes sur Excel, le mieux étant que tu colles sur une feuille toute neuve, tu sélectionnes la feuille toute neuve,
    Tu sélectionnes la cellule A1 et...
    Tu fais "Coller"

    Ouf !

    Tu dis

    A+

    Edit
    Les trois critères de tris ne sont pas obligatoires, tu peux n'en mettre qu'un seul... Sait-on jamais...

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    ok et avant de coller dans excel je sélectionne les 65536 première données .

    Celà dit pour automatiser ça , je vais m'amuser

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Non, pour coller, tu ne sélectionnes que la cellule A1.
    Ceci dit, j'ai oublié qu'il y avait 80000 lignes et des poussières.
    Au moment de coller il va mettre un message d'erreur "Dépassement de capacité" ou autre chose
    Tu dois coller au maxi 65535 lignes
    A toi de sélectionner une plage dans word
    mais je dois vérifier quelque chose (!)

    Je te "rappelle"

    A tout'

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Quand je ne réponds pas c'est que je suis bousculé ici...
    Donc, j'ai vérifié, Word accepte bien le tri d'un tableau de grande taille mais il est encore en train de trier... et vu la vitesse, il en a pour des heures.
    Un bon conseil : Passe par Access, c'est fait pour ça. J'efface tous mes bons conseils précédents... ou alors, fais ça la nuit...

    Pour l'import d'une table Excel dans Access, c'est simple. "Inporter table" -> "Fichier" -> "Excel"... Pour ajouter une table à la précédente (la deuxième feuille), ce n'est pas compliqué. Pour trier nom plus.
    Retrouver les 60000 premières lignes ? Elles sont numérotées et tu peux exporter une sélection vers Excel... puis la suivante...

    Tu dis

Discussions similaires

  1. Réponses: 10
    Dernier message: 03/07/2015, 11h55
  2. [VBA-E] Vider une combobox sur une feuille
    Par yogyx dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/03/2007, 17h19
  3. [vba-excel]Comment modifier donnée sur partie filtrée d'un tableau
    Par boniface dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/01/2007, 19h27
  4. [excel] croiser des données sur 2 feuilles
    Par redwire dans le forum Excel
    Réponses: 2
    Dernier message: 06/01/2007, 10h38
  5. [VBA Excel]Envoie de données sur port serie
    Par Farbin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/08/2006, 08h05

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