MSN9COLORIES2

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 8 févr. 2009 à 16:08
TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009 - 9 févr. 2009 à 16:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49218-msn9colories2

TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009
9 févr. 2009 à 16:58
Juste pour information, ce n'est pas la version 9 de msn, mais la version 2009 ou version 14 ;).
LolPiratas Messages postés 80 Date d'inscription mardi 13 août 2002 Statut Membre Dernière intervention 15 décembre 2010
8 févr. 2009 à 18:34
je te remerci j'ai vraiment apris quelque chose d'interessant. Niveau graphisme j'espere que cela vous plait ?
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 févr. 2009 à 18:17
si INDEX = 18, donc la valeur 19 (on commence à 0 avec les contrôles mais à 1 avec le tableau de cet exemple), tu voudrais connaître "37"
par la méthode choose on va donc récupérer la 19ème valeur (Index + 1) dans la suite indiquée, qui est bien 37

1 -> 0
2 -> 1
3 -> 2
...
17 -> 16
18 -> 39
19 -> 37

on a donc 37 en variant (dans viCorresp)si text2 "" (plus proprement si la taille de la propriété text de text2 0)
zone_2 = "[c=" & ce_37_RéCUPéRé & "]"
sinon
zone_3 = "& ce_37_RéCUPéRé & ""
LolPiratas Messages postés 80 Date d'inscription mardi 13 août 2002 Statut Membre Dernière intervention 15 décembre 2010
8 févr. 2009 à 17:29
Dim viCorresp As Variant
viCorresp = VBA.Interaction.Choose(Index + 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 39, 37, 38, 18, 19, 20, 21, 22, 23, 24, 41, 40, 36, 27, 28, 29, 30, 31, 32, 33, 55, 58, 57, 45, 46, 47, 48, 49, 50, 51, 61, 62, 63, 64, 65, 66, 67)

If LenB(text2.Text) = 0 Then
text2.Text = "[c=" & viCorresp & "]"
Else
text3.Text = "& viCorresp & ""
End If
Peu tu m’éclairer sur se code plus haut car je ne le comprends pas trop bien.
Car exemple : image2 (index) qui est égal à 18
le code de couleur c=37 ne correspond pas a l’index de l’image( 18) est pourtant cela fonctionne il me prend la bonne couleur
If Index = "18" Then
If Text2 = "" Then
Text2 = "[c=37]"
Else
Text3 = "/c=37"

End If
LolPiratas Messages postés 80 Date d'inscription mardi 13 août 2002 Statut Membre Dernière intervention 15 décembre 2010
8 févr. 2009 à 16:51
merci pour tes conseils. Je vais revoir tout ca!
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 févr. 2009 à 16:08
salut,

quelques conseils en vrac :

# Text5 = "0"
# If Text5 = "0" Then
à quoi bon tester, tu modifies la valeur toi-même...

#Image2(Index).BorderStyle = 1
préfère les constantes :
Image2(Index).BorderStyle = vbFixedSingle

#Text5 = Text5 + 1
tu additionnes un numérique à une string?
Text5.Text = CStr(Val(Text5.Text) + 1)

#If Text5 = "3" Then
#Call Image2_DblClick(Index)
#If Text5 = "1" Then
comment text5 pourrait valoir à la fois "3" et "1" ?

#If Index = "5" Then
#If text2 = "" Then
#text2 = "[c=50]"
pas "[c=5]" plutôt ?

#If Index = "0" Then
index est un integer, pourquoi tu testes sa valeur string?....

# If Index = "0" Then
# If Text2 = "" Then
# Text2 = "[c=0]"
# Else
# Text3 = "/c=0"
#
# End If
# End If
# If Index = "1" Then
# If Text2 = "" Then
# Text2 = "[c=1]"
# Else
# Text3 = "/c=1"
#
# End If
# End If
etc...

indente ton code, c'est vraiment difficile à relire

pense à SELECT CASE
ici tu testes tous les cas de figures inutilement

et même pour gagner un peu en ligne ici tu peux lire tes correspondances dans un tableau (éventuellement généré à chaque click)
plus de 400 lignes se remplacent donc ainsi :

Dim viCorresp As Variant
viCorresp = VBA.Interaction.Choose(Index + 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 39, 37, 38, 18, 19, 20, 21, 22, 23, 24, 41, 40, 36, 27, 28, 29, 30, 31, 32, 33, 55, 58, 57, 45, 46, 47, 48, 49, 50, 51, 61, 62, 63, 64, 65, 66, 67)

If LenB(text2.Text) = 0 Then
text2.Text = "[c=" & viCorresp & "]"
Else
text3.Text = "& viCorresp & ""
End If

juste survolé...
*fait surtout attention à tes types
*essaye de prendre plus de temps sur la conception avant de te lancer dans le code
*utilise les propriétés des contrôles (et non le contrôle lui-même), çà aide en lisibilité et en debugging

bon courage
Rejoignez-nous