Besoin d'aide pour VBA

bonbon -  
 bonbon -
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,
Configuration: Windows XP
Firefox 3.0.8

3 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    0
    1. bonbon
       
      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
  2. tarek_dotzero Messages postés 834 Statut Membre 122
     
    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
    1. bonbon
       
      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
      1. Polux31 Messages postés 7219 Statut Membre 1 204 > bonbon
         
        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
      2. bonbon > Polux31 Messages postés 7219 Statut Membre
         
        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
      3. Polux31 Messages postés 7219 Statut Membre 1 204 > bonbon
         
        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
      4. bonbon > Polux31 Messages postés 7219 Statut Membre
         
        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
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Je serai également heureux de voir le code utilisé. Ca doit tenir en une vingtaine de lignes dans les 2 cas.

    ;o)
    0