Besoin d'aide pour VBA

Fermé
bonbon - 18 avril 2009 à 12:05
 bonbon - 19 avril 2009 à 15:24
Bonjour,

J'aurais besoin d'aide pour écrire 2 programmes en VBA à l'aide de tableaux, car j'ai l'impression que je n'ai pas les connaissances et les outils nécessaires pour y résoudre.
1. Je dois écrire un programme vérifiant si une phrase est un tautogramme càd si tous les mots de la phrase commencent par la même lettre.
2. Je dois écrire un programme vérifiant si un mot est un palindrome càd qui peut aussi bien se lire à l'endroit qu'à l'envers.

Merci de votre aide,

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 avril 2009 à 13:45
0
Bonjour,

Le problème, c'est que j'ai écrit mon programme en entier, mais il est faux parce j'ai toujours le message " La phrase n'est pas un tautogramme " alors que j'ai l'impression de tout bien faire correctement !!! Comment je pourrais résoudre ce problème en langage VBA car cela me semble bien compliquer !!!!!!!!!

Merci par avance de votre aide,
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
18 avril 2009 à 14:43
Deux méthodes pour corriger ce genre de problèmes:

1. Le debugage en affichant régulièrement vos variables.
2. Mettez votre code 's'il est petit), et nous allons essayer de vous aider.
0
Voilà mon programme !!!!!!!!!!!!!!! J'utilise Visual Basic Editor dans Excel .


Const taille_max = 500
Dim T(taille_max) As String
Dim i As Integer, taille_logique As Integer
Dim j As Integer


Do
taille_logique = InputBox(" Nombre de mots dans la phrase? ")
Loop Until taille_logique <= taille_max
j = 0

For i = 1 To taille_logique
T(i) = InputBox(" Entrez le mot " & i)
j = j + 1
Do
T(1) = X
T(2) = Y
T(3) = Z
j = j + 1
Loop Until j = taille_logique

If j = 1 Then
T(1) = T(2) = T(3) = X
j = j + 1
Else
j = 0
End If
Next i

If j = 1 Then
MsgBox (" La phrase est un tautogramme ")
Else
MsgBox (" La phrase n' est pas un tautogramme ")
End If


Merci par avance,
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > bonbon
18 avril 2009 à 19:18
Première constatation, sans avoir analysé, tes variables X, Y et Z ne sont pas déclarées.

Deuxième constatation : "T(1) = T(2) = T(3) = X", ça ne marchera pas comme ça ... !!!

Troisième constatation : As-tu essayer en entrant 1 comme nombre de mots dans la phrase ? je pense que tu dois faire une jolie boucle sans fin avec "Loop Until j = taille_logique" puisque J est toujours supérieur à 1 en entrant dans la boucle. Ô_o

Ensuite, des questions :
1) pourquoi déclarer une taille max de mots à saisir ?
2) que représente T ? Pourquoi faire T(i) = InputBox() et ensuite T(1) = X, T(2) = Y et T(3) = Z ? Si j'entre 10 mots dans ma phrase, tu traites comment les 7 autres mots ? ^^

As tu écrit un algorithme en pseudo code avant de te lancer dans ton programme ? Il faut d'abord le faire avant de coder ...
0
bonbon > Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016
18 avril 2009 à 19:45
Bonsoir,

J'ai bien sûr écrit mon algorithme avant de me lancer dans l'écriture du programme, mais mon plus gros problème, c'est de savoir comment je peux déclarer que toute une phrase commence par la même lettre.
Merci de votre aide,
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > bonbon
18 avril 2009 à 20:57
Tu ne dois pas déclarer que tous les mots commencent par la même lettre ... l'exercice consiste à chercher justement si toutes les initiales des mots d'une phrase sont identiques ...

Peux tu nous faire voir ton algo ?
0
bonbon > Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016
19 avril 2009 à 15:24
Bonjour,

J'ai réussi à faire fonctionner mon programme, mais la procédure ne me semble pas très facile d'utilisation; Comment pourrais-le le rendre plus simple ????

Const taille_max = 500
Dim T(taille_max) As String
Dim i As Integer, taille_logique As Integer, nb_lettre_mots As Integer, nb_lettre_phrase As Integer
Dim j As Integer, k As Integer
Dim mot As String
Dim phrase As String
Dim première_lettre_mot As String
Dim première_lettre_phrase As String

Do
taille_logique = InputBox("Nombre de mots de la phrase")
Loop Until taille_logique <= taille_max

nb_lettre_phrase = 0
k = 1
première_lettre_phrase = InputBox("Par quelle lettre commence la phrase?")

For i = 1 To taille_logique
nb_lettre_mots = InputBox("Nombre de lettres du mot " & i)
nb_lettre_phrase = nb_lettre_phrase + nb_lettre_mots

For j = 1 To nb_lettre_mots
T(j) = InputBox("Entrez la lettre " & j)
première_lettre_mot = T(1)
Next j

If première_lettre_mot = première_lettre_phrase Then
k = k + 1
Else
k = k
End If
Next i

If k = i Then
MsgBox ("La phrase est un tautogramme")
Else
MsgBox ("La phrase n'est pas un tautogramme")
End If
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
18 avril 2009 à 15:48
Je serai également heureux de voir le code utilisé. Ca doit tenir en une vingtaine de lignes dans les 2 cas.

;o)
0