VBA : Esope reste ici et se repose



Poursuivons notre tour d'horizon des classiques incontournables de l'algorithmie. Un moment décisif dans l'étude est celui ou l'on aborde la question des tableaux, entrainant automatiquement des questions de typage, dimensionnement, tri, et autres interrogations...

Il vous sera alors impossible d'échapper au probléme dit du "palindrome", comme vous le savez, il s'agit d'une expression lisible indifféremment de gauche à droite ou de  droite à gauche, conformément au titre de cet article.

Le code suivant vérifiera si le contenu de la cellule A1 contient  ou non un "palindrome", mais il ne sera pas utile de manipuler des tableaux de variables puisqu'il existe une fonction VBA nommée StrReverse() qui inverse automatiquement le contenu d'une chaîne de caractères en langage VBA.


Sub palindrome()
Dim chaine As String
Dim chaine2 As String
chaine = Trim(Application.Substitute(Range("a1").Value, " ", ""))
'==> Trim() La chaine est nettoyé des espaces placés éventuellement devant ou derriére l'expression
'==> application.substitute()
'Les espaces entre les mots sont supprimés quand vous ignorez une fonction VBA, utilisez
'la fonction excel qui devient alors une méthode de l'objet application

chaine2 = StrReverse(chaine)
'il ne reste plus alors que la comparaison
If chaine = chaine2 Then
    MsgBox "La chaine contenu en a1" _
    & Chr(10) & "est un palindrome" _
    , vbOKOnly + vbCritical, "palindrome"
Else
    MsgBox "La chaine contenu en a1" _
    & Chr(10) & "n'est pas un palindrome" _
    , vbOKOnly + vbCritical, "palindrome"
End If
End Sub

A la semaine prochaine...




0 commentaires:

Enregistrer un commentaire

top