Index du Forum


 
 Index du ForumFAQRechercherS’enregistrerConnexion

:: Word - VBA ::

 
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> Informatique -> Bureautique -> Traitement de texte
Sujet précédent :: Sujet suivant  
Auteur Message
Chat
Adm

Hors ligne

Inscrit le: 05 Fév 2008
Messages: 525
Localisation: France
Masculin Balance (23sep-22oct)
Point(s): 63

MessagePosté le: Ven 17 Avr 2009, 10:56    Sujet du message: Word - VBA Répondre en citant

L'exemple suivant n'est pas fait exactement pour les débutant qui n'ont jamais appris à programmer sous Word. Mais il est nécessaire de suivre à la lettre les instructions avec des bonnes illustrations pour avoir une bonne motivation de quoi peut on exploiter notre Ms Office. J'ai pris un exemple sous Word 2007. Système est le fameux VBA, c'est à dire Visual Basic for Application, c'est le langage de programmation qu'on utilise sous Ms Office.

Notre but ici est de transcrire des chiffres en toute lettre, comme 15 --> QUINZE, ou 123 --->CENT VINGT TROIS, etc. Je vous previens le programme n'est pas parfait mais pour ceux qui voulaient avoir une perfection sur le programme, il suffit de poster des questions, je donnerai une réponse satisfaisante si je peux lol.

1. Ouvrez votre Word et suivez l'indication suivante :


2. Deuxième étape :


3. Troisième étape :


4. Quatrième étape :


5. Cinquième étape, il est nécessaire de redimensionner la taille de la zone de texte obtenue comme suit :


6. Sixième étape, cliquer sur la feuille blanche pour désactiver la sélection de la zone de texte, refaites les étapes 4 et 5 pour une autre zone de texte, puis poursuivez comme suit :


7. Septième étape : voici comment ressemble notre interface utilsateur


8. Huitième étape :


9. Neuviève étape, double cliquez sur le bouton ( commandbutton, ou commandbut si bouton non redimensionné) puis remplissez la zone vide comme suit :


10. Dixième étape :

 
11. Onzième étape, copiez le programme suivant dans la fenêtre qui s'ouvre :

 

Code:

Public Function NbVersTexte(ValNum As Double) As String
    Static Unites(0 To 9) As String
    Static Dixaines(0 To 9) As String
    Static LesDixaines(0 To 9) As String
    Static Milliers(0 To 4) As String
    
    Dim i As Integer
    Dim nPosition As Integer
    Dim ValNb As Integer
    Dim LesZeros As Integer
    Dim strResultat As String
    Dim strTemp As String
    Dim tmpBuff As String
    
    Unites(0) = "zero"
    Unites(1) = "un"
    Unites(2) = "deux"
    Unites(3) = "trois"
    Unites(4) = "quatre"
    Unites(5) = "cinq"
    Unites(6) = "six"
    Unites(7) = "sept"
    Unites(8) = "huit"
    Unites(9) = "neuf"

    Dixaines(0) = "dix"
    Dixaines(1) = "onze"
    Dixaines(2) = "douze"
    Dixaines(3) = "treize"
    Dixaines(4) = "quatorze"
    Dixaines(5) = "quinze"
    Dixaines(6) = "seize"
    Dixaines(7) = "dix-sept"
    Dixaines(8) = "dix-huit"
    Dixaines(9) = "dix-neuf"

    LesDixaines(0) = ""
    LesDixaines(1) = "dix"
    LesDixaines(2) = "vingt"
    LesDixaines(3) = "trente"
    LesDixaines(4) = "quarante"
    LesDixaines(5) = "cinquante"
    LesDixaines(6) = "soixante"
    LesDixaines(7) = "soixante-dix"
    LesDixaines(8) = "quatre-vingt"
    LesDixaines(9) = "quatre-vingt-dix"

    Milliers(0) = ""
    Milliers(1) = "mille"
    Milliers(2) = "million"
    Milliers(3) = "milliard"
    Milliers(4) = "mille milliard"

    On Error GoTo NbVersTexteError
    
    strTemp = CStr(Int(ValNum))
    
    For i = Len(strTemp) To 1 Step -1
        ValNb = Val(Mid$(strTemp, i, 1))
        nPosition = (Len(strTemp) - i) + 1
        Select Case (nPosition Mod 3)
            Case 1
                LesZeros = False
                If i = 1 Then
                    If ValNb > 1 Then
                        tmpBuff = Unites(ValNb) & " "
                    Else
                        tmpBuff = ""
                    End If
                ElseIf Mid$(strTemp, i - 1, 1) = "1" Then
                    tmpBuff = Dixaines(ValNb) & " "
                    i = i - 1
                ElseIf Mid$(strTemp, i - 1, 1) = "9" Then
                    tmpBuff = LesDixaines(8) & " " & Dixaines(ValNb) & " "
                    i = i - 1
                ElseIf Mid$(strTemp, i - 1, 1) = "7" Then
                    tmpBuff = LesDixaines(6) & " " & Dixaines(ValNb) & " "
                    i = i - 1
                ElseIf ValNb > 0 Then
                    tmpBuff = Unites(ValNb) & " "
                Else
                    LesZeros = True
                    If i > 1 Then
                        If Mid$(strTemp, i - 1, 1) <> "0" Then
                            LesZeros = False
                        End If
                    End If
                    If i > 2 Then
                        If Mid$(strTemp, i - 2, 1) <> "0" Then
                            LesZeros = False
                        End If
                    End If
                    tmpBuff = ""
                End If
                If LesZeros = False And nPosition > 1 Then
                    tmpBuff = tmpBuff & Milliers(nPosition / 3) & " "
                End If
                strResultat = tmpBuff & strResultat
            Case 2
                If ValNb > 0 Then
                            strResultat = LesDixaines(ValNb) & " " & strResultat
                End If
            Case 0
                If ValNb > 0 Then
                    If ValNb > 1 Then
                        strResultat = Unites(ValNb) & " cent " & strResultat
                    Else
                        strResultat = "cent " & strResultat
                    End If
                End If
        End Select
    Next i
    If Len(strResultat) > 0 Then
        strResultat = UCase$(Left$(strResultat, 1)) & Mid$(strResultat, 2)
    End If

EndNbVersTexte:
    NbVersTexte = strResultat
    Exit Function

NbVersTexteError:
    strResultat = "Une Erreur !"
    Resume EndNbVersTexte
End Function




 


et faites comme suit  :


12. Douzième étape :


13. Treisième étape mais pas la dernière lol :


Ce programme contien de bug car il n'est pas protégé. Un exemple si je tape des lettre sur la première zone de texte pour le chiffre et je clique sur commandbutton, ce sera une erreur fatale, donc il faut bien protégérer le programme pour éviter ça: c'est le programme défensif. C'est pareil dans la seconde zone de texte pour affichage, cette zonne ne devrait même pas être active, c'est-à-dire elle devrait être verouillée de saisie.

Ce petit programme est conçu pour transcrire un nombre qui ne dépasse pas 15 chiffres, sinon erreur, pour cela soit il faut vérouiller la première zone de texte à moins de 15 chiffres soit on améliore le programme pour transcrire un nombre plus de 15 chiffres. Je tiens à signaler que ce petit programme n'est pas la meilleure méthode de programmer un tel exemple, c'est un tuyau pour ceux qui seront interéssés ou bien de vouloir exploiter ce qu'on a or on ne savait même pas son existence.
Bonne programmation
Mort de Rire
_________________
Un chat aime une chatte.


Revenir en haut
Visiter le site web du posteur
Publicité






MessagePosté le: Ven 17 Avr 2009, 10:56    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
micky614
Mod

Hors ligne

Inscrit le: 13 Mar 2009
Messages: 394
Localisation: Madagascar
Féminin Scorpion (23oct-21nov)
Point(s): 6

MessagePosté le: Ven 1 Mai 2009, 11:59    Sujet du message: Chat Répondre en citant

J'ai essayé de suivre les étapes jusqu'à l'étape numéro 5 ça va mais après j'arrivais pas à suivre car je suis  une débutante! Est ce qu'on peut pas commencer par le plus simple pour continuer sur cette programmation! je sais pas si c'est faisable. Merci
_________________
Simple mais efficace dans tous les domaines


Revenir en haut
Skype
Chat
Adm

Hors ligne

Inscrit le: 05 Fév 2008
Messages: 525
Localisation: France
Masculin Balance (23sep-22oct)
Point(s): 63

MessagePosté le: Ven 1 Mai 2009, 12:24    Sujet du message: Word - VBA Répondre en citant

C'est très faisable d'apprendre par la méthode la plus simple. Justement la programmation nécessité un minimum de base de cours. Il y a plusieurs choses à apprendre pour faciliter un langage de programmation. C'est comme tout autre langage. Le français, l'anglais, le malagasy, l'espagnol ou l'allemand, etc... Si on ne connait pas l'alphabet, ça va être dur de communiquer avec.
Pour commencer, on va faire un programme qui va simuler la somme de deux nombres entiers : 1 + 1 par exemple et on affiche le résultat (au prochain post mdr)
_________________
Un chat aime une chatte.


Revenir en haut
Visiter le site web du posteur
Chat
Adm

Hors ligne

Inscrit le: 05 Fév 2008
Messages: 525
Localisation: France
Masculin Balance (23sep-22oct)
Point(s): 63

MessagePosté le: Sam 2 Mai 2009, 21:26    Sujet du message: Word - VBA Répondre en citant

Voici un exemple plus simple exemple d'addition de deux chiffres entiers (ce n'est pas encore la base de la programmation mais déjà un aperçu). On va recommencer même par la manipulation des fenêtres.

Si l'option développeur n'est pas encore affichée sur la barre de menu, suivez l'instruction suivante :










On aura une zone de texte, faites copier et cliquer à droite de cette dernière puis écrire "+", faites coller (clic droit puis coller). Répétez l'étape jusqu'à l'obtention de la figure suivante :









Double cliquez sur le bouton Calculer, remplissez la zone vide comme suit :


Explication :

Private Sub CommandButton1_Click()
  Ici les programmes à exécuter
End Sub

Cette zone signifie que à chaque fois qu'on clique sur le bouton Calculer, le programme écrit à l'intérieur de celui-ci sera exécuté. Donc notre programme est de faire une somme de deux nombres entiers qui sont contenus dans chaque zone de texte.

La première zone de texte contient le premier chiffre. Le chiffre tapé sera contenu dans Textbox1 (c'est la première zone de texte). Le deuxième chiffre sera dans TextBox2 (c'est la deuxième zone de texte). Oon fait la somme de ces deux nombres d'où le programme d'écrire : TextBox1 + TextBox2.
Remarque : L'instruction Cint devant TextBox1 et TextBox2 permet de convertir le contenu des zones de texte en vrai nombre car celui-ci est considéré comme une chaine de caractère (lettre). Si on enlève l'instruction Cint, voici ce qu'on a comme résulta de 1+1 = 11 ou 1 + 2 =12. C'est à dire on n'a pas fait la somme dite arithmétique mais la concaténation. Donc l'instruction Cint  permet de convertir le contenu d'une zone de texte en nombre entier.





En réalité, le résultat du calcul sera affecté dans la troisième zone de texte d'où le nom dans le programme TextBox3. Donc le programme est devenu : TextBox3 = Cint (TextBox1) + Cint (TextBox2). Et à chaque fois qu'on clique sur le bouton Calculer, ce programme sera exécuté. D'où le programme final :

Private Sub CommandButton1_Click()
  TextBox3 = Cint (TextBox1) + Cint (TextBox2)
End Sub

NB : le programma n'est pas parfait, c'est à dire si l'utilisateur fait une erreur, le programme fait une erreur aussi. C'est le fameux bug. Un exemple, si l'utilisateur tape une lettre, le programme bug. Dans ce cas il faut améliorer le programme pour éviter ça, en plus les nombres avec virgule et ainsi de suite.
_________________
Un chat aime une chatte.


Revenir en haut
Visiter le site web du posteur
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 15:46    Sujet du message: Word - VBA

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> Informatique -> Bureautique -> Traitement de texte Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Texno x0.3 © theme by Larme D'Ange 2006
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com