Erreur d'exécution programme [Résolu/Fermé]

Signaler
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
-
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
-
Bonjour,

Mon programme ne s'exécute pas comme il faut, je souhaite que l'utilisateur entre une langue, soit Français, français, french, French ou English, english, Anglais, anglais ; Si l'utilisateur n'entre rien ou une langue différente, il doit avoir un message d'erreur et doit pouvoir recommencer (d'où la boucle While/Wend). Le problème dans mon code c'est que dès que j'entre autre chose que les langue mentionnée, j'ai une "incompatibilité de type 13".
Quelqu'un peut m'aider? Merci.

Private Sub Workbook_Open()

Dim langue As String
Dim langue1 As String
Dim langue2 As String
Dim langue3 As String
Dim langue4 As String
Dim langue5 As String
Dim langue6 As String
Dim langue7 As String
Dim langue8 As String

langue1 = "Français"
langue2 = "Anglais"
langue3 = "French"
langue4 = "English"
langue5 = "français"
langue6 = "anglais"
langue7 = "french"
langue8 = "english"

langue = InputBox("Bonjour, veuillez sélectionner une langue (Français/Anglais)")
If langue = "Français" Or langue = "français" Or langue = "French" Or langue = "french" Then
MsgBox ("Bienvenue dans le ..." & Chr(13) & " " & Chr(13) & "Vous pouvez sélectionner ...")
ElseIf langue = "English" Or langue = "english" Or langue = "Anglais" Or langue = "anglais" Then
MsgBox ("Welcome to the ..." & Chr(13) & " " & Chr(13) & "You can choose ...")
End If
While (langue <> langue1) & (langue <> langue2) & (langue <> langue3) & (langue <> langue4) & (langue <> langue5) & (langue <> langue6) & (langue <> langue7) & (langue <> langue8)
langue = InputBox("La langue sélectionnée n'est pas disponible, veuillez sélectionner Français ou Anglais") & ("The selected language is not available, please choose French or English")
Wend

End Sub

4 réponses

Bonjour

While (langue <> langue1) & (langue <> langue2) & (langue <> langue3) & (langue <> langue4) & (langue <> langue5) & (langue <> langue6) & (langue <> langue7) & (langue <> langue8)

le & est le signe de la concaténation, il opère entre chaines et donne comme résultat une chaine. Or, While a besoin d'un boolean
Tu devrais mettre AND à la place de & dans cette expression (dans les autres, tu l'utilises bien pour concaténer des chaînes, c'est ok)
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
16
Ok merci, c'est vrai que ça fonctionne mieux avec AND.
Par contre même lorsque je tape Français ou Anglais (ou les autres versions), la boucle s'exécute comme si j'avais entré une autre langue et m'invite à recommencer (indéfiniement biensûr :)
Tu saurais me dire où est mon erreur?
La logique de ton programme est complètement tordue mais passons
Ton problème vient de ton second Msgbox, regarde comment il est écrit :
langue = InputBox("La langue sélectionnée n'est pas disponible, veuillez sélectionner Français ou Anglais") & ("The selected language is not available, please choose French or English")
la seconde partie "The selected language is ..." est ajoutée à la réponse que tu tapes, pas à la question que tu poses. Donc Quand tu tapes "Français", langue vaut "FrançaisThe selected language etc..."
Je pense que tu peux le corriger toi-même
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
16
Oups, oui effectivement! Merci pour ton aide ;)