Le mathématicien Émile Fourrey a déjà posé le problème
suivant : Si l'on inscrit à la suite les uns des autres, à partir
de 1 et dans leur ordre naturel les nombres entiers, quel
sera le 552 715 ième chiffre de la liste ?
(12345678910111213141516...)
On peut résoudre ce problème sans programmation
mais j'ai voulu utiliser une macro qui me permettrait
de connaître le n ième chiffre de cette liste.
J'ai formaté A1 en texte et j'y entre le n ième chiffre
que je veux trouver.
Pour n = 552 715, ma macro prend 1 min 42 sec.
Peut-on la modifier pour la rendre plus rapide ?
Contient-elle des incongruités ?
Quelle peut bien être la valeur limite de n ?
Public Sub Fourrey()
Dim n As String
Dim i As Long
Dim suite As String
Dim L As Long
t0 = Timer
n = Range("A1").Value
Do Until L >= CLng(n)
i = i + 1
suite = suite & i
L = Len(suite)
Loop
MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00") & "
min"
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LSteph
Bonjour Serge,
Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Dim n As Long Dim i As Long Dim x As Long Dim t0 As Double t0 = Timer n = CLng([a1]) Application.ScreenUpdating = False x = 0 Do While x < n i = i + 1 x = x + Len(CStr(i))
Loop MsgBox "x=" & x _ & vbLf & "i=" & i _ & vbLf & n & vbLf _ & Mid(CStr(i), Len(CStr(i)) - (x - n), 1) _ & vbLf & Format((Timer - t0) / 60, "0.00") & " Min " End Sub
'lSteph
On 2 sep, 18:33, "garnote" wrote:
Bonjour, Bonjour,
Le mathématicien Émile Fourrey a déjà posé le problème suivant : Si l'on inscrit à la suite les uns des autres, à partir de 1 et dans leur ordre naturel les nombres entiers, quel sera le 552 715 ième chiffre de la liste ? (12345678910111213141516...) On peut résoudre ce problème sans programmation mais j'ai voulu utiliser une macro qui me permettrait de connaître le n ième chiffre de cette liste. J'ai formaté A1 en texte et j'y entre le n ième chiffre que je veux trouver. Pour n = 552 715, ma macro prend 1 min 42 sec. Peut-on la modifier pour la rendre plus rapide ? Contient-elle des incongruités ? Quelle peut bien être la valeur limite de n ?
Public Sub Fourrey() Dim n As String Dim i As Long Dim suite As String Dim L As Long t0 = Timer n = Range("A1").Value Do Until L >= CLng(n) i = i + 1 suite = suite & i L = Len(suite) Loop MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00" ) & " min" End Sub
Serge
Bonjour Serge,
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Cancel = True
Dim n As Long
Dim i As Long
Dim x As Long
Dim t0 As Double
t0 = Timer
n = CLng([a1])
Application.ScreenUpdating = False
x = 0
Do While x < n
i = i + 1
x = x + Len(CStr(i))
Loop
MsgBox "x=" & x _
& vbLf & "i=" & i _
& vbLf & n & vbLf _
& Mid(CStr(i), Len(CStr(i)) - (x - n), 1) _
& vbLf & Format((Timer - t0) / 60, "0.00") & " Min "
End Sub
'lSteph
On 2 sep, 18:33, "garnote" <garno...@videotron.ca> wrote:
Bonjour, Bonjour,
Le mathématicien Émile Fourrey a déjà posé le problème
suivant : Si l'on inscrit à la suite les uns des autres, à partir
de 1 et dans leur ordre naturel les nombres entiers, quel
sera le 552 715 ième chiffre de la liste ?
(12345678910111213141516...)
On peut résoudre ce problème sans programmation
mais j'ai voulu utiliser une macro qui me permettrait
de connaître le n ième chiffre de cette liste.
J'ai formaté A1 en texte et j'y entre le n ième chiffre
que je veux trouver.
Pour n = 552 715, ma macro prend 1 min 42 sec.
Peut-on la modifier pour la rendre plus rapide ?
Contient-elle des incongruités ?
Quelle peut bien être la valeur limite de n ?
Public Sub Fourrey()
Dim n As String
Dim i As Long
Dim suite As String
Dim L As Long
t0 = Timer
n = Range("A1").Value
Do Until L >= CLng(n)
i = i + 1
suite = suite & i
L = Len(suite)
Loop
MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00" ) & "
min"
End Sub
Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Dim n As Long Dim i As Long Dim x As Long Dim t0 As Double t0 = Timer n = CLng([a1]) Application.ScreenUpdating = False x = 0 Do While x < n i = i + 1 x = x + Len(CStr(i))
Loop MsgBox "x=" & x _ & vbLf & "i=" & i _ & vbLf & n & vbLf _ & Mid(CStr(i), Len(CStr(i)) - (x - n), 1) _ & vbLf & Format((Timer - t0) / 60, "0.00") & " Min " End Sub
'lSteph
On 2 sep, 18:33, "garnote" wrote:
Bonjour, Bonjour,
Le mathématicien Émile Fourrey a déjà posé le problème suivant : Si l'on inscrit à la suite les uns des autres, à partir de 1 et dans leur ordre naturel les nombres entiers, quel sera le 552 715 ième chiffre de la liste ? (12345678910111213141516...) On peut résoudre ce problème sans programmation mais j'ai voulu utiliser une macro qui me permettrait de connaître le n ième chiffre de cette liste. J'ai formaté A1 en texte et j'y entre le n ième chiffre que je veux trouver. Pour n = 552 715, ma macro prend 1 min 42 sec. Peut-on la modifier pour la rendre plus rapide ? Contient-elle des incongruités ? Quelle peut bien être la valeur limite de n ?
Public Sub Fourrey() Dim n As String Dim i As Long Dim suite As String Dim L As Long t0 = Timer n = Range("A1").Value Do Until L >= CLng(n) i = i + 1 suite = suite & i L = Len(suite) Loop MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00" ) & " min" End Sub
Serge
garnote
Salut Stéphane,
De la dynamite ;-) Ingénieux et hyper rapide !
Merci bien, Serge
"LSteph" a écrit dans le message de news:
Bonjour Serge,
Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Dim n As Long Dim i As Long Dim x As Long Dim t0 As Double t0 = Timer n = CLng([a1]) Application.ScreenUpdating = False x = 0 Do While x < n i = i + 1 x = x + Len(CStr(i))
Loop MsgBox "x=" & x _ & vbLf & "i=" & i _ & vbLf & n & vbLf _ & Mid(CStr(i), Len(CStr(i)) - (x - n), 1) _ & vbLf & Format((Timer - t0) / 60, "0.00") & " Min " End Sub
'lSteph
On 2 sep, 18:33, "garnote" wrote:
Bonjour, Bonjour,
Le mathématicien Émile Fourrey a déjà posé le problème suivant : Si l'on inscrit à la suite les uns des autres, à partir de 1 et dans leur ordre naturel les nombres entiers, quel sera le 552 715 ième chiffre de la liste ? (12345678910111213141516...) On peut résoudre ce problème sans programmation mais j'ai voulu utiliser une macro qui me permettrait de connaître le n ième chiffre de cette liste. J'ai formaté A1 en texte et j'y entre le n ième chiffre que je veux trouver. Pour n = 552 715, ma macro prend 1 min 42 sec. Peut-on la modifier pour la rendre plus rapide ? Contient-elle des incongruités ? Quelle peut bien être la valeur limite de n ?
Public Sub Fourrey() Dim n As String Dim i As Long Dim suite As String Dim L As Long t0 = Timer n = Range("A1").Value Do Until L >= CLng(n) i = i + 1 suite = suite & i L = Len(suite) Loop MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00") & " min" End Sub
Serge
Salut Stéphane,
De la dynamite ;-)
Ingénieux et hyper rapide !
Merci bien,
Serge
"LSteph" <gmlsteph@gmail.com> a écrit dans le message de news:
ec44feee-c7fe-44b8-8f2d-060d4e4e6826@c37g2000yqi.googlegroups.com...
Bonjour Serge,
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Cancel = True
Dim n As Long
Dim i As Long
Dim x As Long
Dim t0 As Double
t0 = Timer
n = CLng([a1])
Application.ScreenUpdating = False
x = 0
Do While x < n
i = i + 1
x = x + Len(CStr(i))
Loop
MsgBox "x=" & x _
& vbLf & "i=" & i _
& vbLf & n & vbLf _
& Mid(CStr(i), Len(CStr(i)) - (x - n), 1) _
& vbLf & Format((Timer - t0) / 60, "0.00") & " Min "
End Sub
'lSteph
On 2 sep, 18:33, "garnote" <garno...@videotron.ca> wrote:
Bonjour, Bonjour,
Le mathématicien Émile Fourrey a déjà posé le problème
suivant : Si l'on inscrit à la suite les uns des autres, à partir
de 1 et dans leur ordre naturel les nombres entiers, quel
sera le 552 715 ième chiffre de la liste ?
(12345678910111213141516...)
On peut résoudre ce problème sans programmation
mais j'ai voulu utiliser une macro qui me permettrait
de connaître le n ième chiffre de cette liste.
J'ai formaté A1 en texte et j'y entre le n ième chiffre
que je veux trouver.
Pour n = 552 715, ma macro prend 1 min 42 sec.
Peut-on la modifier pour la rendre plus rapide ?
Contient-elle des incongruités ?
Quelle peut bien être la valeur limite de n ?
Public Sub Fourrey()
Dim n As String
Dim i As Long
Dim suite As String
Dim L As Long
t0 = Timer
n = Range("A1").Value
Do Until L >= CLng(n)
i = i + 1
suite = suite & i
L = Len(suite)
Loop
MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00") & "
min"
End Sub
Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Dim n As Long Dim i As Long Dim x As Long Dim t0 As Double t0 = Timer n = CLng([a1]) Application.ScreenUpdating = False x = 0 Do While x < n i = i + 1 x = x + Len(CStr(i))
Loop MsgBox "x=" & x _ & vbLf & "i=" & i _ & vbLf & n & vbLf _ & Mid(CStr(i), Len(CStr(i)) - (x - n), 1) _ & vbLf & Format((Timer - t0) / 60, "0.00") & " Min " End Sub
'lSteph
On 2 sep, 18:33, "garnote" wrote:
Bonjour, Bonjour,
Le mathématicien Émile Fourrey a déjà posé le problème suivant : Si l'on inscrit à la suite les uns des autres, à partir de 1 et dans leur ordre naturel les nombres entiers, quel sera le 552 715 ième chiffre de la liste ? (12345678910111213141516...) On peut résoudre ce problème sans programmation mais j'ai voulu utiliser une macro qui me permettrait de connaître le n ième chiffre de cette liste. J'ai formaté A1 en texte et j'y entre le n ième chiffre que je veux trouver. Pour n = 552 715, ma macro prend 1 min 42 sec. Peut-on la modifier pour la rendre plus rapide ? Contient-elle des incongruités ? Quelle peut bien être la valeur limite de n ?
Public Sub Fourrey() Dim n As String Dim i As Long Dim suite As String Dim L As Long t0 = Timer n = Range("A1").Value Do Until L >= CLng(n) i = i + 1 suite = suite & i L = Len(suite) Loop MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00") & " min" End Sub
Serge
LSteph
;-) Tu avais déjà presque tout écrit, je me suis contenté de te libérer de cette lourde chaine!
On 3 sep, 16:45, "garnote" wrote:
Salut Stéphane,
De la dynamite ;-) Ingénieux et hyper rapide !
Merci bien, Serge
"LSteph" a écrit dans le message de news:
Bonjour Serge,
Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Dim n As Long Dim i As Long Dim x As Long Dim t0 As Double t0 = Timer n = CLng([a1]) Application.ScreenUpdating = False x = 0 Do While x < n i = i + 1 x = x + Len(CStr(i))
Loop MsgBox "x=" & x _ & vbLf & "i=" & i _ & vbLf & n & vbLf _ & Mid(CStr(i), Len(CStr(i)) - (x - n), 1) _ & vbLf & Format((Timer - t0) / 60, "0.00") & " Min " End Sub
'lSteph
On 2 sep, 18:33, "garnote" wrote:
> Bonjour, Bonjour,
> Le mathématicien Émile Fourrey a déjà posé le problème > suivant : Si l'on inscrit à la suite les uns des autres, à partir > de 1 et dans leur ordre naturel les nombres entiers, quel > sera le 552 715 ième chiffre de la liste ? > (12345678910111213141516...) > On peut résoudre ce problème sans programmation > mais j'ai voulu utiliser une macro qui me permettrait > de connaître le n ième chiffre de cette liste. > J'ai formaté A1 en texte et j'y entre le n ième chiffre > que je veux trouver. > Pour n = 552 715, ma macro prend 1 min 42 sec. > Peut-on la modifier pour la rendre plus rapide ? > Contient-elle des incongruités ? > Quelle peut bien être la valeur limite de n ?
> Public Sub Fourrey() > Dim n As String > Dim i As Long > Dim suite As String > Dim L As Long > t0 = Timer > n = Range("A1").Value > Do Until L >= CLng(n) > i = i + 1 > suite = suite & i > L = Len(suite) > Loop > MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00") & " > min" > End Sub
> Serge- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
;-) Tu avais déjà presque tout écrit, je me suis contenté de te
libérer de cette lourde chaine!
On 3 sep, 16:45, "garnote" <garno...@videotron.ca> wrote:
Salut Stéphane,
De la dynamite ;-)
Ingénieux et hyper rapide !
Merci bien,
Serge
"LSteph" <gmlst...@gmail.com> a écrit dans le message de news:
ec44feee-c7fe-44b8-8f2d-060d4e4e6...@c37g2000yqi.googlegroups.com...
Bonjour Serge,
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel
As Boolean)
Cancel = True
Dim n As Long
Dim i As Long
Dim x As Long
Dim t0 As Double
t0 = Timer
n = CLng([a1])
Application.ScreenUpdating = False
x = 0
Do While x < n
i = i + 1
x = x + Len(CStr(i))
Loop
MsgBox "x=" & x _
& vbLf & "i=" & i _
& vbLf & n & vbLf _
& Mid(CStr(i), Len(CStr(i)) - (x - n), 1) _
& vbLf & Format((Timer - t0) / 60, "0.00") & " Min "
End Sub
'lSteph
On 2 sep, 18:33, "garnote" <garno...@videotron.ca> wrote:
> Bonjour, Bonjour,
> Le mathématicien Émile Fourrey a déjà posé le problème
> suivant : Si l'on inscrit à la suite les uns des autres, à partir
> de 1 et dans leur ordre naturel les nombres entiers, quel
> sera le 552 715 ième chiffre de la liste ?
> (12345678910111213141516...)
> On peut résoudre ce problème sans programmation
> mais j'ai voulu utiliser une macro qui me permettrait
> de connaître le n ième chiffre de cette liste.
> J'ai formaté A1 en texte et j'y entre le n ième chiffre
> que je veux trouver.
> Pour n = 552 715, ma macro prend 1 min 42 sec.
> Peut-on la modifier pour la rendre plus rapide ?
> Contient-elle des incongruités ?
> Quelle peut bien être la valeur limite de n ?
> Public Sub Fourrey()
> Dim n As String
> Dim i As Long
> Dim suite As String
> Dim L As Long
> t0 = Timer
> n = Range("A1").Value
> Do Until L >= CLng(n)
> i = i + 1
> suite = suite & i
> L = Len(suite)
> Loop
> MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00") & "
> min"
> End Sub
> Serge- Masquer le texte des messages précédents -
;-) Tu avais déjà presque tout écrit, je me suis contenté de te libérer de cette lourde chaine!
On 3 sep, 16:45, "garnote" wrote:
Salut Stéphane,
De la dynamite ;-) Ingénieux et hyper rapide !
Merci bien, Serge
"LSteph" a écrit dans le message de news:
Bonjour Serge,
Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Dim n As Long Dim i As Long Dim x As Long Dim t0 As Double t0 = Timer n = CLng([a1]) Application.ScreenUpdating = False x = 0 Do While x < n i = i + 1 x = x + Len(CStr(i))
Loop MsgBox "x=" & x _ & vbLf & "i=" & i _ & vbLf & n & vbLf _ & Mid(CStr(i), Len(CStr(i)) - (x - n), 1) _ & vbLf & Format((Timer - t0) / 60, "0.00") & " Min " End Sub
'lSteph
On 2 sep, 18:33, "garnote" wrote:
> Bonjour, Bonjour,
> Le mathématicien Émile Fourrey a déjà posé le problème > suivant : Si l'on inscrit à la suite les uns des autres, à partir > de 1 et dans leur ordre naturel les nombres entiers, quel > sera le 552 715 ième chiffre de la liste ? > (12345678910111213141516...) > On peut résoudre ce problème sans programmation > mais j'ai voulu utiliser une macro qui me permettrait > de connaître le n ième chiffre de cette liste. > J'ai formaté A1 en texte et j'y entre le n ième chiffre > que je veux trouver. > Pour n = 552 715, ma macro prend 1 min 42 sec. > Peut-on la modifier pour la rendre plus rapide ? > Contient-elle des incongruités ? > Quelle peut bien être la valeur limite de n ?
> Public Sub Fourrey() > Dim n As String > Dim i As Long > Dim suite As String > Dim L As Long > t0 = Timer > n = Range("A1").Value > Do Until L >= CLng(n) > i = i + 1 > suite = suite & i > L = Len(suite) > Loop > MsgBox Mid(suite, n, 1) & vbLf & Format((Timer - t0) / 60, "0.00") & " > min" > End Sub
> Serge- Masquer le texte des messages précédents -