Calcul d'occurrences en VB6

Résolu/Fermé
Salouli Messages postés 17 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 2 mai 2015 - Modifié par Whismeril le 30/04/2015 à 17:57
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 1 mai 2015 à 17:45
Bonjour ,

J'ai un petit programme en vb6 qui contient un bouton "Open" et une textbox .
lorsque je clique sur le bouton le contenu d'un fichier texte s'affiche dans la textbox.Alors par la suite j'ai voulu calculer le nombre de fois que la lettre "a" ou "A" apparaît dans mon texte et ça a fonctionné.Maintenant j'ai voulu faire la même chose avec tous les caractères possibles , c'est à dire que j'aurai un msgbox qui me donne combien de fois chaque caractère s'est répété dans le texte .Puisque je suis encore débutante en vb6 j'ai pas su comment le faire tt ce que je sais c'est qu'il y a 255 caractères en général .Merci à vous ! Voilà mon code :


Option Explicit
Dim chaine As String 'ma chaine de caractères 
Dim i As Integer
Dim nombredea As Integer




Private Sub command1_Click()


On Error GoTo erreur

Dim MyFile As String

MyFile = App.Path & "\hello.txt"  'le fichier texte 


Open MyFile For Input As #1   


     Line Input #1, chaine
     
Close #1     

    Text1.Text = chaine
    
 
    For i = 1 To Len(chaine)
    
        
        If Mid(chaine, i, 1) = "a" Or Mid(chaine, i, 1) = "A" Then
         
         nombredea = nombredea + 1
        
         End If
        
         
   Next i
    
MsgBox "le fichier contient la lettre A " & nombredea & " fois ", vbInformation, vbOKOnly

Exit Sub

erreur:

MsgBox "Fichier introuvable", vbExclamation

End Sub


EDIT: Ajout de la coloration syntaxique.
A voir également:

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 30/04/2015 à 19:49
Bonjour,

adaptez le debut pour avoir la chaine de votre fichier
ajoutez dans projet, references: microsoft scripting runtime

Private Sub Command1_Click()
    Dim Chaine, Nblettre As Long, lettre As String
    Dim obn As Object, cle As String, cles, k As Long, n As Long
    
    Chaine = "aAbBcC"
    Chaine = UCase(Chaine)
    Set obn = CreateObject("scripting.dictionary")
    For x = 1 To Len(Chaine)
        cle = Mid(Chaine, x, 1)
        If Not obn.Exists(cle) Then obn.Add cle, 1
    Next x

    cles = obn.keys
    n = obn.Count
    For k = 0 To n - 1
        lettre = cles(k)
        Nblettre = 0
        For x = 1 To Len(Chaine)
            If Mid(Chaine, x, 1) = lettre Then
                Nblettre = Nblettre + 1
            End If
        Next x
        MsgBox "le fichier contient la lettre " & lettre & " " & Nblettre & " fois ", vbInformation, vbOKOnly
    Next k
End Sub


si vraiment beaucoup de caracteres (+500) dans chaine, il y a moyen de ne faire que deux boucles de comptage au lieu de trois

Private Sub Command2_Click()
    Set mondico = CreateObject("Scripting.Dictionary")
    Chaine = "aAbBcC"
    Chaine = UCase(Chaine)
    For x = 1 To Len(Chaine)
        cle = Mid(Chaine, x, 1)
        mondico(cle) = mondico(cle) + 1
    Next x
    TLettre = mondico.Keys
    TNblettre = mondico.Items
    For x = 0 To mondico.Count - 1
        MsgBox "le fichier contient la lettre " & TLettre(x) & " " & TNblettre(x) & " fois ", vbInformation, vbOKOnly
    Next x
End Sub
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
30 avril 2015 à 23:34
Bonsoir Salouli, fnuméros, bonsoir le forum,

Peut-être comme ça :

Option Explicit

Private Sub command1_Click()
Dim chaine As String 'ma chaine de caractères
Dim I As Integer
Dim J As Integer
Dim TC(0 To 255) 'tableau des caractères

On Error GoTo erreur
Dim MyFile As String
MyFile = App.Path & "\hello.txt"  'le fichier texte
Open MyFile For Input As #1
     Line Input #1, chaine
Close #1
    Text1.Text = chaine
    For i = 1 To Len(chaine)
        For J = 0 To 255
            If Mid(chaine, i, 1) = Chr(J) Then
                TC(J) = TC(J) + 1
                Exit For
            End If
        Next J
    Next i
    
For J = 0 To 255
    Cells(J + 1, 8).Value = Chr(J) 'renvoie dans la colonne H le caractère (à adapter)
    Cells(J + 1, 9).Value = TC(J) 'renvoie dans la colonne G le nombre de caractères (à adapter)
Next J
'
'
'        If Mid(chaine, i, 1) = "a" Or Mid(chaine, i, 1) = "A" Then
'         nombredea = nombredea + 1
'         End If
'   Next i
'MsgBox "le fichier contient la lettre A " & nombredea & " fois ", vbInformation, vbOKOnly
Exit Sub
erreur:
MsgBox "Fichier introuvable", vbExclamation
End Sub
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
1 mai 2015 à 08:12
Bonjour,
Pas mal
C'est duVB6.0 pas du VBA excel
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
1 mai 2015 à 12:12
Bonjour le fil, bonjour le forum,

J'avoue que je ne ne sais pas ce qu'est le VB6 mais le code proposé ressemblait tellement à du VBA que je me suis lancé...
Quelle est la différence ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022
1 mai 2015 à 14:44
Re,
VB6.0 "ancetre" de VB.Net
Assez semblable au niveau des instructions sauf ce type purement excel:Cells(J + 1, 8).Value, pour les controls pas mal differences en proprietes avec des + et des - par rapport a excel , creation d'executable.

exemple des differences:
Private Sub command1_Click()
significatif du VB6.0

excel:
Sub Bouton1_Cliquer()

Private Sub CommandButton1_Click()


VB.Net
Private Sub Button1_Click_2
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
Modifié par ThauTheme le 1/05/2015 à 17:45
Bonjour le fil, bonjour le forum,

Merci Fnuméros pour ces précisions !
0
Salouli Messages postés 17 Date d'inscription mardi 26 mars 2013 Statut Membre Dernière intervention 2 mai 2015
1 mai 2015 à 16:48
Rebonjour !

Merci beaucoup les amis :)) vos réponses me sont tellement riches et utiles .
0