Trié une base de donnée par VBA excel
Résolu
maximus306
-
maximus306 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
maximus306 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Trié une base de donnée par VBA excel
- Excel trier par ordre croissant chiffre - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Formules excel de base - Guide
4 réponses
Bonjour,
Un exemple de code
Bonne suite
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
Re,
Un peu mieux structure
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
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.
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.
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+
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+
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
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
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 ?????
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 ?????
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???
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???
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????
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????
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
Excel 2003 ou 2007_2010?
A quelle ligne l'erreur?
Version Excel 2003
Bonne suite
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
Je regarde la chose!