Erreur de code [Résolu]

Signaler
Messages postés
8
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
12 avril 2007
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
Bonjour,
je suis hyper super debutant en programmation, et je veux poser une petite question,
Voila mon code et mon application.
             le voila le code :
Private Sub Text1_Change()
   If Text1.Text = "a" Or "A" Then
       Text2.Text = "1ère lettre de l'alphabet"
   End If
   If Text1.Text = "b" Or "B" Then
       Text2.Text = "2ème lettre de l'alphabet"
   End If
   If Text1.Text = "c" Or "C" Then
       Text2.Text = "3ème lettre de l'alphabet"
   End If
   If Text1.Text = "d" Or "D" Then
       Text2.Text = "4ème lettre de l'alphabet"
   End If
   If Text1.Text = "e" Or "E" Then
       Text2.Text = "5ème lettre de l'alphabet"
   End If
   If Text1.Text = "f" Or "F" Then
       Text2.Text = "6ème lettre de l'alphabet"
   End If
   If Text1.Text = "g" Or "G" Then
       Text2.Text = "7ème lettre de l'alphabet"
   End If
End Sub

et voila le message d'erreur qui apparait (sans les guillements " " ) :  "  run-time error '13':
                                                                
                                                                                                         Type mismatch  "

Merci de m'aider.
                                                                                      

45 réponses

Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
3
Mais pour Yassine vois plutôt comme ceci


dim a$,i as integer
a$=Lcase(text1.Text)
for i=1 to 26
   if a$=chr$(64+i) then exit for  'rem chr$(65)="a"
next i


texte2.text= i & " éme lettre de l'alphabet"


le même résultat que ta routine mais en plus cour....


A++
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

un petit morceau de code ? Allez :

' ta technique, un peu améliorée.. :

Private Sub Text1_Change()
   If LCase(Text1.Text) =  "a" Then
       Text2.Text = "1ère lettre de l'alphabet"
   ElseIf LCase(Text1.Text) = "b" Then
       Text2.Text = "2ème lettre de l'alphabet"
   ElseIf LCase(Text1.Text) = "c" Then
       Text2.Text = "3ème lettre de l'alphabet"
   ElseIf LCase(Text1.Text) = "d" Then
       Text2.Text = "4ème lettre de l'alphabet"
   ElseIf LCase(Text1.Text) = "e" Then
       Text2.Text = "5ème lettre de l'alphabet"
   ElseIf LCase(Text1.Text) = "f" Then
       Text2.Text = "6ème lettre de l'alphabet"
   ElseIf LCase(Text1.Text) = "g" Then
       Text2.Text = "7ème lettre de l'alphabet"
   End If
End Sub

' autre technique, prenant en compte TOUTES les lettres alpha :

' a = Chr(97)
' z = Chr(122)

Private Sub Text1_Change()
        Dim PlaceAlpha As Long
    
    If Len(Text1.Text) = 1 Then
        PlaceAlpha = Asc(LCase(Text1.Text)) - 96
        Select Case PlaceAlpha
            Case 1: Text2.Text = CStr(PlaceAlpha) & "ère lettre de l'alphabet"
            Case Else: Text2.Text = CStr(PlaceAlpha) & "ème lettre de l'alphabet"
        End Select
    ElseIf Len(Text1.Text) = 0 Then

        Text2.Text = vbNullString
    Else
        MsgBox "Caractère(s) non prévu(s), veuillez reformuler !": Text1.Text = vbNullString
    End If
End Sub

~ <small> Mortalino ~ Colorisation automatique </small>

@++





<hr width ="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Vous vous êtes amusés, hein ?

Je conteste l'utilisation faire par  865934 yassine_imou de l'événement change !

Mais s'il y tient tant, voilà une façon (parmi yne foule d'autres)
:
Private Sub Text1_Change()
  couic = Right(Text1.Text, 1)
  If UCase(couic) Like "[!A-Z]" Then Exit Sub
  suff = IIf(Asc(UCase(couic)) - 64 > 1, "ème", "ère")
  MsgBox couic & " est la " & (Asc(UCase(couic)) - 64) & suff & " lettre de l'alphabet"
End Sub
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
2
Met le message d'erreur en entier car là impossible de te dire où est l'erreur pour l'instant.

Redman
Messages postés
60
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
6 janvier 2009

Salut Yassine_Imou,

Essai ceci
   If Text1.Text "a" Or Text1.Text "A" Then
       Text2.Text = "1ère lettre de l'alphabet"
   End If

Bye
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
2
L'erreur n'est pas là apparemment.

Redman
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
3
Bonsoir à tous
Cette erreur est un bug de XP
Il faut charger XP Pack3 pour y remédier.

NB J'ai trouver la réponse sur le net, tu aurrait pu d'abord faire cette démarche.
Si tu ne sais pas comment faire, tu tape le libellé de l'erreur dans un moteur de recherche, à l'occurence j'ai employé Google et la réponse est là.

bonsoir à tous
louis
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
3
Pour répondre à tiblay


pour l'exemple que tu donne je mettrais plutôt


   if Ucase(text1.tex) ="A" then
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
2
Tout revient au même !

Redman
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
l' affecation
Text2.Text = "1ère lettre de l'alphabet"

déclenche une autre fois Text1_Change()
-

-
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
3
OK tout revient au même, mais plus cour et plus rapide
Messages postés
60
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
6 janvier 2009

Salut Lermite222,

Oui en effet c'est avec un UCase que cela doit etre fait, mais pour comprehension (didactique), je crois que cela est plus simple

Bye

TiBlay
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
3
c'est pour cela que j'emploi une variable, l'inscription ne se fait qu'une fois
et s'il n'y à pas de code dans text2 celà n'a pas d'importance.
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
2
Pas obligé d'un UCase. Tout donne le même résultat. J'ai testé.

Redman
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
juste !

-

-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
à l'ermite...
-

-
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
2
Mortalino. Trop de code pour rien ! autant détecter en faisant lettre.tolower et en fonction de la valeur ASCII du la lettre dire en une ligne la combien de lettre c'est. Juste avec la différence de z en ASCCI moi la valeur chiffre de l'ASCII de la lettre.

Redman
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
3
Salut Mortalino
Tu lui a vraiment macher tout le travail.
cordialement
louis
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Trop de code pour rien
>> ca dépend, à part les retours arrières, tout est géré. seulement je ne connais pas trop le but de notre ami (but final).

lettre.tolower ?
Connais pas. C'est pas du DotNet ça ? Il me semblait qu'il était en VB6

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
2
C'est un exemple lettre.tolower sachant que lettre est un char ou string contenat une lettre.

Redman