Impossible de rentrer une valeur pendant l'execution de la macro
btrends
Messages postés
9
Statut
Membre
-
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour a toutes et a tous,
je suis novice en VBA, mais je progresse tres doucement et peu surement...
J'ai confectionne ce programme, qui a pour but de s'entrainer au calcul mental avec un chrono.
Or quand je clique sur le bouton de ma macro, il m'est impossible de rentrer quelconque reponse dans la colonne correspondante. En revanche, lorsque je mets toutes les reponses avant de cliquer sur le bouton, tout marche parfaitement (avec un temps proche de zero bien évidemment!)...
Si vous avez une idée, ce serait adorable!
C'est tres probable que l'erreur tourne autour du "doevents" ou du worksheets.calculate que je ne maitrise pas du tout!
Voila mon programme:
Sub ChronoCM()
'Copier coller des valeurs aleatoires
Range("A2:B31").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlValues
'Chrono
'Copie de la date de debut
Range("K2").Select
Application.CutCopyMode = False
Selection.Copy
Range("J2").Select
Selection.PasteSpecial Paste:=xlValues
'Boucle pour chronometrer
While Cells(32, "H") <> 1
DoEvents
Worksheets("Feuil1").Rows(2).Columns("K:L").Calculate
Sheets("Feuil1").Select
Wend
'Affichage du TEMPS effectue
Range("K2").Select
Application.CutCopyMode = False
Selection.Copy
Range("J4").Select
Selection.PasteSpecial Paste:=xlValues
End Sub
MERCI ENCORE MILLE FOIS!
je suis novice en VBA, mais je progresse tres doucement et peu surement...
J'ai confectionne ce programme, qui a pour but de s'entrainer au calcul mental avec un chrono.
Or quand je clique sur le bouton de ma macro, il m'est impossible de rentrer quelconque reponse dans la colonne correspondante. En revanche, lorsque je mets toutes les reponses avant de cliquer sur le bouton, tout marche parfaitement (avec un temps proche de zero bien évidemment!)...
Si vous avez une idée, ce serait adorable!
C'est tres probable que l'erreur tourne autour du "doevents" ou du worksheets.calculate que je ne maitrise pas du tout!
Voila mon programme:
Sub ChronoCM()
'Copier coller des valeurs aleatoires
Range("A2:B31").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlValues
'Chrono
'Copie de la date de debut
Range("K2").Select
Application.CutCopyMode = False
Selection.Copy
Range("J2").Select
Selection.PasteSpecial Paste:=xlValues
'Boucle pour chronometrer
While Cells(32, "H") <> 1
DoEvents
Worksheets("Feuil1").Rows(2).Columns("K:L").Calculate
Sheets("Feuil1").Select
Wend
'Affichage du TEMPS effectue
Range("K2").Select
Application.CutCopyMode = False
Selection.Copy
Range("J4").Select
Selection.PasteSpecial Paste:=xlValues
End Sub
MERCI ENCORE MILLE FOIS!
2 réponses
-
Bonjour btrends,
Tu travaille avec beaucoup de cellules différentes, et je ne suis pas sûr d'avoir tout compris.
Tu peux mettre ton fichier à disposition sur le site "https://www.cjoint.com/", mais sans données confidentielles biensûr.
Ensuite, tu copies le lien dans ton prochain message.
De cette façon on a un lien pour, je l'espère, mieux comprendre ce que tu souhaite
A bientôt -
Bonjour,
utilises l'évènement Change de la feuille pour détecter tes saisies.
Sur cet exemple le timer est relevé à la 1ère saisie et le temps affiché à la dernière saisie :Dim t1 As Double Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [F2:F31]) Is Nothing Then Exit Sub If WorksheetFunction.CountA([F2:F31]) = 1 Then t1 = Timer If WorksheetFunction.CountA([F2:F31]) = 30 Then MsgBox (Timer - t1 & " secondes") End Sub
Tu peux modifier pour mémoriser T1 dès l'affichage des exercices.
Tu peux aussi tirer un nombre aléatoire entre 2 et 20 directement dans vba avec :Randomize aleatoire = Int(Rnd() * 19 + 2)
eric