nsolal
Messages postés10Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention28 mars 2008
-
25 mars 2008 à 19:28
nsolal
Messages postés10Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention28 mars 2008
-
28 mars 2008 à 18:19
Bonjour, un petit probleme a vous soumetre, pas bien dur (je pense).
J'ai deux feuilles, une avec un tableau, une autre avec des données. Je voudrais remplir le tableau avec des données (ca vous en bouche un coin, hein ?).
feuille 1 (change toujours)
Ligne ... jeudi ... vendredi ... samedi
Ll
L3
L25
L99
LA
Ne me parlez pas de tableau croisé, ca ne passe pas (parce que j'ai simplifié le probleme.
Ce que je fais, pour l'instant : je passe chaque ligne de la feuille 2 en revue et je fais des tests.
Pour les lignes de bus , en début de programe, je les met dans une liste lignebus(1)="L1" ; lignebus(2) = "L3" ; ... ; lignebus(5)="LA".
Ce que je voudrais c'est savoir comment retrouver l'indicateur (le numéro de pointeur ou ce que vous voulez, je manque de vocabulaire) à partir du nom de la ligne.
En d'autre termes, quand je dis "L3", je voudrais qu'on me réponde 2.
J'avais pensé tricher en codant :
Select Case Sheets(feuille2).Cells(i, 4).Value ' cette value, c'est L1, L3 ou autres
For l = 1 To nb ' nb c'est le nombre de lignes, 5 dans mon exemple
Case lignebus(l)
...
Next l
End Select
mais ca marche pas
Une idée ?
(je peux ptet faire une fonction rien que pour ca mais si y'a une instruction magique qui s'en charge déjà, je m'épargnerai cet effort )
nsolal
Messages postés10Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention28 mars 2008 28 mars 2008 à 18:19
Bon, je m'en suis tiré avec deux if imbriqués de facon pas tres propre. Mais c'est vrai qu'un for aurait pu faire l'affaire.
genre:
for i=1 to fin_liste
if liste(i)= "value" then
rang=i
end if
next i
Je m'etonne qu'il n'existe pas une intruction ad hoc.
nsolal
Messages postés10Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention28 mars 2008 26 mars 2008 à 11:20
j'ecris, par programme, les valeur des lignes de bus dans un tableau à une dimention
lignebus(1)="L1" ; lignebus(2) = "L3" ; ... ; lignebus(5)="LA".
Mais évidemment, je peux changer si une autre méthode se révele plus intelligente.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 26 mars 2008 à 13:18
Pb de structure dans ton code !! Le bloc For ... Next ne peut pas encadrer 1 Case du bloc Select ... End Select ! Soit le Select ... End Select est dans le bloc For ... Next, soit le For ... Next est dans un bloc Case du Select ... End Select :
1-
For ...
Select Case ...
Case ...
Case ...
End Select
Next
2-
Select Case ...
Case ...
For ...
Next
Case ...
End Select
Alors maintenant, j'ai pas tout compris à ton PB, mais je pense que la structure de type 1 correspondra à ce que tu veux ...
nsolal
Messages postés10Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention28 mars 2008 26 mars 2008 à 14:16
Malheureusement non :
Mon probleme est que meme si je sais combien il y en a de différentes (dans mon exemple 5), je ne sais pas quelles vont etre les lignes qui vont apparaitre.
Dans cet exemple il faudrait que j'ecrives
select lignebus
case "L1"
case "L3"
case "L25"
case "L99"
case "LA"
end select
Mais au prochain coup, les noms des lignes aura changé et il me faudra changer mon select case en case "L2", case L"5555", ...
Je ne suis pas obligé d'utiliser un select, bien sur
nsolal
Messages postés10Date d'inscriptionmercredi 28 novembre 2007StatutMembreDernière intervention28 mars 2008 26 mars 2008 à 14:16
j'ecris, par programme, les valeur des lignes de bus dans un tableau à une dimention
lignebus(1)="L1" ; lignebus(2) = "L3" ; ... ; lignebus(5)="LA".
Mais évidemment, je peux changer si une autre méthode se révele plus intelligente.
Le grand Zorro
Messages postés50Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention12 mai 2008 26 mars 2008 à 15:04
S'il s'agit d'une énumération, je conseillerais plutôt le type ENUM à la place d'un tableau Lignebus(x) (en VB.NET) maintenant en VBA???
Je pense aussi à qque chose de plus simple : les fonctions RECHERCHE, DECALER, INDEX, EQUIV. Une combinaison de ces fonctions devrait résoudre le problème.