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 ascendant et remplacement des premières valeurs


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Tri ascendant et remplacement des premières valeurs
    Bonjour a Tous,

    Je suis nouveau dans la communauté et je profite de se message pour saluer tous ceux qui s'y trouvent.
    j'ai un ensemble de données partagées sur 5 lignes.J'effectue un premier tri des 4 premières lignes en triant la dernière de mes 4 lignes en classement ascendant.Puis je remplace les 6 premières valeurs par 1 2 3 4 5 6.

    Je fais de même avec mes 4 lignes mais cette fois avec comme cle de tri l'avant dernière ligne classée elle aussi en classement ascendant puis les 5 premières valeurs de la ligne classée sont remplacées par 1 2 3 4 5.

    Toujours avec mes 4 lignes sélectionnées j'effectue un classement ascendant de la deuxième ligne utilisée comme clé et remplace les quatre premières valeurs par 1 2 3 4.

    Enfin je classe l'ensemble de ces quatre lignes en prenant la première ligne comme clé en la triant en classement ascendant.

    J'ai joint un fichier qui décompose les opérations que j'ai décrit et illustre mon propos.les lignes peuvent être composées de 10 a 30 colonnes.Dans l'exemple il y en a 16.

    Pourriez vous m'aider avec un programme vba qui puisse exécuter ses taches que j'effectue de façon manuelle sur un grand ensemble de paquets de données? merci a Tous pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Je ne comprends pas l'utilité de ce programme, mais bon...
    As-tu essayé avec l'enregistreur de macro ?
    Ça te donnerait déjà une idée de la façon de procéder.

    Si oui (ou non...) où se situe ton problème exactement ?

    Et j'imagine que l'étape 2 est de 17 à 20, et non pas 21 (?)
    MPi²

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonsoir oui tu as tout a fait raison c'est bien de 17 a 20.Je ne sais pas programmer d'ou ma demande.L'enregistreur ne m'a pas permis d'obtenir une macro fonctionnelle.
    Je cherche une macro qui me permettrait de faire le tri de chacune des lignes puis en modifier les premiers chiffres.Le tri d'une ligne de ces quatre lignes affectent les autres lignes. J'espère avoir été plus précis.

  4. #4
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut tri ascendant et remplacement despremières valeurs
    Bonjour,

    Ton fichier exemple montre semble-t-il le fichier déjà traité. Les valeurs remplacées n'ont aucune incidence dans le traitement ?

    Par ailleurs, que représente la dernière ligne (situées hors cadre) de chaque groupe de données. Est-elle sans intérêt dans ce traitement assez bizarre voire incompréhensible pour moi ?

    Cordialement.

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Tu mets ton tableau de départ dans une feuille vierge nommée "Feuil2" de C3 à R7 puis tu lance la proc ci-dessous. Attention, le résultat final sera légèrement différent du tien car il y a une erreur à l'étape 3, le tri se faisant sur la ligne 2, le 6 de la ligne 1 ne peut pas se trouver en seconde position car la valeur située dans le champ au dessus est 143 donc supérieur à d'autre valeurs de la même ligne.
    Pour utiliser ce code, touches "Alt+F11" --> Menu "Insertion" --> "Module" puis coller le code ensuite, positionner le curseur n'importe où entre Sub et End Sub puis touche F5 ou flèche verte (Exécuter) :
    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
    27
    28
    29
    30
    31
    32
    33
    34
     
    Sub TestTri()
     
        Dim Plage As Range
        Dim PlageTri As Range
        Dim I As Integer
     
        With Worksheets("Feuil2")
     
            Set Plage = .Range(.Cells(3, 3), .Cells(6, 18))
     
            For I = 4 To 1 Step -1
     
                .Range(.Cells(15, 3), .Cells(30, 6)) = Application.WorksheetFunction.Transpose(Plage)
     
                Set PlageTri = .Range(.Cells(15, 3), .Cells(30, 6))
     
                PlageTri.Sort Plage.Columns(I), xlAscending
     
                If I > 1 Then
     
                    PlageTri(1, I) = 1
                    PlageTri(1, I).AutoFill Range(PlageTri(1, I), PlageTri(I + 2, I)), 9
     
                End If
     
                Plage = Application.WorksheetFunction.Transpose(PlageTri)
                PlageTri.Clear
     
            Next I
     
        End With
     
    End Sub
    Hervé.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour Theze

    Je n'ai pas pu te répondre plus tôt.Désolé.Merci de t’être intéressé a mon problème et de me proposer une solution.Je vais essayer et je te reviens au plus tôt pour te dire ce qu'il en est.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/09/2006, 16h43
  2. Remplacement des espaces dans les valeur d'un tableau
    Par calimero642 dans le forum Langage
    Réponses: 10
    Dernier message: 12/05/2006, 18h56
  3. [68k] Addition des 50 premières valeurs d'un tableau
    Par mortalius dans le forum Autres architectures
    Réponses: 2
    Dernier message: 01/12/2005, 14h43
  4. vb: remplacer des valeurs
    Par philippef dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 01/12/2005, 10h48
  5. Tri par la moyenne des valeurs de champs ?
    Par rozwel dans le forum Requêtes
    Réponses: 8
    Dernier message: 28/01/2005, 18h35

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