|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2010 Messages : 5 ![]() |
Bonjour
J'aimerai faire un select case dont les valeurs de choix seraient dynamique en fonction du contenu d'une colonne d'un onglet. J'explique le détail : J'ai une liste de projet qui ont chacun un ou plusieurs codes Prj1 : 45 , 57 , 67 Prj2 : 32, 56, 63, 87 Prj3 : 43 J'ai cette liste dans un onglet car elle évolue. Le nombre de code par projet n'est pas fixe. Et d'un autre coté (un autre onglet), une longue liste de frais par code . Et je veux créer un onglet par projet en y copiant toute les lignes qui contiennent un des codes du projet. J'ai pensé faire un select case sur le code pour copier dans l'onglet concerné. Mais comme la liste de code et de projet évolue, ca me fait changer le programme à chaque fois. Comment serait il possible de faire un équivalent select case dynamique en fonction de ce que j'ai entré dans la liste des codes par projets ? J'espère que j'ai réussi à expliquer clairement mon problème. Merci d'avance |
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() |
Salut et bienvenu
Le mieux dans ton cas je pense, serait de créer une collection de dictionnaires Le nombre de dico est déterminé en fonction du nombre de lignes Code :
Dico(0) -> Prj1 Dico(1) -> Prj2 Dico(2) -> Prj3 Puis dans ton code utiliser la méthode Exists des dico pour asvoir si un code donnée s'y trouve Si tu veux savoir si le project 1 contient le code 57 tu fais Je n'ai pas trop le temps de m'y pencher plus, peut etre en fin de journée. Essai de donner plus d'infos Citation:
Nous n'avons pas ton fichier sous les yeux, donc ce qui peu te paraitre évident a tes yeux, ne l'ai pas forcement au notre A++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 |
|||
|
|
00
|
|
|
#3 | ||||
|
Invité de passage
![]() Inscription : mars 2010 Messages : 5 ![]() |
Bonjour Qwaz
Merci pour la réponse. Je ne suis pas habitué à écrire du VB objet ( -> ), mais je comprend que tu propose un tableau à 2 dimensions. (je ne sais pas affecter les codes aux dico sauf à faire un tableau à 2 dim) Ca me va bien, mais ce qu'il me faudrait dans ce cas ( pour éviter une boucle sur tous les indices de Dico existants) c'est un équivalent à "Dans quel dico est le code xx" Après réflexion je pense que plutot que d'organiser ma liste de projets/code comme ca : Code :
Code :
Par contre j'aimerai éviter de faire 2 boucles imbriquées: - une boucle sur chaque occurence d'association projet-code pour trouver le projet à partir du code - ceci dans une boucle sur chaque ligne de la liste des montant à affecter. J'ai joint un fichier avec -l'exemple d'organisation projet-code (onglets projetType1 et projetType 2) - les données sources - et les onglets résultat que je veux obtenir (un par projet) A+ |
||||
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() |
Salut
Un petit truc, la notation Dico(0) -> Prj1 n'est pas du code vb, c'est juste pour imagé, je sais que certain langage utilise ce type de syntaxe mais pas VB La notion de dico est plus complète qu'un tableau a 2 dimensions, des méthodes lui sont rattachées, elle permettent entre autre de rapidement trouver si une entrée existe déjà. Je les avait déjà croisé auparavant mais je n'ai que ressemant découvert qu'ils permettaient un travail rapide et efficace. Les infos sont elles amenées a être modifiées par la suite? J'entend pas modifier, une fois la macro exécutée, est ce que des ligne seront rajoutées dans l'onglet DataSource ou dans l'onglet Projet_Type ? Si oui comment vois tu l'évolution des données contenues dans tes différents onglets? Les montants doivent ils changés de valeur lorsque tu fais une modif dans DataSource? (-> Mise en place de formules dans les cellules) Les montants et nouveaux onglets sont créés ou modifiés a chaque lancement de la macro? La 1er organisation des codes (onglet Projet_type1) me parait plus adapté a ce que tu souhaites faire. A++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Inscription : mars 2010 Messages : 5 ![]() |
Bonsoir
après plus de creuzage de tete, j'ai vu que le 1er type d'organisation ne pouvait pas aller car j'avais besoin d'autres info par code Donc je suis parti sur le type 2 ( une ligne par code) pour pouvoir mettre un texte explicatif par code. J'ai utilisé les type : Code :
Par contre je suis très intéressé pour savoir où trouver comment fonctionne le "Dico" et toutes les fonctions qui lui sont attachées. Merci pour l'aide, ca m'a permis de clarifier mon besoin et les possibilités. Et je doit finir ca pour demain. A+ |
||
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé Sénior
![]() |
Pour demain...
![]() Pour le dico. il faut ajouter la reference "Microsoft Scripting Runtime" au projet Dans VBA menu Outils->References -> Dans la liste cocher "Microsoft Scripting Runtime" Pour la déclaration Code :
Bon courage ++ Qwaz Ce code te crée un dico contenant la liste des projets a créer, et un dico par projet contenant chacun la liste des codes liés au projet. Code :
Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Score PowerBall Gyroscope Green : 11847 Dernière modification par AlainTech ; 09/05/2010 à 19h02. Motif: Fusion de 2 messages |
||||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mars 2010 Messages : 5 ![]() |
Merci pour toutes ces infos.
J'ai déjà un autre programme à faire, je vais pratiquer le dico ;-) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com