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,

faute de plus d'explication
Le code que vous me donnez à la fin ce celui que je dois coller à la place de l'ancien ?
J'ai essayé de me débrouiller et evidemment ça ne fonctionne pas.
Sachant qu'en plus les colonnes de résultats sont décalées.
J'ai donc recréé un onglet avec le résultat attendu.

J'ai quand même l'impression que cete macro, bien qu'automatique, soit beaucoup trop compliquée pour le problème donné sachant qu'elle ne devait pas être difficile à modifier (oui, mais par qui ? Son éditeur ? je n'en doute pas !)

A vous relire
 

Pièces jointes

  • RapportSpinziV6ED.xls
    883 KB · Affichages: 108

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Bonjour.
Il est clair que c'est à vous d'adapter vos macro comme si c'était vous qui les aviez écrites. Moi je ne vous donne que des modules de service permettant une programmation aisée, et une technique de programmation essentielle, à savoir ne jamais travailler directement sur les cellules (beaucoup trop long), mais toujours mais le moins souvent possible sur des plages entières via des tableaux en mémoire chargés d'un coup, en entrée, et préalablement élaborés en sortie.
Là, dans ce que vous avez joint, dans le module SélectColonnes, procédure SélectionColonnes, il manque une instruction CrMax = 0 au début pour recommencer la construction du tableau TCe. C'est un peu de ma faute parce qu'il y avait bien CrMax = 3 et je vous avais dit de la supprimer. Or c'est une variable Public, elle n'est donc pas remise à 0 automatiquement.
Dans l'UfBudget, procédure BtnAjouter_Click(), phase Constitution du tableau le For Cr part toujours de 4 au lieu de 1.
Dans la Worksheet_SelectionChange de FBdD (Base en cours) il y a toujours ce Or Target.Column < 4 qui n'a plus lieu d'être puisqu'on doit maintenant pouvoir sélectionner aussi les 3 ères colonne à reproduire ou non. Et plus loin, il faut Me.[A1:IV1] au lieu de Me.[D1:IV1]
Je vais procéder à ces modifiations de mon coté et tester. Je vous tiens au courant s'il y a d'autres choses qui ne vont pas.

Vu : FBudget.[A:C].ColumnWidth = 5 à supprimer. Ces colonnes n'étant plus des colonnes de rubriques, elle doivent rester soumises au FBudget.Columns.AutoFit au début de cette ligne.

Voilà, maitenant en sélectionnant pour mettre des × les 3 1ères colonnes ligne 1 de Base en cours, puis en sélectionnant dans l'Uf Société : EE , on obtient sensiblement le même résultat que dans votre feuille Résultat attendu, sauf que tout est décalé d'une ligne vers le bas puisque vous avez précisé Public Const LTitre = 2 'Numéro de ligne où commence le rapport dans l'onglet
Le commentaire est faut, d'ailleurs, c'est plutot 'Numéro de ligne des intitulés du rapport.
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Je souhaite juste que vous compreniez que je suis vraiment nul en macro et que je donne tout mon possible pour comprendre. Je pense juste que, pour débuter, ce n'est pas la macro la plus facile.
Du coup je suis bcp plus long à faire les liens entre les différentes feuilles, modules, etc.

Ci joint le fichier modifié
 

Pièces jointes

  • RapportSpinziV7ED.xls
    843.5 KB · Affichages: 97

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Je suis nul en macro ! Le vrai pb est que je n'ai pas le temps de m'y plonger réellement car d'autres choses "courantes" prioritaires ...
Cependant je n'ai pas encore fini de vous embêter car j'aimerai de la mise en forme (les intitulés copiés via les croix) avec du gras, couleur de fond, etc. Mais je ne sais pas où l'insérer dans le module. D'après ce que j'ai vu cela s'incrémente plutot bien avec une boucle "With" ...

Enfin je reviens bientot avec le fichier modifié et un test de mise en forme.

Merci
 

Herdet

Nous a quitté
Repose en paix
Re : Besoin aide VBA

Voilà, ça me semble bon, il ne resta plus qu’à appliquer les derniers points signalés en édit poste précédent à 14h 36
Non, vous vous sous estimez: vous étiez vraiment nul en macro
Bonsoir Danreb,
Un échange de 140 messages depuis 3 mois pour en arriver là !
Chapeau bas, pour ta persévérance et ta patience. ;)

En somme si j'ai bien compris, c'est d'appliquer un filtre de 1 à 7 critères sur la base de données et passer les résultats dans une feuille de transfert formatée.
Sans aucun commentaire dans le code sur le but à atteindre et la description de la méthode, j'ai renoncé à déchiffrer les 140 messages et le code VBA ( en particulier l'utilité des 5 modules de classes)

Si lu lis la nouvelle demande #141 de Spinzi, :confused: tu est bon pour une nouvelle série de 140 messages.

Que la force soit avec toi !:eek:

Pour le fun, ci-joint le détail complet du programme.
 

Pièces jointes

  • EXPORT-RapportSpinziV7ED.zip
    73.9 KB · Affichages: 106

Discussions similaires

Réponses
13
Affichages
261

Statistiques des forums

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