XL 2010 VBA - Faisabilité : sommaire par date et par objet

Murj

XLDnaute Nouveau
Bonjour à tous,

continuant de plancher sur mon projet qui a déjà très avancé grace à une précédente aide du forum, j'en viens désormais à la phase ultime de mon fichier.

Mais la question qui reste en suspens concerna sa faisabilité en vba/macro...
Et sur la solution optimale à adopter pour mener à bien cet outil.

Je dispose d'un onglet "Arrêtés" avec à chaque ligne la date de l'acte (colonne F), son objet (G), son nombre de pages (J) ainsi que sa catégorie (un même acte peut devoir être classé dans plusieurs catégories - NDLR : pour l'heure je me cantonne à 3 mais idéalement il me faudrait pousser jusqu'à 5).

Mon but est de créer :
- une table chronologique de ces arrêtés,
- une table par catégorie de ces arrêtés.
Le livre constitué par ces actes serait de 300 pages, aussi j'ajusterais le nombre d'actes à 280 par exemple.

Puis, je souhaite extraire la liste de ces arrêtés dont la somme totale des pages ne dépasse pas les 280.
Ensuite une fois cette première table créé, il me faudra recourir à un nouveau tri pour les classer dans chaque catégorie.

Aussi, le recours aux filtres avancées est-il la meilleure des solutions?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Murj,
En fait cela reviendrait à faire un tri sur Date ou sur N°chrono de la feuille Arrêtés mais avec le format d' EditionRecueil ?
Ce que je ne comprends pas c'est : "un même acte peut devoir être classé dans plusieurs catégories ". Elles sont où ces catégories ?
Enfin un petit fichier test serait le bienvenu. :)
 

Murj

XLDnaute Nouveau
Bonjour,

Désolé pour cette réponse tardive, mais je finalisais la recherche des différentes difficultés auxquelles je dois faire face pour répondre à ma problématique.
Ainsi j'ai créé les différents onglets

Pour la table arrêtés, il existe 3 registres distincts : RH, Urba et Tout (hors RH et Urba)
Chaqun de ces registres dispose d'une table chronologique et d'une table par thème (catégorie)

Aussi, la table chronologique revient en effet à un tri sur date pour l'onglet Arrêté.
A la différence que l'ordre des colonnes n'est pas le même et surtout le nombre de lignes qui doivent apparaître dans cette table sont fonction du nombre de pages du registre qui sera définie par l'utilisateur (autrement dit de la somme total du nombre de pages des différents arrêtés que j'envisageais de spécifier en cellule J1) et enfin que le registre de chaque service dispose d'un numéro de tome (B1)

Exemple :
mon livre doit faire 300 pages avec la table chrono et la table par objet. considérant que mon registre fera donc 280 pages hors tables, si tous les arretes faisaient 2 pages alors il ne rassemblera que 140 arrêtés.
Mais, le nombre de pages de chaque arrêté n'est pas fixe, et il faut qu'il rentre intégralement (on ne peut pas avoir 1 pages dans un livre et la fin dans un nouveau).

Autre problème, pour lequel je n'ai pas encore trouvé d'alternatives, une fois que j'aurais ma table de 140 arrêtés (dans l'exemple ci-dessus).
Une macro peut-elle par l'intermédiaire d'un bouton, coller des données (en l'occurrence le numéro de tome et la pagination qui va avec dans l'onglet source : colonnes AE et suivantes).

Pensant utiliser les filtres avancées pour créer chacune des tables chronologiques (Urba, RH, Tout), j'ai volontairement intégré les différentes catégories dans cette extraction afin de pouvoir les utiliser pour la table par objet/nature.

Concernant la table par objet, les catégories figurent elles aussi dans l'onglet "Arrêtés" colonne L à M et résulte d'une liste de validation issue de l'onglet "paramétrage" ou est définit une plage de cellule pour chaque service
Seul bémol, il faut que ce nouveau filtre se base sur la table chrono qui vient d'être validée.
En effet, cette table s'apparente à un index et reprend la numérotation définie dans la table chrono....
Aussi, dans le cas de filtres avancées, il semble nécessaire que je reporte ces éléments dans ma table chrono afin de pouvoir les exporter par la suite

Voila le fichier en question qui sera peut-être plus explicite que mes tentatives d'explication.
 

Pièces jointes

  • Copie de Numerotation acte et deliberation V5 test.zip
    213.1 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Murj,
Au vu de vos explications, vous vous lancez dans un projet très vaste et qui va être chronophage.
Avez vous déjà un début de code pour commencer et baliser le chemin ?
Car perso cela me semble trop gros à gérer de zéro.
Peut être un bon samaritain comprendra t il mieux l'ensemble de la problématique. :)
 

Murj

XLDnaute Nouveau
Bonjour Sylvanu,

Pour l'heure, je n'escomptais pas une solution en partant de zéro...

Mais plutot un conseil sur mon approche à savoir, est-ce que les filtres avancées seraient une bonne solution ?

Et dans le cadre de la table par nature, si contrairement aux fonctions excel du type rechercheV, est-il possible de faire avec vba des renvois de données qui sont à gauche du critère?

D'avance merci
 

Murj

XLDnaute Nouveau
Bonsoir,

je poursuis mon fil sur le registre chronologique des arrêtés car après plusieurs problèmes qui m'ont donné du fil à retordre.
(tentative de coupler les critères du filtre avancé (service) dans une seule cellule, j'ai finalement contourné cette difficulté en créant un if avec des renvois différents).

Désormais, celui-ci me renvoit bien les valeurs en fonction des services et si la colonne contenant le numéro de tome est vide. (prévision du futur copier coller avec un bouton validation pour le déclencher - à y réfléchir je crains également de créer un deuxieme filtre pour le cas des registres déjà créés afin de les rappeler si nécessaire)

Bref...
j'ai tenté par diverses méthodes de limiter le nombre d'arrêtés en fonction du total des pages (qui est saisi en J1... Malheureusement, pas de solutions sur ce point.
Aussi, à force de multiples tentatives infructueuses, peut-être puis-je au final supprimer les cellules dont le total excèderait ce chiffre ?
A moins que quelqu'un dispose d'une éventuelle solution pour limiter à la somme.
 

Pièces jointes

  • Copie de Numerotation acte et deliberation V5 test.zip
    239.6 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Murj,
Comme vous faites un copier collé des valeurs filtrées vous aurez du mal à limiter le nombre de lignes sauf à complexifier, et surement ralentir le processus.
Il suffit, je pense, à la fin, d'effacer le surplus avec :
VB:
Range("A" & [J1] + 1 & ":L10000").ClearContents
 

Murj

XLDnaute Nouveau
Bonsoir Murj,
Comme vous faites un copier collé des valeurs filtrées vous aurez du mal à limiter le nombre de lignes sauf à complexifier, et surement ralentir le processus.
Il suffit, je pense, à la fin, d'effacer le surplus avec :
VB:
Range("A" & [J1] + 1 & ":L10000").ClearContents
après des heures de recherche sur comment filtrer sur mon nombre de pages... enfin... la révélation la triche de la pagination....
parfois je ferais mieux de tenter au plus simple....

Par contre il ressort une erreur dans ma macro due à une cellule fusionnée, mais je sèche complètement.
Tout a fonctionné au début et suite à ma tentative d'intégration de cette suppression dans la macro du bouton, systématiquement cette erreur.

Je crains qu'il me faille mieux définir mes plages si je veux réussir à faire ensuite le registre par nature.
Et reprendre ma vision de VBA depuis le début pour bien tout assimiler et tout bien clarifier.
 

Pièces jointes

  • Copie de Numerotation acte et deliberation V5 test.zip
    241.7 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Murj,
Je pense qu'il y a un souci.
.Range("A" & [I4] + 1 & ":I1000") donne avec les valeurs du fichier .Range("A11:I1000")
Or A4 dépends de M39:M374 que vous tenté d'effacer.
Etes vous sur de vouloir effacer à partir de la ligne 11 ? Ce qui effacerait tout le tableau.
Si le problème vient des cellules fusionnées alors :
VB:
Worksheets("RegistreArreteChrono").Range("A" & [I4] + 1 & ":I1000").EntireRow.Delete
Ce qui supprime les lignes.
 

Murj

XLDnaute Nouveau
Bonsoir Murj,
Je pense qu'il y a un souci.
.Range("A" & [I4] + 1 & ":I1000") donne avec les valeurs du fichier .Range("A11:I1000")
Or A4 dépends de M39:M374 que vous tenté d'effacer.
Etes vous sur de vouloir effacer à partir de la ligne 11 ? Ce qui effacerait tout le tableau.
Si le problème vient des cellules fusionnées alors :
VB:
Worksheets("RegistreArreteChrono").Range("A" & [I4] + 1 & ":I1000").EntireRow.Delete
Ce qui supprime les lignes.
Bonsoir Sylvanu,
En effet, il me fallait supprimer à partir de la M39 avec le décalage de la I4
Merci beaucoup ! désormais cela fonctionne..

En revanche, je sèche toujours autant sur la traduction VBA de ma rechercheV pour rechercher la cellule B39 dans la colonne C de l'onglet "Arrêtes".

Alors si quelqu'un sait où je serais en mesure de trouver quelques explications (cours/tuto/...)

Ce qui m'inquiète est que même ma tentative d'enregistrement d'un essai de macro n'aboutit pas car Ctrl+F ne me trouve pas la valeur.
 

Pièces jointes

  • Copie de Numerotation acte et deliberation V5 test.zip
    251.1 KB · Affichages: 3

Discussions similaires

Réponses
27
Affichages
1 K

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2