Besoin aide VBA

Spinzi

XLDnaute Impliqué
Bonjour à tous,

étant toujours en quête d'optimisation et de rapidité, mais cependant nul en macro/VBA, je viens vers vous pour la construction d'un fichier que j'avais réussi avec des formules, mais qui s'avère légèrement long à l'éxécution (3-4 minutes).

Je pense procéder par phases (j'ai différentes bases mais surtout un gros fichier à optimiser).

J'ai déjà commencé par tout mettre en tableaux excel car j'ai lu plusieurs fois que les tableaux accéléraient la vitesse des programmes VBA.

Dans un premier temps je souhaite donc modifier le code VBA présent dans le fichier ci dessous qui permet d'alimenter les colonnes A, B et C avec des informations sans doublon.
Ces colonnes sans doublons serviront plus tard pour alimenter plusieurs listes de validation.

J'aimerai donc une modification du code pour prendre en compte le tableau qui est dynamique et qui est donc ajusté pile poil à la taille du tableau et donc des données : pas besoin de vérifier des milliers de lignes pour rien.

Si vous avez des questions, n'hésitez pas et merci d'avance pour les améliorations que vous pourriez apporter à ce fichier.
 

Pièces jointes

  • TravauxHercule.xlsm
    450.8 KB · Affichages: 195
  • TravauxHercule.xlsm
    450.8 KB · Affichages: 199
  • TravauxHercule.xlsm
    450.8 KB · Affichages: 204
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

J'ai un gros problèmle avec le
_point d'attention 3 : j'aimerai que le rapport soit sur la même page que mes listes de validation et par liste de validation je n'entends pas combobox, mais bien les 3 listes qu ise situent en début de feuille "budget".
J'ai définitivement abandonnée l'idée de listes de validations et je ne reviendrai pas en arrière. Ce sera un Userform ou plus rien de ma part.

P.S. Pour l'instant je travaille sur l'établissement d'un rapport automatique de tout, éventuellement sur plusieurs feuilles, à critères variables de classement, en feuilles, totalisées ou non, rubriques, totalisées ou non et champs, classés, totalisés ou simplement reproduits.
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

J'aurai préféré des listes de validations mais je ne peux pas demander le beurre et l'argent du beurre et ça ne me gène pas de changer de méthode, c'était parce que je les aimais bien ces petites listes =)
C'est juste que je ne sais pas trop comment va se faire le choix des critères à retenir pour éditer le rapport ... dans le sens ou je n'arrive pas à visualiser la chose simplement. Donc par exemple (c'est une hypothèse) des que j'entre sur la feuille rapport, un user s'ouvre en me demandant ce que je veux voir affiché dans le rapport ?

Bien à vous
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Oui, c'est exactement cela.
Mais avec réponse immédiate ensuite, en plus du choix dans une liste, à une frappe, fut-ce d'un seul caractère, complété automatiquement par la première suite existante possible. Cette réponse étant un affichage préalable du nombre de lignes que le choix recouvre, ainsi peut être, pour info, que des valeurs totalisées. Un bouton ou la touche Entrée permettra ensuite seulement d'ajouter les lignes à la liste.
P.S. En plus de la vérification visuelle, ce sera quand même plus riche en possibilités telles qu'une personnalisation du texte d'entête de rubrique, une case à cocher disant si on veut les totaux, et … tout ce qui pourrait nous passer par la tête.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Bonjour.

J'ai mis en place votre Userform pour la feuille Budget. Si vous aviez besoin de ComboBox supplémentaires il suffirait d'ajouter les instructions CBL.Add correspondantes dans la Userform_Initialize
Les colonnes retenues sont les mêmes que pour le Rapport automatique. Le traitement des spécifications lignes 1 de Base en cours (simples × pour l'instant) sera à terme centralisé dans un module SélectColonnes qui existe déjà.
 

Pièces jointes

  • RapportSpinziV1.xls
    951.5 KB · Affichages: 44
  • RapportSpinziV1.xls
    951.5 KB · Affichages: 35
  • RapportSpinziV1.xls
    951.5 KB · Affichages: 36

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Je n'avais pas du tout appréhender le sujet comme ça ... mais ça me plait bien ... je dirais même que c'est bcp plus intuitif !
Aprés une utilisation rapide, j'aurai juste une petite demande : est-ce qu'on peut rajouter un bouton "Effacer montants" dans l'usf ? plutot que de devoir sortir er re-rentrer sur la feuille ?
De plus est ce qu'une ligne "Total" en haut pourrait sommer tout ce qui apparaît dans la feuille ?
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Qu'est ce que ce bouton Effacer montants serait sensé faire ? Supprimer tout peut être vous voulez dire. Oui effectivement ce serait mieux un bouton dans l'Uf que de poser systématiquement la question, mais seulement quand on active la feuille. Je vais aussi voir si je peux mettre un bouton pour annuler le dernier ajout.
Je regarde aussi pour une ligne Total général en tête de la feuille Budget.
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Attention, des intitulés de colonnes supplémentaires seraient pour l'instant effacés par la procédure SélectionColonnes appelée lors de l'activation de la feuille. Le problème est plus compliqué qu'il n'y parait. Il faudrait peut être les noter quelque part. Dans un nom dans le classeur, pour qu'ils soient repris derrière quand on ajoute des colonnes de Base en cours.
Mais j'y pense: ne pourriez vous ajouter ces intitulés à droite dans Base en cours ? Enfin … si une fois renseignés il devront être totalisés. Non vraiment c'est plus compliqué que ça parce qu'on n'a nul support permanent d'où on peut les sélectionner. Et ne retoucher aux titre que sur demande serait source d'erreurs parce que les colonnes restituées elles, sont bien celles sélectionnées, et donc pour l'instant conformes aux titres.

Voilà la nouvelle monture.
 

Pièces jointes

  • RapportSpinziV1.xls
    955.5 KB · Affichages: 39
  • RapportSpinziV1.xls
    955.5 KB · Affichages: 38
  • RapportSpinziV1.xls
    955.5 KB · Affichages: 37
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Bonjour,

l'usf est niquel même si je ne l'ai pas encore complètement exploré. Simplement dans le rapport n'apparaissent plus les 3 première colonnes (Soéiété, Département, nom de centre de cout).
Serait il possible de rajouter une case à cocher (dans l'usf) pour enlever les frais de personnels ?
Serait il possible de rajouter une case à cocher (dans l'usf) permettant de ne pas intégrer au rapport les lignes à 0 (lorsque "Réel 2011"; "Arc 2012" et dans notre cas "Total budget V1" sont égaux à 0 : somme()=0) ?

Pour ce qui est du rapport : est ce que dans la dénomination du total département il pouvait n'y avoir que "Total"&Nomdépartement ? Parce que d'après ce que j'ai compris il affichait les variables du filtre non ?

Pour les colonnes supplémentaires, je vais essayer de m'y prendre autrement en incrémentant directement ma base de données. mais cela ne pourra resoudre entièrement mon problème puisque j'ai d'autres colonnes à faire apparaitre, et celles ci doivent être reproduites selon certaines données du rapport (ajout de liste à cocher dans l'usf type "Version de budget à renseigner"; si je coche "V2", il copiera certaines colonnes présentes dans le rapport pour changer la dénomination de par exemple "Total Budget V1" en "Total budget V2". Je jois ci contre un exemple pour essayer de modéliser ma demande.
 

Pièces jointes

  • Maquette.xlsx
    14.6 KB · Affichages: 50
  • Maquette.xlsx
    14.6 KB · Affichages: 60
  • Maquette.xlsx
    14.6 KB · Affichages: 64

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Bonjour.
dans le rapport n'apparaissent plus les 3 première colonnes (Soéiété, Département, nom de centre de cout)
Chez moi ils apparaissent toujours, annoncés en tant que rubriques (on ne va quand même pas inutilement les répéter sur chaque ligne ?)

Le filtre ne s'applique que pour la feuille Budget, pas pour le Rapport automatique. Et oui je prends toutes les valeurs de ComboBox spécifiés pour construire le titre de rubrique, puisque s'il ne faut en prendre que certains, je n'ai aucun moyen de savoir lesquels. Là on pourrait ajouter une case à cocher derrière chaque ComboBox pour indiquer s'il faut les mettre dans le titre de rubrique et de total.
Pour l'instant tout le choix de ce qu'il y a à reproduire se fait dans la ligne 1 de Base en cours. Et ce qui est à partir de la colonne M (13) est totalisé. Il devrait être possible d'écarter les lignes n'ayant aucune valeur non nulle à totaliser .
Pour les colonnes supplémentaires, le plus simple pour l'instant c'est d'ajouter leurs intitulés de colonnes à droite ligne 2 dans Base en cours, comme cela il suffira de les cocher en ligne 1 comme si c'étaient des données de la base. Et s'il y en a dans le tas qui ne devront pas être totalisées, ce ne sera pas un gros travail d'effacer les formules SOUS.TOTAL dans ces colonnes.
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Bonjour,

je me suis mal exprimé quand je parlais des 3 premieres colonnes : le libellé de colonne n'apparait plus en fait ! c'est a dire que dans le rapport, les lignes A1, B1 et C1 (devant contenir respectivement "Société", "Département" et "Nom de centre de couts") sont vides. A la limite ce n'est pas trés grave, je voulais juste savoir si c'était normal.

Pour les lignes à totaliser, pourriez vous m'indiquer comment changer la colonne (M actuellement c'est ça) au cas ou mon socle de base bouge ?

Pour le rapport, et pour revenir au total composé des valeurs filtres, un éclatement comme dans le fichier joint serait impossible ? Il est identique à l'éclatement que vous aviez réalisé dans l'onglet "rapport"

J'ai aussi essayé d'intégrer mes demandes dans l'usf (cases à cocher pour l'apparition des frais de personnel, lignes à 0, version de révision budgétaire et année de révision budgétaire [exemple de la révision V3 2013 qui se fait en meme temps que la V0 2014 avec le rappel de la V2 2013]).
Il faudrait le choix de la version de révision budgétaire se fasse soit par list de validation, soit par case à cocher (trop de place ?) sachant qu'il y aura toujours le choix entre 4 valeurs (V0, V1, V2, V3).
Pour l'année de la révision (cf explication au dessus) le fait de laisser l'utilisateur rentrer une valeur est il contraignant ou alors on peut le forcer a respecter des conditions (4 signes numériques forcément compris entre 1900 et 3000 par exemple) ou est il plus simple de mettre une liste de validation qui s'adapte selon l'année ? (par exemple laisse apparaitre l'année en cours + l'année n+1)

J'essaie aussi de modéliser mes attentes concernant les ajouts de lignes et le fichier une fois éditer : une fois que le rapport est ok, je souhaiterai le transmettre aux peronnes en faisait une extraction du rapport. Les personnes vont retravailler dessus en complétant des colonnes et en rajoutant des lignes : il faudrait que la macro qui s'occupe des totaux soit toujours active pour prendre en compte les nouveaux éléments mais on verra p-e ça plus tard non ?

ps : j'ai fais quelques bétises dans le fichier joint je crois en supprimant par inadvertances des choses je crois, donc ne vous aappuyez pas dessus pour refaire une version de fichier (je ne pense pas que vous fassiez cela de totue manière mais je préfère éviter les mauvaises surprises).
 

Pièces jointes

  • RapportSpinziV4Test.xls
    839 KB · Affichages: 102

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Bonjour.
Oui c'était voulu que les intitulés de colonnes n'apparaissent pas pour les rubriques puisqu'il y normalement assez de place pour les mettre devant le nom de la rubrique dans sa ligne qui ne contient qu'elle.
Dans le module SélectColonnes, Public Const C1ÀTotaliser = 13, LTitre = 1 permet de paramétrer pour l'ensemble du projet la position de la 1ère colonne à totaliser (actuellement 13 pour M donc) et la ligne où doivent se mettre les intitulés de colonnes dans les rapports.
Pourquoi tenez vous à tout prix à mettre ces choses dans l'Userform alors que c'est si simple de les sélectionner dans la ligne 1 de Base en cours ?
On ne peut actuellement pas mettre pour le rapport par ajouts d'éléments la même hiérarchie de présentation que pour le rapport automatique, car cette hiérarchie est fixe (toujours Société, Département et Centre de coût) or vous avez dit que pour le rapport élaboré sur la feuille Budget vous ne vouliez pas toujours les 3 niveaux. J'analyse toujours, à mon rythme, la possibilité de la définir aussi dans la ligne 1 de Base en cours. C'est assez compliqué…
On pourrait toutefois imaginer d'ouvrir une rubrique de ce qui est sélectionné au lieu d'en ajouter toutes les lignes.
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Oui c'était voulu que les intitulés de colonnes n'apparaissent pas pour les rubriques puisqu'il y normalement assez de place pour les mettre devant le nom de la rubrique dans sa ligne qui ne contient qu'elle.
Je n'ai pas compris ce que vous voulez dire mais le fait que le libellé de colonne n'apparaisse pas n'est pas important.

Pourquoi tenez vous à tout prix à mettre ces choses dans l'Userform alors que c'est si simple de les sélectionner dans la ligne 1 de Base en cours ?
Justement non. Le but de ce fichier est de standardiser le budget. Si j'ai 15 000 modifications à faire sur ma base pour arriver au resultat alors cette optimisation n'a plus lieu d'être ...
Je souhaite que dans l'usf, quand j'ai selectionné une visée (qui n'est pas présetne dans la base en cours) il me la rajoute dans le rapport.
EX : actuellement dans ma base en cours j'ai la V1. Nous arrivons en Octobre et maintenant ce n'est plus la visée 1 mais 2 qui m'interesse. Je coche donc dans ma base en cours les colonnes qui m'interessent à savoir "Prestations Externalisées" et "Documentation" ainsi que "Budget". Dans l'usf, si je selectionne dans la liste de validation "V2" et en année "2013", je souhaite qu'il me recopie Presta, Doc et Budget mais pour la V2 et à la suite de la V1 vous voyez ?
mais si ce n'est pas faisable (car il faut faire attention aux différentes colonnes situées avant, celles p-e rajoutées à la main) je modifierai la base. je souhaite juste m'assuré que vous aillez compris.

ps : oui au final je viens de réfléchir un tantinet et je vois comment je peux adapter ma base donc OK (pour les versions, par contre pour les cases a cocher des frais de personnel et des lignes vide il me les faudrait !)

On ne peut actuellement pas mettre pour le rapport par ajouts d'éléments la même hiérarchie de présentation que pour le rapport automatique, car cette hiérarchie est fixe (toujours Société, Département et Centre de coût) or vous avez dit que pour le rapport élaboré sur la feuille Budget vous ne vouliez pas toujours les 3 niveaux.
je souhaiterai juste que les occurences du filtre selectionnées n'apparaissent pas dans la même cellule mais soit décaler suivant les libellés (qui ne sont plus présents) mais par exemple EE en cellule A2 ensuite si j'ai filtré avec le département Collecte Selective alors collecte selective apparait en B3. Comme ça même si je n'ai pas filtré les 3 niveaux j'ai une structure plus détaillée ?

On pourrait toutefois imaginer d'ouvrir une rubrique de ce qui est sélectionné au lieu d'en ajouter toutes les lignes.
???

Merci
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Bon. Je ne sais pas si je vais encore beaucoup intervenir (peut être mais pas sûr). Juste quelques idées ou précisions.
- Ce que vous n'avez pas compris: pas besoin par exemple du libellé "Société" puisque je met comme texte pour la rubrique "Société EE"
- Il pourrait être possible d'enregistrer quelque part des "profils" de budgets. Par exemple sur une nouvelle feuille ne comportant que des lignes avec les croix dont il suffirait de choisir une à copier dans la ligne 1 de Base en cours.
- Mon idée d'ouvrir une rubrique revient à ce que vous dites juste avant: au lieu de copier des lignes vous commencez par installez une ligne de rubrique à partir d'un seul ComboBox renseigné parmi ceux qui ne sont pas bloqués. Celui ci serait aussitôt bloqué pour que vous ne puissiez prendre que des groupes de lignes appartenant à sa valeur jusqu'à ce que vous décidiez après un certain nombres d'ajouts que cette rubrique est fermée. Naturellement dans une rubrique vous pourriez ouvrir une sous rubrique, puis à l'intérieur une 3ième dernière.
- N'y aurait-il quand même pas moins de travail en partant de rapports automatiques, quitte à enlever ensuite les sous rubriques en trop ?
 

Discussions similaires

Réponses
13
Affichages
261

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345