Changer les lettres avec celles qui viennent en 3eme position apres dans l'alphab

  • Initiateur de la discussion Initiateur de la discussion garrec
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

garrec

XLDnaute Occasionnel
Bonjour 😕

j'ai un Useform avec un CommandButton1_Click() et un TextBox1

J'aimerais quand j'écris par exemple : toto dans le Text Box obtenir wrwr et quand j'écrit TOTO obtenir WRQR.

W = T + 3 caractères dans l'alphabet (T U V W)
R = O + 3 caractères dans l'alphabet (O P Q R)

J'ai déjà coder ceci

Code:
Private Sub CommandButton1_Click()

Dim lettre As String, decalage As Integer

lettre = TextBox1

decalage = 3

MsgBox (Cesar(lettre, decalage))

End Sub

Function Cesar(lettre As String, decalage As Integer) As String



Dim LResult As Integer

Dim Declettre As String

Dim DecResult As Integer



LResult = Asc(lettre)

DecResult = (LResult + 3)



    If DecResult > 90 Then

    DecResult = CInt((Fix((DecResult - 65) Mod 26)) + 65)

    End If

    

Declettre = Chr(DecResult)

Cesar = Declettre

End Function






Private Sub TextBox1_Change()

End Sub

Cette macro me change seulement une lettre en majuscule en la lettre qui vient 3 fois apres dans l'alphabet avec la fonction Asc mais je ne trouve pas comment prendre un string en entier et aussi en minuscule

Je joint mon fichier ci dessous!

Thanks in advance😀
 

Pièces jointes

Re : Changer les lettres avec celles qui viennent en 3eme position apres dans l'alpha

Bonjour,

regarde peut être ceci, utiliser dans le module de l'usf :
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = KeyAscii + 3
End Sub
bon après midi
@+
 
Re : Changer les lettres avec celles qui viennent en 3eme position apres dans l'alpha

Bonjour Pierrot

Merci mais je ne vois pas tres bien ce que tu veux dire avec ce code

Private Sub CommandButton1_Click()



Dim lettre As String, decalage As Integer

lettre = TextBox1

decalage = 3

MsgBox (Cesar(lettre, decalage))

End Sub

Function Cesar(lettre As String, decalage As Integer) As String



Dim LResult As Integer

Dim Declettre As String

Dim DecResult As Integer



LResult = Asc(lettre)

DecResult = (LResult + 3)



If DecResult > 90 Then

DecResult = CInt((Fix((DecResult - 65) Mod 26)) + 65)

End If



Declettre = Chr(DecResult)

Cesar = Declettre

End Function


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = KeyAscii + 3
End Sub

Pour ma part je pense qu'il y a 2 probleme

Le problemes des minuscules mais on peut les obtenirs entre 90 et 122 avec des IF

mais dans mon texte box on ne peut prendre QUE une lettre toujours et non pas une chaine de caractere??

non?
 
Re : Changer les lettres avec celles qui viennent en 3eme position apres dans l'alpha

Re,

une autre proposition qui répondra peut être un peu plus à la demande...
Code:
Private Sub CommandButton1_Click()
Dim i As Byte, t As String
For i = 1 To Len(TextBox1)
    t = t & Chr(Asc(Mid(TextBox1, i, 1)) + 3)
Next i
MsgBox t
 
Re : Changer les lettres avec celles qui viennent en 3eme position apres dans l'alpha

Pierrot

J'ai une question sur les majuscules et les minuscules avant de changer toute la chaine de texte 😉

Code:
Private Sub CommandButton1_Click()

Dim lettre As String

lettre = TextBox1


MsgBox (Cesar(lettre))

End Sub

Function Cesar(lettre As String) As String



Dim LResult As Integer

Dim Declettre As String

Dim DecResult As Integer



LResult = Asc(lettre)

'Pour les majuscules jusqu'a W

If 65 < LResult <= 87 Then

DecResult = (LResult + 3)

End If

'X Y Z

If LResult = 88 Then

DecResult = 65

End If

If LResult = 89 Then

DecResult = 66

End If

If LResult = 90 Then

DecResult = 67

End If

' Pour les minuscules

If 97 < LResult <= 122 Then
    
DecResult = (LResult + 3)
    
End If
    
Declettre = Chr(DecResult)

Cesar = Declettre

End Function

Pourquoi par exemple quand je met X il me resort pas le Chr(65) ? Quand je fais le pas a pas détaillé il passe sur les deux conditions ci dessous?

If 65 < LResult <= 87 Then

If 97 < LResult <= 122 Then
 
Re : Changer les lettres avec celles qui viennent en 3eme position apres dans l'alpha

Re!

J'ai finalement fait comme ça (code ci dessous) mais j'ai toujours un pb avec x y z et X Y Z

Code:
Private Sub CommandButton1_Click()

Dim i As Byte, t As String

Dim AscCaractere As Integer

For i = 1 To Len(TextBox1)

AscCaractere = Asc(Mid(TextBox1, i, 1))

    t = t & Chr(Cesar(AscCaractere))
    
Next i

MsgBox t

End Sub


Function Cesar(AscCaractere As Integer) As Integer



Dim Declettre As String

Dim DecResult As Integer




'Pour les majuscules jusqu'a W

If 65 <= AscCaractere <= 87 Then

DecResult = (AscCaractere + 3)

End If

'X Y Z

If AscCaractere = 88 Then

DecResult = 65

End If

If AscCaractere = 89 Then

DecResult = 66

End If

If AscCaractere = 90 Then

DecResult = 67

End If


' Pour les minuscules

If 97 < AscCaractere <= 122 Then
    
DecResult = (AscCaractere + 3)
    
End If

    
Cesar = DecResult



End Function
 
Re : Changer les lettres avec celles qui viennent en 3eme position apres dans l'alpha

Bonjour,

peut être comme ceci :
Code:
Private Sub CommandButton1_Click()
Dim i As Byte, t As String, x As Integer
For i = 1 To Len(TextBox1)
    x = Asc(Mid(TextBox1, i, 1))
    If (x >= 88 And x <= 90) Or (x >= 120 And x <= 122) Then
        x = x - 23
    Else
        x = x + 3
    End If
    t = t & Chr(x)
Next i
MsgBox t
End Sub

bonne journée
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour