Vba pour Excel macro de tri des lignes
Fermé
rouzb
Messages postés
4
Date d'inscription
jeudi 18 décembre 2008
Statut
Membre
Dernière intervention
19 décembre 2008
-
19 déc. 2008 à 12:41
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 9 janv. 2009 à 13:49
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 9 janv. 2009 à 13:49
A voir également:
- Vba pour Excel macro de tri des lignes
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Aller à la ligne excel - Guide
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Liste déroulante excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
6 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
19 déc. 2008 à 12:52
19 déc. 2008 à 12:52
Bonjour,
Pourrais-tu mettre un classeur sur Cjoint.com avec une feuille qui montre comment les données sont entrées et une feuille avec les données tel que tu voudrais.
A+
Pourrais-tu mettre un classeur sur Cjoint.com avec une feuille qui montre comment les données sont entrées et une feuille avec les données tel que tu voudrais.
A+
ok le voila: https://www.cjoint.com/?mvlNAwQZjc
le mieux est que tu ajoutes toi même les items aléatoirements (4 onglets). Tu verras qu'en ajoutant un item de type "Installation Kit" (quatrieme onglet), 2 (ou 3 selon que ce soit In-Roof ou On-Roof) son générés. Je voudrais qu'a la fin (par exemle en cliquant sur le bouton Finish), tous les items en rapport avec le premier onglet (tank) soient classés en premier, puis tous ceux ac l'onglet 2 (panel), etc.. Quelque chose comme ca : https://www.cjoint.com/?mvlN2AugrW
Merci d'avance
le mieux est que tu ajoutes toi même les items aléatoirements (4 onglets). Tu verras qu'en ajoutant un item de type "Installation Kit" (quatrieme onglet), 2 (ou 3 selon que ce soit In-Roof ou On-Roof) son générés. Je voudrais qu'a la fin (par exemle en cliquant sur le bouton Finish), tous les items en rapport avec le premier onglet (tank) soient classés en premier, puis tous ceux ac l'onglet 2 (panel), etc.. Quelque chose comme ca : https://www.cjoint.com/?mvlN2AugrW
Merci d'avance
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
21 déc. 2008 à 13:13
21 déc. 2008 à 13:13
Je n'ai pas encore toutes les données, si j'ai compris le début ? tu met tous les fichiers PackingChecklist sur une même feuille ? et ensuite tu trie ?
Sur ton fichier Exemple met sur la feuille 2 un exemple de la liste (non triée) que tu récupère
Sur ton fichier Exemple met sur la feuille 2 un exemple de la liste (non triée) que tu récupère
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
22 déc. 2008 à 07:28
22 déc. 2008 à 07:28
Je pense que c'est ça que tu veux...
J'ai prévu 5 sous-item maximum, ça suffit ?
Tu dit..
A+
Private Sub cbGenerateDN_Click() Dim MaxLig As Long, Lig As Long, Col As Integer, IxLig As Integer Application.ScreenUpdating = False Worksheets("PackingList").Columns("A:b").Copy _ Destination:=Worksheets("Delivery Note").Columns("A:b") Worksheets("PackingList").Columns("d").Copy _ Destination:=Worksheets("Delivery Note").Columns("c") 'Met les sous-item sur la même ligne With Sheets("Delivery Note") .Select For Lig = 2 To .Range("B65536").End(xlUp).Row If .Cells(Lig, 2) = "" Then Exit For If .Cells(Lig, 1) = "" Then .Cells(Lig, 2).Copy .Cells(Lig - 1, Col) .Cells(Lig, 3).Copy .Cells(Lig - 1, Col + 1) .Rows(Lig).Delete Col = Col + 2: Lig = Lig - 1 Else Col = 4 End If Next Lig 'Trier la liste. .Range("B2").Select Selection.Sort Key1:=.Range("B2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'Renumérote les lignes. For Lig = 2 To .Range("B65536").End(xlUp).Row .Cells(Lig, 1) = Lig - 1 Next Lig 'Remettre les sous-item. Col = 4: MaxLig = .Range("D65536").End(xlUp).Row: IxLig = 1 For Lig = MaxLig To 2 Step -1 If .Cells(Lig, 4) <> "" Then While Cells(Lig, Col) <> "" .Rows(Lig + IxLig).Insert Cells(Lig, Col).Copy .Cells(Lig + IxLig, 2) Cells(Lig, Col + 1).Copy .Cells(Lig + IxLig, 3) Col = Col + 2: IxLig = IxLig + 1 Wend Col = 4: IxLig = 1 End If Next Lig MaxLig = .Range("D65536").End(xlUp).Row .Range(Cells(1, 4), Cells(MaxLig, 8)).Clear End With Application.ScreenUpdating = True End Sub
J'ai prévu 5 sous-item maximum, ça suffit ?
Tu dit..
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
salut lermitte22; merci pour ta réponse j'ai essayé ton code mais ca ne marche pas. Voilà le résultat que ca donne :
https://www.cjoint.com/?bjkbc6ATnR
Dans la feuille Packing List, tu verras l'ordre dans lequel j'ai ajouté les items, dans la feuille Delivery Note ce que ca donne quand je trie avec ton code.
Tu trouveras ici le résultat que je recherche :
https://www.cjoint.com/?bjkdfPYPLp
Merci d'avance
https://www.cjoint.com/?bjkbc6ATnR
Dans la feuille Packing List, tu verras l'ordre dans lequel j'ai ajouté les items, dans la feuille Delivery Note ce que ca donne quand je trie avec ton code.
Tu trouveras ici le résultat que je recherche :
https://www.cjoint.com/?bjkdfPYPLp
Merci d'avance
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
9 janv. 2009 à 13:49
9 janv. 2009 à 13:49
et comme ça ?
https://www.cjoint.com/?bjoKYBpgoq
A+
https://www.cjoint.com/?bjoKYBpgoq
A+