[Resolu] slt svp aide moi

ahcene

XLDnaute Nouveau
HTML:
bnjr les amis svp aide moi 
je veux  faire en vba une fonction qui calcule le nbr de répétition des lettres dans une phrase 
par exemple dans la phrase "vba exel"
le resulta est : v=1
                      b=1
                      a=1
                      e=2
                      x=1
                      l=1
svp aide moi 
merci d avance
 
Dernière édition:

R@chid

XLDnaute Barbatruc
Re : slt svp aide moi

Bonjour Habitude,
Pour moi j'avoue que j'ai rien compris,
@ 13:29 j'ai lui demande de nous fournir un fichier exemple avec resultats souhaites...
@ 14:19 il a changer son message vers : PHP
??????
 

job75

XLDnaute Barbatruc
Re : slt svp aide moi

Bonjour ahcene, salut Rachid, Habitude,

Une solution avec cette fonction macro :

Code:
Function ANALYSE$(txt$, ordre%)
'utilise UCase pour que la casse ne soit pas prise en compte
Dim d As Object, i%, c$, n%
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To Len(txt)
  c = Mid(txt, i, 1)
  If c <> " " And Not d.Exists(UCase(c)) Then
    d(UCase(c)) = UCase(c)
    If d.Count = ordre Then Exit For
  End If
Next
If d.Count < ordre Then Exit Function
For i = 1 To Len(txt)
  If UCase(Mid(txt, i, 1)) = UCase(c) Then n = n + 1
Next
ANALYSE = c & " = " & n
End Function
La restitution se fait sur une même ligne.

Formule en B2, à tirer à droite, puis vers le bas :

Code:
=ANALYSE($A2;COLONNES($B2:B2))

Nota : la fonction utilise UCase pour ne pas tenir compte de la casse.

S'il faut en tenir compte, supprimer les 5 UCase.

Fichier joint.

A+
 

Pièces jointes

  • Analyse texte(1).xls
    38 KB · Affichages: 47
Dernière édition:

ahcene

XLDnaute Nouveau
Re : slt svp aide moi

merci 'Rachid_0661' & 'job75' & 'Habitude'
tous vos reponse sont juste mais c pas ca que veu
il faut pas utiliser une feuille
la premier en choisie un nouveau module dans insertion "alt+f11"
puis en tape le code directement
en fait un msgbox pour demander a l utilisateur d entrer une phrase
et dans le resultat l affichage des lettre utiliser dans la phrase et le nbr de répétition
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : slt svp aide moi

Re ahcene,

A votre service.

Code:
Sub AnalyseTexte()
'utilise UCase pour que la casse ne soit pas prise en compte
Dim txt$, mes$, d As Object, i%, c$, j%, n%
txt = InputBox("Entrer le texte à analyser :", "Analyser")
If txt = "" Then Exit Sub
mes = "Il n'est pas tenu compte de la casse" & vbLf & vbLf & _
  "Texte analysé : " & txt & vbLf
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To Len(txt)
  c = Mid(txt, i, 1)
  If c <> " " And Not d.Exists(UCase(c)) Then
    d(UCase(c)) = UCase(c)
    n = 0
    For j = i To Len(txt)
      If UCase(Mid(txt, j, 1)) = UCase(c) Then n = n + 1
    Next
    mes = mes & vbLf & c & " = " & n
  End If
Next
MsgBox mes, , "Analyse"
End Sub
Fichier (2).

Edit : remplacé For j = 1 To Len(txt) par For j = i To Len(txt)

Bonne nuit
 

Pièces jointes

  • Analyse texte(2).xls
    44 KB · Affichages: 33
Dernière édition:

ahcene

XLDnaute Nouveau
Re : slt svp aide moi

Re ahcene,

A votre service.

Code:
Sub AnalyseTexte()
'utilise UCase pour que la casse ne soit pas prise en compte
Dim txt$, mes$, d As Object, i%, c$, j%, n%
txt = InputBox("Entrer le texte à analyser :", "Analyser")
If txt = "" Then Exit Sub
mes = "Il n'est pas tenu compte de la casse" & vbLf & vbLf & _
  "Texte analysé : " & txt & vbLf
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To Len(txt)
  c = Mid(txt, i, 1)
  If c <> " " And Not d.Exists(UCase(c)) Then
    d(UCase(c)) = UCase(c)
    n = 0
    For j = 1 To Len(txt)
      If UCase(Mid(txt, j, 1)) = UCase(c) Then n = n + 1
    Next
    mes = mes & vbLf & c & " = " & n
  End If
Next
MsgBox mes, , "Analyse"
End Sub
Fichier (2).

Bonne nuit
merci merci du font du cœur chere ami
bn8 a toi aussi
 

job75

XLDnaute Barbatruc
Re : slt svp aide moi

Bonjour ahcene, le forum,

Vous avez effacé le texte original du post #1 !!!

Soyez gentil remettez-le pour que des visiteurs comprennent le problème :)

En attendant voici une autre solution avec un UserForm :

Code:
Private Sub TextBox1_Change()
'utilise UCase pour que la casse ne soit pas prise en compte
Dim txt$, d As Object, i%, c$, j%, n%
txt = TextBox1
With ListBox1
  .Clear
  If txt <> "" Then .AddItem 'encadre la liste
  Set d = CreateObject("Scripting.Dictionary")
  For i = 1 To Len(txt)
    c = Mid(txt, i, 1)
    If c <> " " And Not d.Exists(UCase(c)) Then
      d(UCase(c)) = UCase(c)
      n = 0
      For j = i To Len(txt)
        If UCase(Mid(txt, j, 1)) = UCase(c) Then n = n + 1
      Next
      .AddItem c & " = " & n
    End If
  Next
  If txt <> "" Then .AddItem 'encadre la liste
  .Height = Application.Max(18, (.Font.Size + 2) * .ListCount + 2)
  DoEvents
  Me.Height = .Height + 105
End With
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Analyse texte(3).xls
    48 KB · Affichages: 40

Discussions similaires

Réponses
7
Affichages
312

Statistiques des forums

Discussions
312 111
Messages
2 085 400
Membres
102 883
dernier inscrit
jameseyz