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:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Bonjour,

-C'est bien ce que j'avais compris pour le libellé, mais c'était juste une questio nde mise en forme.
-Pour les profils budget : j'aimerai plus avoir un outil standard (votre dernier point)
-L'idée à l'aire interessante mais j'avoue ne vraiment pas visualiser votre solution ! pourriez vous m'éditer un exemple rapide ?
-Le rapport automatique cétait le fichier que j'avais avant, le tout premier, où toutes mes colonnes apparaissaient et j'avais un filtre au dessus qui me disait si, suivant le filtre que j'avais appliqué (société, département, nom de centre de cout), la colonne était vide ou non. Mais vous êtes parti sur une autre idée qui m'avait l'aire tout aussi avantageuse.
(qu'entendez vous par "rubrique" ?)

Bien à vous
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Bonjour.
Cette mise en forme est le seul moyen de faire plus étroites possibles les 3 1ères colonnes qui ne servent que pour les titres des rubriques. Ce que j'appelle une rubrique c'est un ensemble ou un sous-ensemble de détails se rapportant tous à la même chose. Leur 1ère ligne commencent par un titre de rubrique débutant dans une des 3 1ères colonnes et finit par des totaux pour cette rubriques, puisque je pense comprendre que vous les voulez systématiquement au début.
Non le rapport automatique c'est un rapport qui contient tout le résultat souhaité. Il pourrait être établi sur plusieurs feuilles, une par société par exemple.
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Dans tous les cas il me faut un usf/liste de validation pour choisir les informations que je souhaite faire apparaitre (celui mis en placeà l'heure actuel me convient).
Aprés on pourrait revoir la forme du rapport et plutot repartir sur une liste comme le premier jet. Je pense qu'il sera plus facile à traiter à la fois pour moi comme pour vous (ok il n'y a plus la structure avec le total des centres de couts mais l'ajout de nouvelles lignes est compliqué ...).

Est ce qu'on peut repartir avec :
_Même usf qui s'ouvre, pour l'instant il me convient
_Rapport en liste par ordre comme au début (sans totaux), trié par nom de centre de cout
-Est ce qu'il est possible de laisser une ligne vide tout en haut et tout à gauche ?

Merci
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

La constante LTitre peut être mise à 2 pour laisser une ligne vide devant.
Il pourrait être plus pratique d'ajouter une ligne vide derrière chaque rubrique, à condition de ne jamais en profiter pour la renseigner manuellement: toujours insérer d'abord une ligne devant. Ça simplifierait en tout cas s'il y avait nécessité de supprimer des rubrique entières: cette ligne vide ne serait référencée que par les formules SOUS.TOTAL de sa propre ligne de rubrique. Actuellement elle prend comme fin la ligne qui précède celle de début de la rubrique suivante, ce qui engendrerait des erreurs #REF! si on supprimait cette dernière sans précaution.
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Quitte à la laisser vide autant l'utiliser non ? (du coup laisser les totaux et sous totaux).
j'essaie de modifier ma version et vois comment faire au mieux pour prendre en compte vos remarques tout en intégrant mes besoins.

Pour l'instant quel serait le plus simple pour vous ?
ps : il faudrait modifier l'usf pour rajouter une case à cocher pour les frais de personnel
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Bonjour,

si vous êtes d'accord on va p-e revenir à une version plus simple et surement plus facile à mettre en oeuvre, en faisant fi des lignes de sous totaux, en adoptant une affichage des résultats en ligne avec totues les occurences (si j'ai filtré sur société EE je souhaite que dans la colonne "Société" "EE" apparaisse à chaque fois).

J'ai remarqué que lorsque je remplissais des colonnes dans le rapport, à coté de la selection automatique via la base, ces colonnes et leur contenu disparaissaient des que je filtrais à nouveau. Serait-il possible de garder les colonnes rajoutées manuellement, un peu à l a façon d'un tcd ?
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

C'était pour eviter à chaque fois de refaire ma formule des totaux (comem d'autres d'ailleurs) mais d'apres ce que je comprends, c'est mort ? A moins p-e de dire que dans cette colonne vide, si je la selectionne, il faut m'ajouter partout telle formule ... Est ce que c'est envisageable ?
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Probablement. Il ne faudrait alors surtout pas virer l'installation des formules de totaux. Vous voyez bien comment ça marche tout ça. Dans le tableau destiné au vidage rapide on met dans les lignes de rubriques (LDébTotQuelqueChose) la valeur "=" & Lr comme valeur dans la 1ère colonne de totaux (CrDébTot), Lr étant la ligne où on en est arrivé à ce moment là du remplissage. Comme il commence par "=", ce signal est transformée en une formule simple donnant seulement la ligne de fin pour ce début de rubrique, ce qui permet ensuite, après vidage du tableau, de les balayer simplement en ne prenant que les Me.Columns(CrDébTot).SpecialCells(xlCellTypeFormulas, 1) pour y mettre les formules "=SUBTOTAL(9, etc.. Rien n'empêcherait de faire un peu la même chose, mais d'abord, pour d'autres formules, cette fois dans les ligne de la rubrique CCoût seulement. Mettre le signal en CrDébTot + 1 par exemple.

Ou alors, si ça peut marcher, mettre ces FormulaR1C1 sur toutes les lignes des colonnes concernées, avant de les écraser, dans les lignes où elles n'ont pas lieu d'être, par les formules SOUS.TOTAL…
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

C'est du chinois pour moi avec ce langage si spécifique, mais je pense savoir de quoi il retourne pour la non suppression des lignes de sous-totaux.

De plus, je n'ai pas trouvé l'instance pour décaler d'une ligne dans le rapport (onglet budget).
Aussi, comme je ne vais garder qu'un rapport sur les 2 mis en place, je pense que l'onglet Budget est dépendant de l'onglet rapport non ? parce qu'a part l'usf, je ne vois rien en rapport avec l'onglet budget. Trés compliqué pour moi
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Non, les onglets Rapport et Budget ne sont pas liés. Il n'est pas question de permettre un filtrage de certains éléments pour le Rapport. C'est un rapport automatique qui contiendra initialement tout, un point c'est tout. Mais il pourra peut être un jour être sur plusieurs feuilles éventuellement, une par société notamment.
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Ok, donc c'est une image de ma base mais non modifiable, tout du moins non prévue, pour être modifiée via des filtres. Le problème est que si je n'utilise que ce rapport je n'aurai pas la flexibilité du fichier budget couplé à l'usf.
Il faut donc que je me cantonne à une seule méthode => je pense garder l'onglet budget, supprimer le "rapport".
Cependant si vous pouviez établir un onglet budget sans sous totaux, mais sous forme de liste comme dans le rapport (les données qui se suivent les unes aprés les autres).

Merci d'avance
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Oui mais vous auriez peut être quand même moins de travail pour les constituer. Vous pourriez toujours supprimer des lignes à postériori, voire en couper et les insérer dans d'autres rubriques (je me demande pourquoi, mais là n'est pas la question). Les formules Total sont pensées pour le supporter, il n'y a que le problème de la suppression d'une rubrique entière qui poserait un problème si on n'insère pas une ligne vide supplémentaire derrière, qui améliorerait peut être même la présentation. Franchement je ne comprend pas bien votre préférence pour le Budget assemblé empiriquement. Il me paraitrait effroyable à constituer et source d'erreurs (répétitions et omissions involontaires).
ependant si vous pouviez établir un onglet budget sans sous totaux, mais sous forme de liste comme dans le rapport (les données qui se suivent les unes aprés les autres).
Non. Pas possible. À moins de créer ses propres rubriques au fur et à mesure.
 
Dernière édition:

Discussions similaires

Réponses
13
Affichages
260