Trié une base de donnée par VBA excel [Résolu/Fermé]

Signaler
-
maximus306
Messages postés
9
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
23 mai 2012
-
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

Messages postés
15011
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2020
1 223
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86481 internautes nous ont dit merci ce mois-ci

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
f894009
Messages postés
15011
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2020
1 223
Re,
Je regarde la chose!
re, D'accord je vous remerci,
j'aurai besoin d'un autre conseille, toujours avec du code VBA.
Sous un userform je doit rentré un code barre scanner de la forme "nom du profils;couleur du profil;longeur du profil" (donc s'éparé par les point virgule), malheureusement parfois les codes barres sont mauvais
et je voudrais que quand le code barre est mauvais, un message dit "de rentrer ces données manuellement"
il faudrait "je pence" que j'écrive en VBA " Si dans la 1er partie du code barre il n'y a pas l'un de ces noms d'une liste (les noms sont dans une feuille du classeur) alors code barre mauvais le rentré manuellement, et si dans la 2eme partie du code barre il n'y a pas l'une des couleurs de liste (les couleurs sont listé dans une feuille du classeur)alors code barre mauvais rentré manuellement les données

j'espère de pas trop en vous demandé et je vous en remercie d'avance
f894009
Messages postés
15011
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2020
1 223
Re,

Sous un userform je doit rentré un code barre scanner de la forme "nom du profils;couleur du profil;longeur du profil" (donc s'éparé par les point virgule), malheureusement parfois les codes barres sont mauvais


Pour moi, un code a barres ce sont des barres, comment arrivez vous a "nom du profils;couleur du profil;longeur du profil"

A+
re,
c'est en scannant le code barre que sa devient "nom du profils;couleur du profil;longeur du profil" mais bien sur a la base le code barre c'est bien fait de plusieur petit barre noire
Messages postés
15011
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2020
1 223
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
Messages postés
15011
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2020
1 223
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.
maximus306
Messages postés
9
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
23 mai 2012

bonjour éric,
je viens de faire ce que tu ma dit peu tu jeter un coup d'oeil pour voir si cela marche
merci
le fichier https://www.cjoint.com/?BEwh3Ydw8ak
eriiic
Messages postés
23272
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 février 2020
5 935
Ben non, il n'y a que ton adresse mail, c'est le fichier qu'il faut déposer.
Et tu peux tester toi même si tu arrives à récupérer le fichier avec le lien copié.

eric
maximus306
Messages postés
9
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
23 mai 2012

Voila le bon fichier https://www.cjoint.com/?BEwirUmlBBS
merci éric
maximus306
Messages postés
9
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
23 mai 2012

re f894009

j'ai essayées de mettre le code dans le textbox donc du coup il y a des défauts au niveau de la ligne 7, car j'avai renomé mon textbox en texCB, donc j'ai changer les noms pour éviter les erreur m il y a toujours des erreurz
j'espère qu'avec le fichier sous les yeux tu verra mieu ce que je voulais te dir.
f894009
Messages postés
15011
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2020
1 223
Bonjour,
Je recupere le fichier et je vous tiens au courant.
Messages postés
15011
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2020
1 223
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
maximus306
Messages postés
9
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
23 mai 2012

re,
je ferait la modification pour le boutton test et j'essayerai pour Application.ScreenUpdating = False

========================
pour l'entrée c'est l'entrée automatique qui ne marche pas
f894009
Messages postés
15011
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2020
1 223
Re,

La version ci-dessous a les modifs precedentes faites, plus affichage reste sur Stock réel avec rafraichissement des donnees entrees.

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

Pour tester, entrez manuellement les infos dans la textbox et click sur Valider. Chez moi cela marche.

A+
maximus306
Messages postés
9
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
23 mai 2012

re,

Oui la version marche bien sa reste bien sur réel stock, mais encore désoler la boite de dialogue reste ouverte cependant cela n'est pas trop grave just eme dire comment la fermer apres validation
merci
f894009
Messages postés
15011
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 février 2020
1 223
Bonjour,
mais encore désoler la boite de dialogue reste ouverte cependant cela n'est pas trop grave just eme dire comment la fermer apres validation
merci


J'ai laisse la boite a dialogue ouverte parce que je pensais que vous aviez plusieurs chutes a valider de suite (optimisation du temps de travail).

Private Sub ComOkCB_Click()

juste avant End Sub

ajouter: Unload Me

Idem pour Private Sub ComOkManuel_Click()

Bonne suite
maximus306
Messages postés
9
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
23 mai 2012

re,
je comrpend merci pour l'explication, et merci pour ce code qui me servira bcp

@+