Programmation sur Excel

Résolu/Fermé
loster62 Messages postés 8 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 4 janvier 2010 - 3 déc. 2007 à 16:41
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 17 déc. 2007 à 22:22
Bonjour,
J'aimerai créer un programme sur Excel mais je n'y arrive pas. Mon programme serai de remplacer des lettres par d'autres pour coder des messages. Je vous explique: lorsque je tape "a" , je voudrai que ça soit écrit "d" dans la case. Par exemple, si j'écris "j'aime les maths" je voudrai que cela change mon texte en "m'dlph ohv pdwkv". J=M/A=D/I=L/M=P/H=K/ ... Je décale l'alphabet de 4 crans.
Pouvez vous m'aider ?
Si vous ne me comprenez pas poser moi des questions .
A voir également:

9 réponses

mély30 Messages postés 84 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 8 décembre 2007 2
3 déc. 2007 à 20:26
exemple ta cellule ou veut faire apparaitre est c9

=SI(c9="a";"d";SI(c9="b";"e";SI(c9="c";"f";SI(..............................................................................))))));"")
0
Bonsoir,
J'ai suivi ta méthode, cela marche. Mais il faut que je tape une lettre par case car si j'écris "abc", Excel me met "FAUX". C'est déjà très bien (je te remercie). Tu ne saurais pas par hasard si il y a un moyen pour pouvoir tout écrire dans la même case. Si tu ne sais pas ou que l'on ne peut pas, ce n'est pas grave.
Merci
Cordialement
Benoît
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
4 déc. 2007 à 22:14
bonjour

Le plus simple est de prendre une fonction personnalisée que tu insères dans un module VBA.
Public Function decal(czi As String) As String
Dim i As Integer
Dim c As Variant
For i = 1 To Len(czi)
    c = Asc(Mid(czi, i, 1))
    If c > 86 And c < 91 Or c > 118 And c < 123 Then c = c - 26
    decal = decal & Chr(c + 4)
Next i
End Function

Ensuite tu saisis ton texte dans une cellule et dans une autre cellule tu mets ta fonction :
=decal(A1)

tu remplaces A1 par l'adresse de ton texte.
0
Bonjour,
J'ai tapé votre fonction dans un module VBA. Je pensais qu'ensuite il fallait cliquer sur "Exécution" puis sur "Exécuter Sub/UserForm" mais cela ne marche pas. Il me demande les "macros". Je ne sais pas comment faire. Pouvez vous m'aider, s'il vous plaît?
Je vous remercie pour tout ce que vous avez déjà fait.
Cordialement
Benoît
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
5 déc. 2007 à 17:24
bonjour

Je ne sais pas comment faire. Pouvez vous m'aider, s'il vous plaît?

Peut-être lire la fin de mon message précédent car une fonction personnelle fonctionne exactement comme une fonction excel.

Ensuite tu saisis ton texte dans une cellule et dans une autre cellule tu mets ta fonction :

=decal(A1)

tu remplaces A1 par l'adresse de ton texte.
0
Bonjour,
Excusez moi, je n'y arrivait pas. Maintenant j'ai réussit à faire marcher le programme. Tout va nikel. Merci
J'aimerai faire le programme inverse pour décoder le message mais lorsque je remplace le "+" par le "-" , ce qui est normal, ça me le décode pas tout à fait bien. Il y a des caractères comme "]". Savez vous comment fait-on pour rester qu'avec les lettres ?
Cordialement
Loster62
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
16 déc. 2007 à 17:31
bonjour

Savez vous comment fait-on pour rester qu'avec les lettres ?

Il y avait une petite astuce dans le codage pour passer de "z" à "a" et rester dans les lettres.
Donc pour décoder il faut faire l'astuce inverse et passer de "a" à "z".
Public Function decod(czi As String) As String
Dim i As Integer
Dim c As Variant
For i = 1 To Len(czi)
    c = Asc(Mid(czi, i, 1)) ' de "A" à  "D" et de "a" à  "d" on change pour "w" à "z"
    If c > 64 And c < 69 Or c > 96 And c < 101 Then c = c + 26
    decod = decod & Chr(c - 4)
Next i
End Function
0
Bonsoir
Je vous remercie vivement. Tout marche nikel. Vous m'avez été d'une grande aide. Merci
Cordialement
Benoît
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
17 déc. 2007 à 22:22
bonjour

Très heureux de t'avoir aidé et à bientôt peut-être...
0