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
| Option Explicit
Dim N,Titre,fso,ws,LogFile,resultat
Titre = "Calcul de la somme des chiffres d'un nombre"
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = CreateObject("Wscript.Shell")
'Nom du fichier qui va stocker le résultat
LogFile = Left(Wscript.ScriptFullName,InstrRev(Wscript.ScriptFullName, ".")) & "txt"
if fso.FileExists(LogFile) Then 'Si le fichier LogFile existe
fso.DeleteFile LogFile 'alors on le supprime
end If
'La boîte de saisie de la chaîne de caractères
N = inputbox("Entrez un entier numérique "&vbCrLf&_
"pour calculer la somme de ses chiffres",Titre,"78231")
N = Trim(N) 'Pour enlever les espaces de gauche et à droite
If N = "" Or Not IsNumeric(N) Then
MsgBox "Il faut choisir un entier numerique",48,Titre
WScript.Quit
End If
MsgBox "La somme des chiffres du nombre "& DblQuote(N) & " = " & DblQuote(Somme(N)),64,Titre
WriteLog String(70,"*"),LogFile
WriteLog Space(7) & Titre,LogFile
WriteLog String(70,"*"),LogFile
WriteLog "La somme des chiffres du nombre "& DblQuote(N) & " = " & DblQuote(Somme(N)),LogFile
ws.Run LogFile,1,False
'*****************************************************************
Function Somme(N)
Dim LongeurChaine,i,j,Str
LongeurChaine = Len(N)
Somme = 0
If LongeurChaine = 1 Then
Somme = N
End If
'Boucle For : on parcourt et on extrait caractère par caractère
For i = 1 To LongeurChaine
Str = Mid(N,i,1)
'On somme les nombres extraits tant que sa taille est > 1
Do While LongeurChaine > 1
Somme = Somme + Str
If Len(Somme) = 2 Then
'Appel récursive de notre fonction Somme
Somme = Somme(Somme)
End If
Exit Do
Loop
Next
End Function
'*****************************************************************
'Fonction pour écrire le résultat dans un fichier texte
Sub WriteLog(strText,LogFile)
Dim fs,ts
Const ForAppending = 8
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile(LogFile,ForAppending,True)
ts.WriteLine strText
ts.Close
End Sub
'*****************************************************************
'Fonction pour ajouter des guillemets dans une variable
Function DblQuote(Str)
DblQuote = Chr(34) & Str & Chr(34)
End Function
'***************************************************************** |
Partager