Trié une base de donnée par VBA excel

Résolu/Fermé
maximus306 - 21 mai 2012 à 09:31
maximus306 Messages postés 9 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 23 mai 2012 - 23 mai 2012 à 14:59
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


A voir également:

4 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
21 mai 2012 à 09:54
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
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
21 mai 2012 à 10:55
Re,

Excel 2003 ou 2007_2010?

A quelle ligne l'erreur?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
21 mai 2012 à 11:05
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
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
21 mai 2012 à 11:34
Re,
Je regarde la chose!
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
21 mai 2012 à 12:40
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
21 mai 2012 à 13:52
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
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
21 mai 2012 à 16:30
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
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 21/05/2012 à 16:52
Re,
Avez vous des listes de references pour les nom de profil et les couleurs??
0
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
22 mai 2012 à 12:56
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
maximus306 Messages postés 9 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 23 mai 2012
22 mai 2012 à 13:32
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
maximus306 Messages postés 9 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 23 mai 2012
22 mai 2012 à 13:44
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
22 mai 2012 à 14:05
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
maximus306 Messages postés 9 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 23 mai 2012
22 mai 2012 à 14:20
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
22 mai 2012 à 14:38
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