Bonjour a tous,
Je suis debutante en VBA, et ai besoin de votre aide precieuse! Apres moultes recherches sur le net je n'ai rien trouve qui marche...
Je souhaite sur un fichier:
1) inserer une colonne en G, puis copier coller une formule ("concatenenr") ecrite sur la 2e ligne de cette colonne (en colonne G) et la coller jusqu'a la derniere ligne de ce fichier,
2) trier cette meme colonne G par ordre alphabetique puis la colonne A de mon fichier par ordre chronologique, et idem, toujours en selectionnant jusqu'a la derniere ligne du fichier.
3) inserer des sous totaux par changement de nom dans ma colonne G, jusqu'a la derniere ligne de mon fichier.
J'ai reussi a enregistrer une macro sur un fichier donne avec un certain nombre de lignes, mais je voudrais que ma macro puisse s'adapter au nombre de lignes de mon fichier, ce qui je n'arrive pas a faire marcher.
Voici la macro enregistree sur mon fichier qui contient 6052 lignes (je joins le fichier a ce message, avec un onglet contenant les donnees et l'autre contenant ce que je veux obtenir).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 ' Reasonablenesstest3 Macro ' ' Range("D1").Select ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Columns("G:G").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("G1").Select Selection.NumberFormat = "General" ActiveCell.FormulaR1C1 = "Name & ID" Range("G2").Select ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-1],"" ("",RC[-2],"") "")" Range("G2").Select Selection.AutoFill Destination:=Range("G2:G6052") Range("G2:G6052").Select Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select ActiveWorkbook.Worksheets("Data").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Data").Sort.SortFields.Add Key:=Range("G2:G6052") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Data").Sort.SortFields.Add Key:=Range("B2:B6052") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Data").Sort .SetRange Range("A1:K6052") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.Subtotal GroupBy:=7, Function:=xlSum, TotalList:=Array(3, 8), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True ActiveSheet.Outline.ShowLevels RowLevels:=2 End Sub
Un grand merci d'avance de votre aide!
Partager