Problème de classement automatique avec macro

Bonjour le forum,

J'ai un fichier (ci-joint) avec 2 feuilles.

Une première feuille avec les événements (jour_semaine; nombre) et une deuxième feuille récapitulative avec un comptage des événements (jour_semaine; somme des jours).

Dans la deuxième feuille, je souhaite classer les événements par ordre croissant.

J'ai nommé "somme" la plage comprenant la colonne des jours et la colonne des sommes.

J'ai repris une macro de classement, que j'ai placé dans la feuille 2 (récapitulatif).

1é problème: ça eu fonctionné (plus ou moins), mais ça ne fonctionne plus, le classement ne se fait plus, la macro ne s'active plus, plus rien ne se passe.

2é problème: La macro commence par

Private Sub Worksheet_Change(ByVal Target As Range)

Lorsque la macro était active, il fallait que je change une valeur dans la colonne des sommes (feuille 2) pour que le classement se fasse, les jours de la semaine bougeaient également et restaient donc en face la valeur correspondante.

Mais si je remplacais une valeur dans la feuille 1, la somme dans la feuille 2 se faisait bien, mais le classement ne se faisait pas.

Hors, je veux mettre à jour mes donnée dans la feuille 1, et je veux que la feuille 2 se mette en forme automatique sans que j'ai à y toucher.

Je ne comprends pas pourquoi, alors que dans la feuille 2, une valeur de somme change via ma modification de la feuille 1, cela n'est pas considéré comme un changement de cellule par la macro, et donc qu'elle ne fait pas le classement.

Merci d'avance pur votre aide.

12classeur1.xlsm (14.91 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Bye !

10classeur1-v1.xlsm (23.31 Ko)

Merci gmb pour ce fichier.

Ce n'est pas exactement ce que je veux, j'ai remis un fichier modifié.

Le but des tableaux "résumé", est de tracer des graphs (Feuil3), pour ensuite exporter vers PowerPoint, avec un lien.

Je voudrais qu'en modifiant la Feuil1, les graphs se mettent à jour sans activer la Feuil2.

Je ne serai pas l'utilisateur de ce fichier, je veux donc le simplifier au maximum.

Néanmoins, dans un premier temps, j'ai essayé de comprendre et d'adapter ton fichier.

J'ai rajouter un tableau qui compte le nombre d'apparition dans la liste de jours ou de mois.

J'ai réussi à adapter pour la somme des Mois, mais le comptage

NB.SI()

ne fonctionne pas.

Comment adapter cette macro, pour quelle s'actionne à chaque fois que je modifie la Feuil1, sans toucher les 2 autres?

Merci d'avance.

5classeur1-v2.xlsm (26.92 Ko)

Un essai à tester.

Bye !

Encore gmb, de prendre du temps pour résoudre mes problèmes.

J'ai bien tout regardé dans ton fichier, et il y a des choses que je ne comprends pas bien.

J'ai remis un fichier avec quelques modifications (macro en commentaire).

Pour comprendre ce qui était nécessaire, j'ai mis en commentaire différentes parties des macros, et j'ai regardé si ça fonctionnait.

J'ai vu que tu as rajouté une macro "Module 2", pourtant quand je la mets en commentaire, le classement fonctionne quand même

Idem pour le "module 1"

J'ai vu que dans le Feuil2, tu avais rajouté des "_" dans

Private Sub Worksheet____Change(ByVal Target As Range)

et j'en ai déduit que cette partie n'est plus lue

Ca fonctionne, mais pas tout à fait comme je voudrais

Le classement se fait lorsque je clique sur l'onglet, pour rendre la "Feuil2" active.

Je voudrais que cela fonctionne lorsque la "Feuil1" est modifiée.

Comment faire avec

Private Sub Worksheet_Change(ByVal Target As Range)

à supposer que cela soit la bonne commande

Encore d'avance

8classeur1-v4.xlsm (27.25 Ko)

Bonjour

Tu écris :

J'ai vu que tu as rajouté une macro "Module 2",

Cette macro, comme la macro1 a été enregistrée pour en récupérer la bonne syntaxe.

Elle ne servent plus à rien et j’aurais dû les supprimer.

J'ai vu que dans le Feuil2, tu avais rajouté des "_" dans

Private Sub Worksheet____Change(ByVal Target As Range)

En effet, c’était pour ne pas détruire le travail d’un autre, mais je voulais rendre inactive cette macro événementielle qui aurait compromis le résultat de ma propre macro.

Je voudrais que cela fonctionne lorsque la "Feuil1" est modifiée.

Ok .

Comment faire avec

Private Sub Worksheet_Change(ByVal Target As Range)

Voir version 5 ci-joint

Bye !

13classeur1-v5.xlsm (34.37 Ko)

Encore gmb pour ce nouveau tableau.

Mes données comptabilisées sont d'abord filtrées via une macro, que tu m'avais d'ailleurs donnée dans le cadre d'un autre post

Le problème, c'est lorsque je mets tout ensemble, cela ne fonctionne plus.

Feuil0 = données brutes, avec une macro de filtrage. Cette macro s'active avec

Worksheet_Activate()

et il faudra également que je cherche comment adapter le code avec

Private Sub Worksheet_Change(ByVal Target As Range)

Feuil1 = données filtrées via la macro qui se trouve dans la Feuil0. Et une macro avec

Private Sub Worksheet_Change(ByVal Target As Range)

qui classe par ordre croissant les données dans les tableaux de la Feuil2

Feuil2 = tableau de bord, issue de la Feuil1, pour l'instant, je me suis focalisé sur le comptage des jours et mois, j'ai mis de côté les sommes.

Feuil3 = graphiques issues de la Feuil2.

Et donc, mes problèmes sont:

- Une erreur dans le macro de la Feuil0, avec un surlignage de la ligne

tabloR(j - 1, k) = f0.Cells(i, j).Value * 1
  • Lorsque je n'utilise pas le filtrage et donc que je modifie les plages: "plageJ", "plageM" et "PlageNbe", que je les basculent de la Feuil1 à la Feuil0, et que je remplace les noms des jours ou des mois, le classement pour les mois se fait parfaitement, mais pas celui des jours, alors que pour mois les codes pour les 2 (Feuil1) sont identiques.
  • Et des fois, lorsque j'active la Feuil0, et donc que je lance la macro pour le filtrage, ça plante, je ne peux plus cliquer sur les cellules. Je suis obligé de faire "Ctrl"+"Alt"+"Suppr".

Merci pour l'aide

14classeur1-v6.xlsm (27.08 Ko)

Bonjour

jaco a écrit :

- Une erreur dans le macro de la Feuil0, avec un surlignage de la ligne Code: Tout sélectionnertabloR(j - 1, k) = f0.Cells(i, j).Value * 1

Voilà une nouvelle version qui règle ce problème. A tester.

Pour le reste, je ne vois pas l'intérêt de ces manips...

Bye !

13classeur1-v7.xlsm (37.19 Ko)

gmb pour ce nouveau tableau, mais de mon côté, cela ne fonctionne pas.

Lorsque j'ouvre ton fichier et que j'ouvre l'interface macro et que je clique sur le symbole "lecture" ("Exécuter Sub/UserForm(F5)"), je peux exécuter "Feuil4.Evenement", ce que je fais.

Ensuite, lorsque je clique sur l'ongelt Feuil0, pour activer la feuille, j'ai un message de débogage qui surligne

tabloR(j - 1, k) = f0.Cells(i, j).Value * 1

Et la, je suis bloqué.

Pour répondre à ta question de l'utilité.

J'ai une base de données avec des événements datés (Feuil0), une ligne par événement, par exemple entre 2000 et 2016.

Je cherche à filtrer les données en fonction de critère(s) (filtrage(s) appliqué(s) au(x) colonne(s)) compris entre 2 dates de mon choix.

D'où la Feuil1, parce que si j’applique des filtres sur plusieurs colonnes, par exemple entre 2005 et 2010, les tableaux en découlant ne tiennent pas compte de tous les filtres appliqués sur plusieurs colonnes. Je me retrouve donc avec des graphiques qui prennent en compte les cellules cachées.

C’est pourquoi les tableaux récapitulatifs prennent en compte les données dans la Feuil Filtrée (Feuil1).

Ensuite, je veux que les graphiques indiquent les éléments par ordre décroissant, d’où le classement automatique dans les tableaux, à chaque changement.

Je voudrais rentrer les nouveaux événements dans la Feuil0, et récupérer directement les graphiques sur la Feuil3, sans activer les autres Feuil.

Peut-être existe-t-il une méthode plus simple…

Bonjour

Je suis désolé mais je suis perdu.

Je ne vois plus à laquelle des différentes versions s'appliquent tes différents commentaires.

Je ne sais plus ce qu'il faut faire ni à partir de quel fichier.

Bye !

Bonjour gmb,

La première partie de mon message, concerne ton dernier fichier (classeur1-V7), de mon côté [excel2007], il ne fonctionne pas.

Le deuxième partie de mon message, concerne le but de mon projet.

J'explique ma démarche, parce que je l'ai découpé en plusieurs étapes (et quasiment autant de macros), mais peut-être qu'il y a plus simple pour obtenir le même résultat final.

Merci pour ton aide.

Rechercher des sujets similaires à "probleme classement automatique macro"