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

Bien.

Mon objet de type ListesLiées commence à donner des résultats, je le joins. Il y a beaucoup de code, mais sa seule interaction avec le monde extérieur est concentrée en peu d'instructions dans module Feuil5 (Budget)
 

Pièces jointes

  • LstLiéesSpinzi.xls
    380 KB · Affichages: 64
  • LstLiéesSpinzi.xls
    380 KB · Affichages: 62
  • LstLiéesSpinzi.xls
    380 KB · Affichages: 63

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Bonjour messieurs,

je suis un peu pris en ce moment pour pouvoir me plonger à fond dans vos fichiers. J'ai même demandé une formation macro au boulot pour joindre l'utile (pro) à l'agréable (perso).
@Tirou : je vois le module mais je ne sais pas comment le lancer : il faut que je l'affecte à quelque chose ? Genre un bouton de commande ? (désolé je suis vraiment nul).

@Dranreb : dans ton fichier lorsque je clique sur une liste de validation j'ai un message d'erreur
Code:
Erreur d'execution '424' : Objet requis
Et n'hésites pas a proposer tes solutions ! J'aimerai avoir une vision d'ensemble de ce qui se fait, et surtout voir ce qui serait pour vous le plus optimal ! Il faut juste que je garde une certaine flexibilité par rapport aux colonnes (ce pourquoi je demande seulement la liste des ordres liés) car ce fichier est un standard appliqué à pleins de cas uniques ...

Merci à vous !
 

Tirou

XLDnaute Occasionnel
Re : Besoin aide VBA

Salut Spinzi,

Bon, histoire qu'on se comprenne, nous pourrions t'expliquer le B A BA mais je pense que tout le monde aura plus vite fait de te laisser suivre ce très bon tuto : Cours VBA : introduction
ça te donnera déjà une vue de base sur que sont les macros, qu'est-ce qu'elles font, comment on peut les appeler simplement.

C'est bien sûr une initiation, que ce forum pourra te permettre d'approfondir. Finalement, c'est surtout qu'il manque au tuto un peut toutes les syntaxes, et toutes bouts de code que des gens comme Dranreb créent pour l'efficacité et le confort de tous.

@ Dranreb : Je regarde ça ASAP, mais j'avoue que je n'ai jamais utilisé les classes pour le moment.
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Merci pour toutes ces informations. Je me rends aussi compte qu'effectivement je cherche à reproduire des outils qui existent déjà : les TCD.
Une fois que je serai moins overbooké, j'essaierai de poster un TCD à mon goût qui serait optimisable vec des macros.
Le véritable soucis que j'ai avec les TCD c'est la mise en forme : suppression de lignes à 0, modulabilité, etc même si avec une macro je ne pense pas que ce soit forcément plus modulable non plus.

Merci encore à vous pour toutes ces propositions !
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Oups pardon ...

En feuil5 (Budget) :
Private Sub InitLLSiNécessaire()
If LL Is Nothing Then
Set LL = New ListesLiées
LL.Plage [Base]
LL.Add [LstDéptmt], [BasDéptmt], Me.[B1]
LL.Add [LstCCoûts], [BasCCoûts], Me.[C1]
LL.Add [LstRespon], [BasRespon], Me.[D1]
LL.Actualiser: End If
End Sub

J'ai essayé de comprendre (en regardant par rapport au nom d'onglet), mais déjà qu'avec une macro simple je galère, alors là =)
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Un petit "#NA" ...

ps : j'ai mis cette formule en J1 de la feuille budget. Cependant si je comprends bien et d'aprés tes macros, tu as passé celle qui était là avant en format texte ? (histoire de la garder sous la main mais ne pas qu'elle intéragisse ?)
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Oh, si elles doivent y être. Il semblereait qu'il y ait un problème avec la fonction PlgUti de Utilit appelée par ColUti.
Essayez voir en donnant provisoirement comme référence au nom Base ='Base en cours'!$D$2:$O$9
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

C'est vrai que pour l'instant le nom Base était égal a #NA ...
Et cela fonctionne tout de suite mieux (au niveau des listes de validation, mais il n'y a qu'ici que cette macro agit pour l'instant, c'est bien ça ?)
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Oui, un objet de mon type ListesLiées n'agit que sur les listes spécifiées comme 1er paramètres aux Add.
Mais il devrait pouvoir rendre la liste des numéros de lignes se rapportant à la combinaison des choix effectués (propriété Lignes en lecture seule).
Quant à la possibilité de changement des cellules Argument, elle est limitée pour le moment à une seule possibilité, adaptée aux listes de validations dans toutes les cellules d'une même colonne d'un tableau: il suffirait de lui préciser Target au LL.MàJListes de la Worksheet_SelectionChange.

P.S. Mais je viens de voir que ça va poser un problème parce que la liste d'un choix effectué n'est pas corrigée. Comprenez pas ? Pas grave !… De toute façon c'est en rodage tout ça…
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

J'avoue ne rien comprendre aux termes propres au fichier que vous avez construit ! Mais cela paraît logique =)
Et comme vous le dite, c'est un fichier en rodage, il n'est pas urgent même si la lenteur de mon fichier pourrait me faire commettre un crime ...

Alors un grand merci !
 

Discussions similaires

Réponses
13
Affichages
256