Trié une base de donnée par VBA excel

Résolu
maximus306 -  
maximus306 Messages postés 9 Statut Membre -
Bonjour a tous

je vous explique mon problème, je doit triés une base de donnée, de chutes aluminium selon plus plusieurs critères : selon la désignation, selon la couleur, et selon la longueur.

Je voudrais pourvoir trier les chutes par odre aphabétique selon la désignation, en suite selon la couleur de ce profil, et pour finir selon sa longueur.

Ma base de donnée est conçus de plusieurs colonnes :
Nombre / Désignation / Couleur / Longeur / code barre / "vide" / Réservé / commentaires
donc un total de 8 colonnes, sachant que la colonne A=Nombre, B=Désignation, C=couleur, D=longueur, E=code barre (colonne caché), F=réservé, H=commentaire tous cela à la ligne 9

4 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Un exemple de code

    Sub Tri_multicriteres()
      Dim DerLigA
      'pour la dernière ligne de la colonne A
        DerLigA = ActiveWorkbook.Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
      'RAZ Tri precedent
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
      '1er Critere: Designation
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B10"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      'Deuxieme critere: Couleur
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("C10"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      'Troisieme critere: Longueur
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("D10"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      'Tri
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range("A9:H" & DerLigA)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub


    Bonne suite
    1
    1. maximus306
       
      bonjour, f894009

      merci de m'avoir répondu aussi vite j'avai oublié de préciser une chose, je voulais que le trie soit fait par un boutton, g essayé m je retrouvce une erreur

      Private Sub Comtriechute_Click()
      Dim DerLigA
      'pour la dernière ligne de la colonne A
      DerLigA = ActiveWorkbook.Worksheets("stock réel").Range("A" & Rows.Count).End(xlUp).Row
      'RAZ Tri precedent
      ActiveWorkbook.Worksheets("stock réel").Sort.SortFields.Clear
      '1er Critere: Designation
      ActiveWorkbook.Worksheets("stock réel").Sort.SortFields.Add Key:=Range("B10"), _
      SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      'Deuxieme critere: Couleur
      ActiveWorkbook.Worksheets("stock réel").Sort.SortFields.Add Key:=Range("C10"), _
      SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      'Troisieme critere: Longueur
      ActiveWorkbook.Worksheets("stock réel").Sort.SortFields.Add Key:=Range("D10"), _
      SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      'Tri
      With ActiveWorkbook.Worksheets("stock réel").Sort
      .SetRange Range("A9:H" & DerLigA)
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
      End With
      End Sub

      je suis désoler je suis vraiment pas très bon en VBA
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Excel 2003 ou 2007_2010?

      A quelle ligne l'erreur?
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re

      Version Excel 2003

      Sub Trimulticritere_2003()
        Dim DerLigA
        'pour la dernière ligne de la colonne A
          DerLigA = ActiveWorkbook.Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
        'Tri suivant Designation, Couleur, Longueur
          Selection.Sort Key1:=Range("B10"), Order1:=xlAscending, Key2:=Range("C10" _
              ), Order2:=xlAscending, Key3:=Range("D10"), Order3:=xlAscending, Header _
              :=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
              , DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
              xlSortNormal
      
      End Sub
      


      Bonne suite
      0
    4. maximus306
       
      re,

      J'utilise exel 2000, et le code vba merde a la ligne 3 "DerLigA....."

      Private Sub Comtriechute_Click()
      Dim DerLigA
      'pour la dernière ligne de la colonne A
      DerLigA = ActiveWorkbook.Worksheets("stock reél").Range("A" & Rows.Count).End(xlUp).Row
      'Tri suivant Designation, Couleur, Longueur
      Selection.Sort Key1:=Range("B10"), Order1:=xlAscending, Key2:=Range("C10" _
      ), Order2:=xlAscending, Key3:=Range("D10"), Order3:=xlAscending, Header _
      :=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
      , DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
      xlSortNormal
      End Sub
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Je regarde la chose!
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Un peu mieux structure

    Private Sub Comtriechute_Click()
      Dim DerLigA
        With Worksheets("stock reél")
          'pour la dernière ligne de la colonne A
          DerLigA = .Range("A" & Rows.Count).End(xlUp).Row
          'Tri suivant Designation, Couleur, Longueur
          .Range("A9:H" & DerLigA).Sort Key1:=.Range("B10"), Order1:=xlAscending, Key2:=.Range("C10" _
            ), Order2:=xlAscending, Key3:=.Range("D10"), Order3:=xlAscending, Header _
            :=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
            , DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
            xlSortNormal
        End With
    End Sub
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    c'est en scannant le code barre que sa devient "nom du profils;couleur du profil;longeur du profil"
    Cette info entre dans un control (textebox ou .......)?

    et je voudrais que quand le code barre est mauvais, un message dit "de rentrer ces données manuellement" comment savez vous que c'est mauvais? En principe un code barre est lu ou pas, mais pas lu a moitie. Par contre il peut y avoir des erreurs de lecture.
    0
    1. maximus306
       
      re,

      l'info rentre bien dans un text box quand je scanne le code barre
      Le code barre sera lu normalement, mais l'information peu etre éroné, enfete je veux bridé les entrées en disant qu'il y a que ce style d'information qui peu rentré donc tel profils et tel couleurs
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      enfete je veux bridé les entrées en disant qu'il y a que ce style d'information qui peu rentré donc tel profils et tel couleurs

      Un exemple de tests pour valider votre entree:
      tester le nombre de ";" (3)
      prendre les caracteres qui correspondraient au profil tester par rapport a votre liste
      prendre les caracteres qui correspondraient a la couleur tester idem
      prendre les caracteres qui correspondraient a la longueur tester par rapport a un format
      s'il y en a un

      A+
      0
    3. maximus306
       
      il y a deja un test qui recherche le nombre de ";"
      mais il y a pas de test pour le nom des profils et la couleurs des profils et je ne sais pas comment faire pour réaliser un code test en vba
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Avez vous des listes de references pour les nom de profil et les couleurs??
      0
    5. maximus306
       
      re,
      oui j'ai deux liste dans la feuille Macro1 ou le nom des profils sont de A1 à A67 et les couleurs de B1 à B19, car quand je rajoute manuellement un profil je passe par un user form ou il y a deux combox par le nom et la couleur
      0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    J'ai un peu modifie votre code. Sur l'UF BoiteEntree j'ai ajoute un bouton pour simuler une entree, vous l'enleverez.

    https://www.cjoint.com/?BEwm01EurRp

    Bonne suite
    0
    1. maximus306 Messages postés 9 Statut Membre
       
      re,

      je vous remerci sa marche bien cependant qd je clique sur entré une chute sa m'envoi dircetement sur la feuille macro1 et je ne reste pas sur la 1er feuille stock réel pourquoi?
      0
    2. maximus306 Messages postés 9 Statut Membre
       
      re c'est encore moi,

      le OK du code barre pour l'entrée de chute ne fonctionne plus
      sa fonctionne quand le code est faux "sa le refuse bien"
      mais ne fonctionne pas quand je rentre le bon code "je clique dans le vide"
      que faire?
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      et je ne reste pas sur la 1er feuille stock réel pourquoi?

      UserForm BoiteEntree
      Ajoutez :

      Application.ScreenUpdating = False

      Apres

      Private Sub UserForm_Activate()

      =======================================

      Le OK du code barre pour l'entrée de chute ne fonctionne plus
      sa fonctionne quand le code est faux "sa le refuse bien"
      mais ne fonctionne pas quand je rentre le bon code "je clique dans le vide"
      que faire?


      L'entree vient d'ou ?????
      0
    4. maximus306 Messages postés 9 Statut Membre
       
      re,

      Pour la feuille qui ne se fige pas:
      ce n'est pas sur le bouttons ok du code qui faut mettre sa car enfete il y ai deja apres je voi pas ou c'est userfrom BoiteEntree dans le VBA


      ===========================================
      L'entrée??? je ne comprend pas trop, mais je pence que tu voulais dire quel bouttons déconne???
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      modif: supprime bouton Cmd_Test, ajoute Application.ScreenUpdating = False

      https://www.cjoint.com/?BEwoJLXTrX8


      L'entrée??? je ne comprend pas trop, mais je pence que tu voulais dire quel bouttons déconne???

      Vous saisissez le code manuellement ou c'est une entree Automatique????
      0