Bonjour à tous,
Je suis sur un (très) (trop) gros fichier excel de 130.000KB et j'ai régulierement un message d'erreur m'expliquant d'Excel n'est pas capable de mettre à jour les formules. Pour éviter de me pourrir la vie et avancer dans mon boulot j'ai desactivé le mode calcul auto, et j'ai fait une macro qui fait: Range(...).calculate pour faire les calculs progressivement, mais ca va pas durer. C'est un soucis de mémoire vive je pense, ça vous est deja arrivé ?
J'ai deux petits soucis:
Le 1er soucis sur lequel je souhaite votre aide:
For i = 3 To 31 '31 = dernière feuille de données'
Sheets(i).Calculate
DernLigne = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row
Sheets(i).Columns("A:Q").Sort.SortFields.Add Key:=Range("Q2:Q" & DernLigne), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Sheets(i).Sort
.SetRange Range("A1:Q" & DernLigne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next i
Je souhaite faire un tri de chaque feuille de 3 à 31 au niveau de la colonne Q (ascending, en gardant des headers). Petite précision, je ne connaissais pas le code des tri et j'ai donc adapté l'enregistreur... Si qlq a une piste
Erreur de type 1004 "Sort non compatible avec Range" sur la ligne
Sheets(i).Columns("A:Q").Sort.SortFields.Add Key:=Range("Q2:Q" & DernLigne), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
Le second:
Je cherche à remplir un tableau avec le top 4 et le flop 4 des valeurs d'un autre tableau que j'ai préalablement trié. Petit subtilité, j'ai créer un menu déroulant pour que l'on puisse choisir la feuille ou aller chercher le top/flop. Sur ce sujet je n'arrive pas à:
- trouver l'expression pour dire "Range des 4 dernière lignes de la colonne ..." sachant que j'ai définit la dernière ligne.
- Faire comprendre à ma macro dans quelle feuille aller choisir les infos (mais l'ordre ne change pas, toutes mes macro ont été écrites en appellant la sheet(i) du coup surement en refaisant pareil
En vous remerciant