IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Un module dictée en francais pour vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut Un module dictée en francais pour vba
    Bonjour a tous
    il y a quelque temps hackoofr avait fait un petit hta utilisant le Google speech(voix Google )
    aujourd'hui dans une autre discutions il en a sorti un autre en vbs plus performant
    je n'en suis pas l'auteur mais je vous le livre car il a le merite de parfaitement fonctionner avec une intelligibilité plus que raisonnable
    e
    donc en vba ca donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Option Explicit
     
    Function dictée(texte)
    Dim sTxt, URLFR
    'sTxt =""
    URLFR = "http://translate.google.com/translate_tts?ie=UTF-8&tl=fr&q=" & texte
    If OnLine("smtp.gmail.com") = True Then
       Call Kill("wmplayer.exe")
       Call WmPlaySound(URLFR)
       Pause (10)
       Call Kill("wmplayer.exe")
    End If
    End Function
    '**********************************************************************************************
    Function OnLine(strHost)
    Dim objPing, z, objRetStatus, PingStatus
        Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & strHost & "'")
        z = 0
        Do
            z = z + 1
            For Each objRetStatus In objPing
                If IsNull(objRetStatus.StatusCode) Or objRetStatus.StatusCode <> 0 Then
                    PingStatus = False
                Else
                    PingStatus = True
                End If
        Next
            Call Pause(1)
            If z = 4 Then Exit Do
        Loop Until PingStatus = True
        If PingStatus = True Then
            OnLine = True
        Else
            OnLine = False
        End If
    End Function
    '*********************************************************************************************
    'Fonction pour ajouter les doubles quotes dans une variable
    Function DblQuote(Str)
       DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '**********************************************************************************************
       Sub WmPlaySound(MySound)
          Dim WshShell
          Set WshShell = CreateObject("WScript.Shell")
          WshShell.Run "wmplayer " & DblQuote(MySound) & "", 0, False
          Set WshShell = Nothing
       End Sub
    '**********************************************************************************************
    Sub Kill(Process)
          Dim Ws, Command, Execution
          Set Ws = CreateObject("WScript.Shell")
          Command = "cmd /c Taskkill /F /IM ""&Process&"""
          Execution = Ws.Run(Command, 0, True)
       End Sub
    '**********************************************************************************************
       Sub Pause(NSeconds)
         ' Wscript.Sleep (NSeconds * 1000)
       End Sub
    '**********************************************************************************************
    et pour s'en servir il n'y a qu'a faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub test()
    dictée "bonjour tout le monde ,comment sa va aujourd'hui" & vbCrLf & "je trouve que nous avons un beau soleil radieux "
    End Sub
    maintenant si on doit comparer avec le speech de l'application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub applicationsSpeech()
      Application.Speech.Speak "bonjour tout le monde ,comment sa va aujourd'hui" & vbCrLf & "je trouve que nous avons un beau soleil radieux "
     ' LE RESULTAT PARLE DE LUI MEME SANS COMMENTAIRE 
    End Sub
    sachant qu'avec seven il faut payer pour avoir une voix en Français

    vous constaterez que le résultat est comment dire heu.....

    je le répète je ne suis pas l'auteur de se script je l'ai juste remanier pour vba

    mais j'ai pensé qu'il avait néanmoins ca place dans les contributions vba

    je remercie encore hackoofr pour ces trouvailles toujours aussi spectaculaires les une que les autres

    BIEN SUR POUR QU'IL FONCTIONNE IL FAUT ETRE CONNECTE!!!!!!



    Voila bonne dictée
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut Wawww
    Impressionnant.

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pas mal, assez surprenant.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Sympa Patrick !

    Citation Envoyé par patricktoulon Voir le message
    maintenant si on doit comparer avec le speech de l'application
    En changeant dans le code ligne n°7 fr par en ! …

    Le Speech de mon côté est refusé sur une version 2003 …

    Là non seulement on dispose d'une voix française correcte et il est facile de changer de pays !

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Allez, à moi de t'embêter Patrick !

    Suite à un plantage d'une application, je me suis rendu compte que l'application WMPlayer était toujours résidente.

    Effectivement car, pour que ta fonction Kill fonctionne (attention ce mot-clef existe déjà en VBA !),

    il faudrait corriger la ligne n°54 ainsi : Command = "cmd /c Taskkill /F /IM """ & Process & """"

    Erreur repérable car normalement sans espace après l'opérateur de concaténation & VBA met la ligne en erreur (rouge) …

    Après cette correction, l'application est bien déchargée mais il n'y a plus de voix !
    Normal car la ligne n°59 de la pause a été mise en commentaire …
    Mais en la réactivant, cette ligne déclenche une erreur d'exécution '424' : Objet requis …

    Je te laisse corriger ta sympathique contribution !

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour a tous
    allez VBA pour VBA on reprend ca
    marc voila une version qui pourra peut être t'apporter satisfaction
    j'ai virer killprocess tel qu'elle l'était j'ai utilisé la recherche de processus en vba et j'ai refait une macro complète et fonctionnelle

    j'ai remis aussi la pause
    j'ai ajouté un argument a la fonction principale "le language"
    maintenant on le déclare l'ors de l'appel a la fonction comme ca plus besoins de toucher au code
    voila du pure VBA
    qu'Est ce qu'il est exigeant ce marc alors
    Vous remarquerez aussi des virgule qui n'ont pas leur place dans le texte ,en fait la virgule met un léger temps de silence en plus ce qui permet de rendre plus intelligible la dictée et d'avoir une ponctuation phonique plus ou moins correcte

    Allez test en Français

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub test_en_francais()
    dictée "bonjour tout le monde ,comment sa va aujourd'hui" & vbCrLf & "je trouve que nous avons un beau soleil radieux ", "fr"
    End Sub
    test en englais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub test_en_englais()
    dictée "hello every body ,,are you find today" & vbCrLf & "  ,, we ave a beautiful sun today ,,,,,,are you OK", "en"
    End Sub
    et maintenant le module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    Function dictée(texte, langue)
    Dim sTxt, URLFR
    'sTxt =""
    URLFR = "http://translate.google.com/translate_tts?ie=UTF-8&tl=" & langue & "&q=" & texte
    If OnLine("smtp.gmail.com") = True Then
       Wmplayer_stop
       Call WmPlaySound(URLFR)
       Pause (10)
      Wmplayer_stop
    End If
    End Function
    '**********************************************************************************************
    Function OnLine(strHost)
    Dim objPing, z, objRetStatus, PingStatus
        Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").execquery("select * from Win32_PingStatus where address = '" & strHost & "'")
        z = 0
        Do
            z = z + 1
            For Each objRetStatus In objPing
                If IsNull(objRetStatus.StatusCode) Or objRetStatus.StatusCode <> 0 Then
                    PingStatus = False
                Else
                    PingStatus = True
                End If
        Next
            Call Pause(1)
            If z = 4 Then Exit Do
        Loop Until PingStatus = True
        If PingStatus = True Then
            OnLine = True
        Else
            OnLine = False
        End If
    End Function
    '*********************************************************************************************
    'Fonction pour ajouter les doubles quotes dans une variable
    Function DblQuote(Str)
       DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '**********************************************************************************************
       Sub WmPlaySound(MySound)
          Dim WshShell
          Set WshShell = CreateObject("WScript.Shell")
          WshShell.Run "wmplayer " & DblQuote(MySound) & "", 0, False
          Set WshShell = Nothing
       End Sub
    '**********************************************************************************************
    Sub Wmplayer_stop()
        Dim service As Object
        Dim sQuery As String
        Dim processus
        Set service = GetObject("winmgmts:root\cimv2")
        sQuery = "select * from win32_process where name='" & "wmplayer.exe" & "'"
        For Each processus In service.execquery(sQuery)
            processus.Terminate
        Next
        Set service = Nothing
    End Sub
    '**********************************************************************************************
       Sub Pause(NSeconds)
        Application.Wait (Now + TimeValue("0:00:0" & NSeconds))
       End Sub
    '**********************************************************************************************
    et tout ca sans les apis! ca c'est kool


    Un dernier petit essai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub test_en_francais()
    dictée "Marc n'est jamais content " & vbCrLf & "il en veut toujours plus " & "j'espère que celle la va lui convenir ", "fr"
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Là je n'ai plus le temps mais apparemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Reponse()
        dictée "Va tutto bene !", "it"
    End Sub

    Enfin si pour chipoter : « English » c'est bien avec un E mais « Anglais » c'est avec un A et non pas un E !

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. inserer un module prévisualisation comme fait pour exalead ?
    Par shenril dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 16/08/2008, 12h44
  2. dll C++ pour VBA : erreur 49 et 453
    Par EL0807 dans le forum C++
    Réponses: 2
    Dernier message: 18/03/2006, 23h01
  3. Module ou script existant pour parser du code C++
    Par Caine dans le forum Modules
    Réponses: 4
    Dernier message: 16/02/2006, 10h42
  4. [Plugin]plugin francais pour eclipse (debutant)
    Par ruppert62 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 04/05/2004, 18h46
  5. Réponses: 2
    Dernier message: 18/09/2003, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo