Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/04/2007, 15h24   #1
Invité de passage
 
Inscription : mars 2006
Messages : 18
Détails du profil
Informations personnelles :
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : mars 2006
Messages : 18
Points : 2
Points : 2
Par défaut Fonctionnement du case différent des autres langages ?

J'avais besoin d'utiliser des GOTO (car dans mon cas il était très utile !) mais j'ai vu qu'il n'existait pas pour ce genre d'utilisation donc je me suis rabattu sur le case. Programmeur de C, je me suis dit ou est le break ? Il provoquait une erreur d'execution et avec mon petit programme test je m'aperçois qu'il ne passe pas par tous les "case" une fois une bonne réponse trouvée !


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
chaine = "salut les copains"
 
Function DansChaine (chaine1, chaine2)
If Instr(chaine1, chaine2) = 0 Then
DansChaine = "-1"
else DansChaine = "ok"
End If
End Function
 
 
wscript.echo DansChaine(chaine , "salut")
 
select case "ok"
 
case DansChaine(chaine, "coucou")
wscript.echo "ne pas écrire1"
 
case DansChaine(chaine, "ccou")
wscript.echo "ne pas écrire2"
 
case DansChaine(chaine, "copains")
wscript.echo "c'est bon1 !"
 
case DansChaine(chaine, "salut")
wscript.echo "c'est bon2 !"
 
case "SALUT"
wscript.echo "ne pas écrire3"
End select
 
wscript.echo "fin du programme !!"
befast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 15h40   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Eh non, ça fonctionne tout pareil...
Mais quand tu fais ça,
Citation:
case DansChaine(chaine, "coucou")
wscript.echo "ne pas écrire1"
qui est le premier case
Comme tu n'as pas "salut", tu mets -1 dans "DansChaine"
Après t'as tout faux
Tu vois ?
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 15h45   #3
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
Bonjour
effectivement le select case s'arrête dès qu'un des cas a été trouvé...
Que veux-tu faire en particulier?
par contre les instruction GOTo existent mais c pas trop conseillé sauf pour la gestion des erreurs
rémi
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 15h50   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Citation:
Envoyé par Anonyme
par contre les instruction GOTo existent mais c pas trop conseillé sauf pour la gestion des erreurs
On utilise jamais les gotos. A la rigueur pour sortir d'une macro en cas d'erreur.
C'est du bricolage, les gotos, ils sont banis, les gotos, on n'en parle plus des gotos !
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 15h54   #5
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 20h07   #6
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tiens, ça m'amusait, ton truc
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Function DansChaine(chaine1, chaine2) As Boolean
If InStr(chaine1, chaine2) = 0 Then
    DansChaine = False
Else
    DansChaine = True
End If
End Function
 
Sub testerLeTruc()
chaine1 = "salut les copains"
chaine2 = Array("coucou", "ccou", "copains", "salut", "SALUT")
    For i = 0 To UBound(chaine2)
 
        If DansChaine("salut", chaine2(i)) Then
 
            Select Case chaine2(i)
 
            Case "coucou"
                MsgBox chaine2(i) & "ne pas écrire1"
 
            Case "ccou"
                MsgBox chaine2(i) & "ne pas écrire2"
 
            Case "copains"
                MsgBox chaine2(i) & "c'est bon1 !"
 
            Case "salut"
                MsgBox chaine2(i) & "c'est bon2 !"
 
            Case "SALUT"
                MsgBox chaine2(i) & "ne pas écrire3"
            End Select
         End If
        MsgBox "c'est pas bon !"
    Next
End Sub
Mais c'est du VBA
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h52.


 
 
 
 
Partenaires

Hébergement Web