Macro de tri qui connait la taille du tableau

Tonikbabe

XLDnaute Nouveau
Bonjour,

Je vous lis depuis quelques temps déjà, et pleins de choses m'ont déjà aidée sans que j'ai besoin de poser plus de questions...

Jusqu'à aujourd'hui! :D

Je vous explique un petit peu.

Je crée en ce moment un outil pour faire automatiquement des statistiques sur l'ensemble des activités de ma boite. J'ai un classeur tout plein de feuilles.:eek:

Certaines ne contiennent que des données choisies des premières feuilles du classeur. Elles sont donc liées par des formules.

Les données importées n'étant pas toujours de la meme quantité, j'ai arbitrairement choisi la fin de mes tableaux (donc la fin de l'étendue de mes formules). L'info importante ici étant que si je considère mon tableau dans son ensemble, après mes données j'ai tout plein de lignes blanches.

Voici mon problème.

Je souhaite créer une macro pour trier les données dans une feuille (plusieurs, d'ailleurs, mais bon, on va le faire une par une!).
J'ai déjà trouvé ce post https://www.excel-downloads.com/threads/tri-de-colonnes.129962/ dans lequel Brigitte a posté un charmant récap super pédagogue sur la création d'une telle macro. (Au nom de tous les lecteurs silencieux, merci Brigitte! ;) )

Seulement voila, en triant comme ça, ma macro trie aussi les lignes blanches! Etant donné qu'ensuite je voudrais aussi que la meme macro me fasse des sous-totaux, ça m'embete qu'elle prenne en compte les lignes blanches...

AUSSI (ça y est, j'arrive à la fin de ma question) je voudrais intégrer à cette macro un compteur de lignes dont la VALEUR est non nulle (car les lignes vides contiennent une formule) et que mon tri et mes sous-totaux s'arretent à la dernière ligne qui contient des données, quelque soit cette dernière ligne.

Voila, j'espère que c'est clair! Je suis sure que la solution repose sur une bete ligne de VBA que tout le monde connait, mais j'ai appris tout Excel sur le tas, et bien que je m'en sorte pas trop mal quand meme, j'ai jamais vraiment appris ces chouettes petites phrases magiques qui font d'Excel et Access de gentils animaux dociles et compréhensifs... :rolleyes:

Merci à tous de m'avoir lue jusqu'ici, et éventuellement de m'aider.

Tonik'

PS: J'ai eu récemment l'autorisation de ma chère et tendre cheffe de m'acheter un bouquin sur Excel aux frais de la princesse. Ayant un faible pour l'édition Pour les Nuls, j'hésite quant à quel bouquin serait le mieux. Peut-etre pourriez-vous me donner un conseil? Mon profil: Intéressée par Excel et Access, formules et codages. Débrouillarde, mais n'ayant eu aucun cours de formules ni de codages. Risque de perdre patience en cherchant des infos dans un bouquin axé trop "débutant"... :cool:
 

JNP

XLDnaute Barbatruc
Re : Macro de tri qui connait la taille du tableau

Bonjour TonikBabe et bienvenue :),
Sacrer Brigitte maitresse es macro vaut à lui seul une réponse :p... (bisous les couettes).
Quelque chose dans ce genre
Code:
Sub Test()
Dim I As Integer, DerLigne As Integer
DerLigne = Range("a500").End(xlUp).Row
For I = DerLigne To 1 Step -1
If Cells(I, 1) = 0 Or Cells(I, 1) = "" Then Rows(I).Delete
Next I
End Sub
devrait le faire, mais attention, c'est destructif (suppression pure et dure de la ligne de résultat), donc à n'appliquer que sur une copie de ta feuille originale par exemple.
Bon courage :cool:
 

Tonikbabe

XLDnaute Nouveau
Re : Macro de tri qui connait la taille du tableau

Bonjour JNP (et les autres :) ) et merci pour ta réponse.

Désolée de n'avoir pas répondu avant, je travaille de nuit...

Donc, pour répondre, la macro que tu me proposes a l'air d'etre une macro qui supprime les lignes vides... c'est fort instructif, mais c'est pas du tout ça qu'il me faut, en fait...

J'ai déjà un groupe sans lignes vides avec mes données, les lignes vides (avec une formule, mais qui ne renvoie rien) ne viennent qu'après.

Ce qu'il me faudrait, c'est plutot un compteur de lignes non nulles... Je pensais que ça existait, non?
EDIT: En fait, je crois que j'ai simplement pas compris ce que tu me proposais... Je m'attendais à une macro qui me permette de trier/faire des sous totaux "jusqu'à la dernière ligne de valeur non nulle"... (pour info, les lignes vides apparaissent en effet "" et non 0)
Je vais plancher sur un mini classeur type, pour que vous puissiez mieux voir ce que je veux faire...
 
Dernière édition:

Tonikbabe

XLDnaute Nouveau
Re : Macro de tri qui connait la taille du tableau

Voila une version très légère de ce que j'ai et de ce que je voudrais obtenir.

Merci pour votre aide!

EDIT: J'ai oublié de préciser, j'ai essayé le code que tu m'as donné, JNP, mais ça n'a eu aucun effet (apparent en tout cas), toutes les lignes sont toujours là...
Et deuxième point: les lignes vides peuvent disparaitre, ou pas, en soi ça ne me gene pas du tout. Il me faut juste les résultats des sous-totaux sous mes données (histoire que l'utilisateur n'ai pas à scroller jusqu'à la 1500ème ligne!)
 

Pièces jointes

  • Tonikbabe-démo.zip
    11.5 KB · Affichages: 21
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Macro de tri qui connait la taille du tableau

Re :),
Je ne comprends pas vraiment... J'ai ouvert ton fichier, ai appliqué ma macro sur la feuille2, ça m'a bien supprimé les lignes parasites...
Si tu fait ton TCD d'après la feuille nettoyée, ça doit le faire. Par contre, si tu attends de ton TCD déjà fait que les résultats disparraissent, là, ça ne le fait pas...
A ce moment là, il faudrait que tu fabriques ton TCD avec l'enregistreur de macro, et qu'on l'adapte à la taille du tableau nettoyé (les TCD, c'est pas vraiment mon truc, je n'en ai jamais l'utilité... mais on trouvera).
Bon courage :cool:
 

Tonikbabe

XLDnaute Nouveau
Re : Macro de tri qui connait la taille du tableau

Salut!

Je ne comprends pas vraiment... J'ai ouvert ton fichier, ai appliqué ma macro sur la feuille2, ça m'a bien supprimé les lignes parasites...

1) :eek: Alors là, en effet, c'est plutôt mystérieux... Je l'ai testée sur mon fichier démo et sur mon vrai fichier, et ça ne marche que sur le fichier démo! :confused:

2) Par contre, sur mon pc du bureau, ta macro qui a marché sur mon fichier démo a mis 10 ou 15 secondes par ligne à supprimer! Et là, on part sur une marge de 1 à 900 lignes vides, et comme le fichier est déjà lourd, je ne crois pas que je pourrai utiliser cette macro... (On a pas non plus des ordinateurs dernière génération au boulot! :eek: ) C'est aussi pour ça que je voulais faire une macro qui trouve la fin du tableau non vide, c'est pour limiter les calculs...

A ce moment là, il faudrait que tu fabriques ton TCD avec l'enregistreur de macro, et qu'on l'adapte à la taille du tableau nettoyé

3) Je ne comptais pas faire un TCD en fait. Si j'ai mis une troisième feuille dans l'exemple, c'était juste pour montrer ce que je voulais obtenir. Mais je ne veux pas "créer" de feuille de résultats, je cherche à faire une macro qui me trie (et me sous-totalise) mes données non-nulles dans la feuille de départ.

Nouvelle info que j'avais pas précisée: La colonne A contient toujours quelque chose, lorsque la ligne m'intéresse. Est-ce que ça ne pourrait pas alléger le calcul de ta macro? Si tant est que j'arrive à la faire marcher sur mon fichier... :(

Pfff, désolée, je pensais pas que ce serait aussi galère! Mais je sais vraiment pas comment faire.
 

JNP

XLDnaute Barbatruc
Re : Macro de tri qui connait la taille du tableau

Re :),
L'affichage des résultats à l'écran ralenti la macro. Teste
Code:
Sub Test()
Dim I As Integer, DerLigne As Integer
DerLigne = Range("a500").End(xlUp).Row
[COLOR=red]Application.ScreenUpdating = False[/COLOR]
For I = DerLigne To 1 Step -1
If Cells(I, 1)[COLOR=red].Value[/COLOR] = 0 Or Cells(I, 1)[COLOR=red].Value[/COLOR] = "" Then Rows(I).Delete
Next I
[COLOR=red]Application.ScreenUpdating = True[/COLOR]
End Sub
ça devrait mettre le turbo :p...
Par contre, il faudrait un échantillon de ton vrai classeur pour voir pourquoi elle ne fonctionne pas dessus (essaie avant avec les Value que j'ai rajouté). Pour la colonne A, c'est déjà uniquement elle que je teste.
Bon courage :cool:
 

Tonikbabe

XLDnaute Nouveau
Re : Macro de tri qui connait la taille du tableau

Salut!

Merci pour ce nouveau code.

Ceci dit, je l'ai testé sur ma démo, et il me dure quand meme 1 min pour 9 lignes à supprimer, et il ne fonctionne toujours pas sur mon fichier original (ça me dépasse ça! :D ) donc je ne vais définitivement pas m'y prendre comme ça! :cool:

Finalement, j'ai trouvé le moyen de récupérer le N° de la dernière ligne non vide de ma feuil2.

Il ne me manque plus qu'à limiter ceci:

Code:
Sub MacroTEST()
    Selection.Sort Key1:=Range("AA2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Selection.Subtotal GroupBy:=27, Function:=xlSum, TotalList:=Array(28), _
        Replace:=True, PageBreaks:=False, SummaryBelowData:=True
End Sub

à un n° de ligne, qui se trouve etre =max('feuil1'C:C)
(rappel:nous on travaille sur la Feuil2)

Est-ce que tu sais traduire ça?

Et est-ce que tu penses qu'il faut que je recrée un sujet, puisque la question a changé?

Merci JNP en tout cas! :eek:
 

JNP

XLDnaute Barbatruc
Re : Macro de tri qui connait la taille du tableau

Re :),
Si le temps de la macro est bien celui indiqué, les PC datent de l'âge de pierre, tu ferais mieux de ressortir ton boulier, ça irait plus vite :p.
La macro sur ma machine avec ton fichier de démo, moins d'une seconde (tu te demandes même si tu l'a déclenché :D!).
=max('feuil1'C:C),
en VBA, ça donne ça
Code:
= Application.WorksheetFunction.Max(Sheets("Feuil1").Range("C:C"))
Pour un nouveau post, ce n'est utile que lorsque la discussion est foncièrement différente. Là, tu est bien toujours dans ta question "qui connait la taille", donc autant que ceux qui passent aient déjà notre début de reflexion, ça leur évitera de redonner les mêmes pistes ;).
Pour la suppression dans tes formules, il faudrait vraiment voir ce que renvoit tes formules... Peut-être est-ce " " et non ""...
A + :cool:
 

Discussions similaires

Réponses
9
Affichages
193
  • Résolu(e)
Microsoft 365 Taille UserForm
Réponses
3
Affichages
301

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG