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 :

tri sur les lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Juillet 2006
    Messages : 233
    Par défaut tri sur les lignes
    bonjour à tous,

    Dans une feuille de plusieurs milliers de lignes, j'ai 4(c1,C2,C3 et c4) colonnes avec des chiffres et je veux rajouter 4 colonnes à droite ayant respectivement la mention:
    C1,C2,C3,C4 si c1<c2<C3<c4
    C4,C2,C3,C1 si c4<c2<C3<c1
    C2,C1,C3,C4 si c2<c1<C3<c4
    C1,C2,C3,C4 si c1<c2<C3<c4
    C3,C1,C2,C4 si c3<c1<C2<c4
    C1,C4,C3,C2 si c1<c4<C3<c2
    etc...
    Merci du code en VBA-E

    Merci infiniment

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Par défaut
    Bonsoir
    Tu peux essayer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim I as Integer
    For I = 1 To X
       If cells(C1,I) < cells(C2,I) and cells(C2,I) < Cells(C3,I) and ...  Then
            Cells(C5,I)=Cells(C1,I)
            Cells(C6,I)=Cells(C2,I)
            ......
       ElseIf Cells(C4,I)<Cells(C1,I) and ... then
           ...
       ElseIf
     
     
       End If
    Next
    Un peu long à écrire mais ça marche
    Ca fait que 24 possibilités... (si je me rappelle bien mes cours stat..)
    Slts

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Par défaut
    Salut le forum

    Tu veux trier du plus petit au plus grand ?

    Car la question n'est pas très claire

    Mytå_Qc

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    salut
    en supposant que tes chiffres soient en colonne ABCDdans la 5 colonne tu utilise la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =RANG(A1;A1:D1;-1)
    que tu incremente vers la droite sur 4 colonne en faisant attention aux valeurs abolue et relative puis vers le bas. ça te donnera l'ordre. pour ce qui est de réinscrire le chiffre c'est une autre affaire. mais tu ne précise pas si tu veux faire ça en vba ou en excel

  5. #5
    Membre confirmé Avatar de Oh!Tofocus
    Profil pro
    Inscrit en
    Août 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 217
    Par défaut
    une solution en VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    For L = 1 To 10
     
    'efface les cellules cibles
    'necessaire si plusieur tri répétés avec des valeurs doublon
    'pour être sur que les cellues vides soit bien vides .....
    Range(Cells(L, 5), Cells(L, 8)).Select
    Selection.ClearContents
     
    'debut du classement
    A = Cells(L, 1)
    B = Cells(L, 2)
    C = Cells(L, 3)
    D = Cells(L, 4)
     
    Cells(L, 5 + ((A > B) + (A > C) + (A > D)) * -1) = A
    Cells(L, 5 + ((B > A) + (B > C) + (B > D)) * -1) = B
    Cells(L, 5 + ((C > A) + (C > B) + (C > D)) * -1) = C
    Cells(L, 5 + ((D > A) + (D > B) + (D > C)) * -1) = D
     
    ' suprime les cellules vides générées si 2 valeurs sont identiques
    For r = 6 To 8
    If Cells(L, r) = "" Then Cells(L, r) = Cells(L, r - 1)
    Next r
     
    Next L
    il y a surement plus simple mais je trouve la routine sympa

    A+

  6. #6
    Membre confirmé Avatar de Oh!Tofocus
    Profil pro
    Inscrit en
    Août 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 217
    Par défaut
    Citation Envoyé par alsimbad
    mais tu ne précise pas si tu veux faire ça en vba ou en excel
    Citation Envoyé par maestro1303 ( premier message)
    Merci du code en VBA-E
    Le réveil est difficile ce matin
    ou peut être ne t'es tu pas couché

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

Discussions similaires

  1. [PROC] Tri sur les colonnes pour chaque ligne
    Par san25 dans le forum SAS Base
    Réponses: 2
    Dernier message: 02/10/2013, 11h25
  2. [struts]: Pagination et tri sur les colonnes
    Par sleepy2002 dans le forum Struts 1
    Réponses: 3
    Dernier message: 09/07/2007, 15h16
  3. Fonction MAX sur les lignes
    Par yostane dans le forum Langage SQL
    Réponses: 7
    Dernier message: 01/04/2006, 21h49
  4. Réponses: 12
    Dernier message: 31/03/2006, 20h02
  5. statistiques sur les lignes et colonnes d'un fichier
    Par ericbareke dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2006, 16h09

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