Besoin aide VBA

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Bonjour Tirou,

pour les celulles vides, il ne doit pas y en avoir. Donc logiquement ce test ne servirait à rien ci ce n'est ralentir un tout petit peu plus la macro ?
En tout cas après une légère modification dans ton premier test (page 1) j'arrive à obtenir ce que je désire ! (je ne voulais pas la colonne 7 mais 15; mais c'est changé, c'est bon)
On va pouvoir passer à la seconde phase qui est la transformation de ma formule matricielle en macro ? =)
 

pedrag31

XLDnaute Occasionnel
Re : Besoin aide VBA

Bonjour Spinzi, bonjour le fil,

On va pouvoir passer à la seconde phase qui est la transformation de ma formule matricielle en macro ? =)
C'est ce qu'il me semblait comprendre dans tes premières explications, d'où ma question sur le résultat final que tu souhaitais obtenir pour faire la macro d'un coup (gestion doublons + rapport), incluant les optimisations de rapidité.

Ce fichier à pour but, grâce au choix de la liste de validation, de remonter tous les ordres suivant un choix de département et/ou de nom de centre de couts et/ou de responsable. Ensuite j'aimerai avoir une mise en page un peu particulière ...
Poste un exemple précis avec ce que tu veux comme résultat, c'est à dire un exemple de rapport des ordres que tu auras fait "à la main" qui montre ce qu'il faudra obtenir au final, et également les étapes que tu souhaites que l'utilisateur emprunte pour y arriver (exple 1. Sélection du département dans cellule A1 2. Sélection du responsable 3. Clic sur bouton "Rapport", etc...)

Bonne journée :)
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Bonjour à tous,

oui au final je me suis rendu compte avec toi que mes explications n'étaient pas claires, le étape par étape n'étant pas forcément la marche à suivre ...

Vous trouverez ci joint un fichier exemple (avec la macro de Tirou intégrée) et une espece de procédure ou de mode opératoire, qui compile le fichier comme je l'aimerais en version final !

Si vous avez une question, n'hesitez pas, je reste à votre entière disposition

edit :
Je pense que pour cacher les lignes/colonnes, ce code devrait être adaptable ?
Sub test()
Dim i&, R As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error Resume Next
For i = 3 To 50
If Cells(i, 9) + Cells(i, 14) + Cells(i, 18) = 0 Then
If Not R Is Nothing Then
Set R = Union(R, Rows(i))
Else
Set R = Rows(i)
End If
End If
Next i
If Not R Is Nothing Then R.EntireRow.Hidden = True
Application.Calculation = xlCalculationAutomatic
End Sub
 

Fichiers joints

Dernière édition:

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Bonjour à tous,

j'espere ne pas vous avoir effrayé !
Ma demande se résume dans un premier temps à remplacer par macro ma formule pour renvoyer des résultats multiples.

Bonne journée à tous
 

Tirou

XLDnaute Occasionnel
Re : Besoin aide VBA

Salut Spinzi,

Alors, je viens d'essayé de me lancer dans l'adaptation macro de ta formule. Je me heurte à un soucis : je ne sais pas ce qu'il faut faire ...
1) Dans tes posts, je n’ai pas trouvé d'explication/indication sur ce que tes formules font.
2) les formules disponibles (uniquement dans ton fichier indicé 1) sont assez infâmes :
Code:
{=SIERREUR(INDEX(TableauBase[[#Données];[Code budgétaire]];PETITE.VALEUR(SI((EQUIV(TableauBase[[#Données];[Département]]&TableauBase[[#Données];[Code budgétaire]];TableauBase[[#Données];[Département]]&TableauBase[[#Données];[Code budgétaire]];0)=LIGNE(INDIRECT("1:"&LIGNES(TableauBase[[#Données];[Code budgétaire]]))))*(TableauBase[[#Données];[Département]]=Budget!$B$1)*(TableauBase[[#Données];[Nom Centre de coûts]]=Budget!$C$1);LIGNE(INDIRECT("1:"&LIGNES(TableauBase[[#Données];[Code budgétaire]]))));LIGNE(INDIRECT("1:"&LIGNES(TableauBase[[#Données];[Code budgétaire]])))));"")}
Code:
=SI(ET(D1="";B1<>"";C1<>"");Formule1;SI(ET(D1="";B1<>"";C1="");Formule2;SI(ET(D1<>"";B1="";C1<>"");Formule3;SI(ET(D1<>"";B1="";C1="");Formule4;SI(ET(D1="";B1="";C1<>"");Formule5;SI(ET(D1<>"";B1<>"";C1="");Formule6;SI(ET(D1="";B1="";C1="");"";Formule7)))))))
Et je ne sais même pas sur laquelle partir ....

3) J'avoue ne pas comprendre ton essai de macro (R c'est quoi? les colonnes sont-elles un exemple ou vraiment ce que tu cherches ? )


Explique nous, avec des mots, ce que tu attends de ton traitement automatique.
 

Spinzi

XLDnaute Impliqué
Re : Besoin aide VBA

Bonjour Tirou,

Ce que je cherche à faire, c'est afficher tous les ordres liés aux listes de validation. Quand dans la liste validation département je cherche "Lyon", je souhaiterais tous les ordres qui ont pour département "Lyon". Si les autres listes de valdiation sont vides, alors il ne cherche que sur ce critère.
Si dans la liste de validation département je choisis "Lyon" et dans la liste de valdiation nom de centre de coûts je choisis "Centre cout1", je recherche tous les ordres qui ont pour département "Lyon" et pour centre ce couts "Centre cout1".

Une fois que je pourrais visualiser ce résultat j'aimerai une mise en forme mais je pense qu'il faut déjà commencer par la formule.

La formule qui était présente en matricielle et en E3 servait seulement à choisir qu'elle référence appeler (Formule 1, Formule 2, etc.) suivant le remplissage des listes de validation.

Le bout de code que j'ai joins est un bout de code piqué sur le site qui permet de masquer des colonnes ou lignes je crois. C'était pour essayer d'avancer le projet de mo ncoté en trouvant des codes adaptables ... mais non je n'ai pas essayé de l'implémenter, c'est juste à titre informatif

Suis-je plus clair ?
N'hésite pas à me harceler =)

Et encore merci pour l'intérêt que tu portes à mon fichier
 

Tirou

XLDnaute Occasionnel
Re : Besoin aide VBA

Salut Spinzi,

Je te propose un début de code pour que tu puisses toi-même l'adapter et essayer de voir comment tu veux construire ton onglet final.

Je sais que je m’arrête alors que le travail n'est pas fini, mais reconstruire par macro un tableau croisé dynamique ne me motive pas vraiment.

Je reste à ta disposition pour t'aider à adapter.
 

Fichiers joints

Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Bonjour.

Je signale que tout cela est quand même assez facile à écrire à l'aide des modules de services de OutIdx, et en particulier des dictionnaires arborescents. Si les choix étaient à effectuer dans des ComboBox d'un userform, j'aurais depuis longtemps proposé ma solution immédiate standard. Pour des plages utilisées par des listes déroulantes de formulaire ou de validation j'ai commencé un nouveau module de classe pour les gérer. Seriez vous intéressé de participer à sa mise au point ?
 

Tirou

XLDnaute Occasionnel
Re : Besoin aide VBA

Perso, je suis intéressé d'avoir un bout de code exemple des différents outils que tu cites (outIdx, dictionnaire arborescent)
Maintenant que tu viens de m'éclairer sur l’existence de ces objets, j'ai de la biblio à faire ! :D
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Il y a cette vieille discussion :
http://www.excel-downloads.com/forum/187857-outidx-macro-complementaire-modules-de-classe-et-indexation.html?highlight=outidx
Mais les fichiers ne sont plus à jour depuis longtemps, OutIdx a bien évolué. Et il évolue encore puisque j'y ajoute un module de classes ListesLiées. Mais je suis trop navré par le manque d'implication des autres XLDnautes pour avoir envie d'y reporter les mises à jour.
Mais il n'y aurait sans doute pas à chercher très longtemps dans mes discussion pour y trouver des modules plus récents. C'est bien la moitié de celles auxquelles je participe, du moins j'en ai l'impression.
 
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)
 

Fichiers joints

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 !
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Bonjour.
Chez moi je n'ai pas d'erreur. Il faut m'en dire plus. Quelle instruction dans quel module ?
 

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à =)
 

Dranreb

XLDnaute Barbatruc
Re : Besoin aide VBA

Si on met par exemple en J1 cette formule, qu'est ce que ça dit ?
Code:
=INDEX(Base;1;2)
 

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 ?)
 

Discussions similaires


Haut Bas