Bonjour à tous,
J'ai un code:
Sub Saisie()
i = [Date_Début]
j = [Date_fin]
Sheets("Général").Select
Range("A3:A367").Select
For Each Cell In Selection
If Cell > i And Cell <= j + 1 Then
Cell(Jour, 4).Value = [Heures_Début]
Cell(Jour, 5).Value = [Heures_Fin]
End If
Next
End Sub
Il fonctionne, mais il s'avère qu'il est très lent.
Est-ce du au code lui-même ou selon vous à autre chose (La taille de
A4:A367)
as-tu employé en début de code Application.ScreenUpdatingúlse et en fin de code: Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select For Each Cell In Selection tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer 360 fois [Heures_Début] et [Heures_Fin] Pour cela, créer avant la boucle 2 variables VBA heuresDébut=[Heures_Début] heuresFin = [Heures_Fin]
et les réutiliser dans la boucle: Cell(Jour, 4).Value = heuresDébut Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" a écrit dans le message news:
Bonjour à tous, J'ai un code: Sub Saisie() i = [Date_Début] j = [Date_fin] Sheets("Général").Select Range("A3:A367").Select For Each Cell In Selection If Cell > i And Cell <= j + 1 Then Cell(Jour, 4).Value = [Heures_Début] Cell(Jour, 5).Value = [Heures_Fin] End If Next End Sub
Il fonctionne, mais il s'avère qu'il est très lent. Est-ce du au code lui-même ou selon vous à autre chose (La taille de A4:A367)
Merci
PB
bonjour,
as-tu employé en début de code
Application.ScreenUpdatingúlse
et en fin de code:
Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select
For Each Cell In Selection
tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer
360 fois [Heures_Début] et [Heures_Fin]
Pour cela, créer avant la boucle 2 variables VBA
heuresDébut=[Heures_Début]
heuresFin = [Heures_Fin]
et les réutiliser dans la boucle:
Cell(Jour, 4).Value = heuresDébut
Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" <Zork.NOSSWEN@tropcurieurx.com> a écrit dans le message news:
utMpEZorDHA.3224@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai un code:
Sub Saisie()
i = [Date_Début]
j = [Date_fin]
Sheets("Général").Select
Range("A3:A367").Select
For Each Cell In Selection
If Cell > i And Cell <= j + 1 Then
Cell(Jour, 4).Value = [Heures_Début]
Cell(Jour, 5).Value = [Heures_Fin]
End If
Next
End Sub
Il fonctionne, mais il s'avère qu'il est très lent.
Est-ce du au code lui-même ou selon vous à autre chose (La taille de
A4:A367)
as-tu employé en début de code Application.ScreenUpdatingúlse et en fin de code: Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select For Each Cell In Selection tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer 360 fois [Heures_Début] et [Heures_Fin] Pour cela, créer avant la boucle 2 variables VBA heuresDébut=[Heures_Début] heuresFin = [Heures_Fin]
et les réutiliser dans la boucle: Cell(Jour, 4).Value = heuresDébut Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" a écrit dans le message news:
Bonjour à tous, J'ai un code: Sub Saisie() i = [Date_Début] j = [Date_fin] Sheets("Général").Select Range("A3:A367").Select For Each Cell In Selection If Cell > i And Cell <= j + 1 Then Cell(Jour, 4).Value = [Heures_Début] Cell(Jour, 5).Value = [Heures_Fin] End If Next End Sub
Il fonctionne, mais il s'avère qu'il est très lent. Est-ce du au code lui-même ou selon vous à autre chose (La taille de A4:A367)
Merci
PB
Pascal
Merci , Rien qu'avec Application.ScreenUpdating=true Cela va beaucoup plus vite. Mais pour ma simple gouverne à quoi cela correspond cette "Instruction"
Merci Pascal "Bourby" a écrit dans le message de news:
bonjour,
as-tu employé en début de code Application.ScreenUpdatingúlse et en fin de code: Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select For Each Cell In Selection tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer 360 fois [Heures_Début] et [Heures_Fin] Pour cela, créer avant la boucle 2 variables VBA heuresDébut=[Heures_Début] heuresFin = [Heures_Fin]
et les réutiliser dans la boucle: Cell(Jour, 4).Value = heuresDébut Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" a écrit dans le message news:
Bonjour à tous, J'ai un code: Sub Saisie() i = [Date_Début] j = [Date_fin] Sheets("Général").Select Range("A3:A367").Select For Each Cell In Selection If Cell > i And Cell <= j + 1 Then Cell(Jour, 4).Value = [Heures_Début] Cell(Jour, 5).Value = [Heures_Fin] End If Next End Sub
Il fonctionne, mais il s'avère qu'il est très lent. Est-ce du au code lui-même ou selon vous à autre chose (La taille de A4:A367)
Merci
PB
Merci ,
Rien qu'avec Application.ScreenUpdating=true
Cela va beaucoup plus vite.
Mais pour ma simple gouverne à quoi cela correspond cette "Instruction"
Merci
Pascal
"Bourby" <nospam-jchfer@wanadoo.fr> a écrit dans le message de news:
Opf2fMqrDHA.1512@TK2MSFTNGP10.phx.gbl...
bonjour,
as-tu employé en début de code
Application.ScreenUpdatingúlse
et en fin de code:
Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select
For Each Cell In Selection
tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer
360 fois [Heures_Début] et [Heures_Fin]
Pour cela, créer avant la boucle 2 variables VBA
heuresDébut=[Heures_Début]
heuresFin = [Heures_Fin]
et les réutiliser dans la boucle:
Cell(Jour, 4).Value = heuresDébut
Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" <Zork.NOSSWEN@tropcurieurx.com> a écrit dans le message news:
utMpEZorDHA.3224@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai un code:
Sub Saisie()
i = [Date_Début]
j = [Date_fin]
Sheets("Général").Select
Range("A3:A367").Select
For Each Cell In Selection
If Cell > i And Cell <= j + 1 Then
Cell(Jour, 4).Value = [Heures_Début]
Cell(Jour, 5).Value = [Heures_Fin]
End If
Next
End Sub
Il fonctionne, mais il s'avère qu'il est très lent.
Est-ce du au code lui-même ou selon vous à autre chose (La taille de
A4:A367)
Merci , Rien qu'avec Application.ScreenUpdating=true Cela va beaucoup plus vite. Mais pour ma simple gouverne à quoi cela correspond cette "Instruction"
Merci Pascal "Bourby" a écrit dans le message de news:
bonjour,
as-tu employé en début de code Application.ScreenUpdatingúlse et en fin de code: Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select For Each Cell In Selection tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer 360 fois [Heures_Début] et [Heures_Fin] Pour cela, créer avant la boucle 2 variables VBA heuresDébut=[Heures_Début] heuresFin = [Heures_Fin]
et les réutiliser dans la boucle: Cell(Jour, 4).Value = heuresDébut Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" a écrit dans le message news:
Bonjour à tous, J'ai un code: Sub Saisie() i = [Date_Début] j = [Date_fin] Sheets("Général").Select Range("A3:A367").Select For Each Cell In Selection If Cell > i And Cell <= j + 1 Then Cell(Jour, 4).Value = [Heures_Début] Cell(Jour, 5).Value = [Heures_Fin] End If Next End Sub
Il fonctionne, mais il s'avère qu'il est très lent. Est-ce du au code lui-même ou selon vous à autre chose (La taille de A4:A367)
Merci
PB
Pascal
Voilà mon code final C'est mieux Sub normaux() Application.ScreenUpdating = False
i = [Date_Début] j = [Date_fin] r = [Détail] For Each Cell In [Détail] If Cell > i And Cell <= j + 1 Then Cell(jour, 4).Value = [Heures_Début] Cell(jour, 5).Value = [Heures_Fin] End If Next Application.ScreenUpdating = True End Sub C'est mieux???
"Bourby" a écrit dans le message de news:
bonjour,
as-tu employé en début de code Application.ScreenUpdatingúlse et en fin de code: Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select For Each Cell In Selection tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer 360 fois [Heures_Début] et [Heures_Fin] Pour cela, créer avant la boucle 2 variables VBA heuresDébut=[Heures_Début] heuresFin = [Heures_Fin]
et les réutiliser dans la boucle: Cell(Jour, 4).Value = heuresDébut Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" a écrit dans le message news:
Bonjour à tous, J'ai un code: Sub Saisie() i = [Date_Début] j = [Date_fin] Sheets("Général").Select Range("A3:A367").Select For Each Cell In Selection If Cell > i And Cell <= j + 1 Then Cell(Jour, 4).Value = [Heures_Début] Cell(Jour, 5).Value = [Heures_Fin] End If Next End Sub
Il fonctionne, mais il s'avère qu'il est très lent. Est-ce du au code lui-même ou selon vous à autre chose (La taille de A4:A367)
Merci
PB
Voilà mon code final
C'est mieux
Sub normaux()
Application.ScreenUpdating = False
i = [Date_Début]
j = [Date_fin]
r = [Détail]
For Each Cell In [Détail]
If Cell > i And Cell <= j + 1 Then
Cell(jour, 4).Value = [Heures_Début]
Cell(jour, 5).Value = [Heures_Fin]
End If
Next
Application.ScreenUpdating = True
End Sub
C'est mieux???
"Bourby" <nospam-jchfer@wanadoo.fr> a écrit dans le message de news:
Opf2fMqrDHA.1512@TK2MSFTNGP10.phx.gbl...
bonjour,
as-tu employé en début de code
Application.ScreenUpdatingúlse
et en fin de code:
Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select
For Each Cell In Selection
tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer
360 fois [Heures_Début] et [Heures_Fin]
Pour cela, créer avant la boucle 2 variables VBA
heuresDébut=[Heures_Début]
heuresFin = [Heures_Fin]
et les réutiliser dans la boucle:
Cell(Jour, 4).Value = heuresDébut
Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" <Zork.NOSSWEN@tropcurieurx.com> a écrit dans le message news:
utMpEZorDHA.3224@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai un code:
Sub Saisie()
i = [Date_Début]
j = [Date_fin]
Sheets("Général").Select
Range("A3:A367").Select
For Each Cell In Selection
If Cell > i And Cell <= j + 1 Then
Cell(Jour, 4).Value = [Heures_Début]
Cell(Jour, 5).Value = [Heures_Fin]
End If
Next
End Sub
Il fonctionne, mais il s'avère qu'il est très lent.
Est-ce du au code lui-même ou selon vous à autre chose (La taille de
A4:A367)
Voilà mon code final C'est mieux Sub normaux() Application.ScreenUpdating = False
i = [Date_Début] j = [Date_fin] r = [Détail] For Each Cell In [Détail] If Cell > i And Cell <= j + 1 Then Cell(jour, 4).Value = [Heures_Début] Cell(jour, 5).Value = [Heures_Fin] End If Next Application.ScreenUpdating = True End Sub C'est mieux???
"Bourby" a écrit dans le message de news:
bonjour,
as-tu employé en début de code Application.ScreenUpdatingúlse et en fin de code: Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select For Each Cell In Selection tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer 360 fois [Heures_Début] et [Heures_Fin] Pour cela, créer avant la boucle 2 variables VBA heuresDébut=[Heures_Début] heuresFin = [Heures_Fin]
et les réutiliser dans la boucle: Cell(Jour, 4).Value = heuresDébut Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" a écrit dans le message news:
Bonjour à tous, J'ai un code: Sub Saisie() i = [Date_Début] j = [Date_fin] Sheets("Général").Select Range("A3:A367").Select For Each Cell In Selection If Cell > i And Cell <= j + 1 Then Cell(Jour, 4).Value = [Heures_Début] Cell(Jour, 5).Value = [Heures_Fin] End If Next End Sub
Il fonctionne, mais il s'avère qu'il est très lent. Est-ce du au code lui-même ou selon vous à autre chose (La taille de A4:A367)
Merci
PB
Olivier D.
Bonsoir,
Pour votre gouverne, il s'agit d'une instruction qui dit à Excel ne pas afficher les modifications de la macros à l'écran. Excel n'affiche rien durant l'évolution de la macro et rafraîchit l'écran à la fin du traitement.
Bonne soirée,
Olivier
-----Message d'origine----- Merci , Rien qu'avec Application.ScreenUpdating=true Cela va beaucoup plus vite. Mais pour ma simple gouverne à quoi cela correspond cette "Instruction"
Merci Pascal "Bourby" a écrit dans le message de news:
bonjour,
as-tu employé en début de code Application.ScreenUpdatingúlse et en fin de code: Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select For Each Cell In Selection tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer 360 fois [Heures_Début] et [Heures_Fin] Pour cela, créer avant la boucle 2 variables VBA heuresDébut=[Heures_Début] heuresFin = [Heures_Fin]
et les réutiliser dans la boucle: Cell(Jour, 4).Value = heuresDébut Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" a écrit dans le message news:
Bonjour à tous, J'ai un code: Sub Saisie() i = [Date_Début] j = [Date_fin] Sheets("Général").Select Range("A3:A367").Select For Each Cell In Selection If Cell > i And Cell <= j + 1 Then Cell(Jour, 4).Value = [Heures_Début] Cell(Jour, 5).Value = [Heures_Fin] End If Next End Sub
Il fonctionne, mais il s'avère qu'il est très lent. Est-ce du au code lui-même ou selon vous à autre chose (La taille de
A4:A367)
Merci
PB
.
Bonsoir,
Pour votre gouverne, il s'agit d'une instruction qui dit à
Excel ne pas afficher les modifications de la macros à
l'écran. Excel n'affiche rien durant l'évolution de la
macro et rafraîchit l'écran à la fin du traitement.
Bonne soirée,
Olivier
-----Message d'origine-----
Merci ,
Rien qu'avec Application.ScreenUpdating=true
Cela va beaucoup plus vite.
Mais pour ma simple gouverne à quoi cela correspond
cette "Instruction"
Merci
Pascal
"Bourby" <nospam-jchfer@wanadoo.fr> a écrit dans le
message de news:
Opf2fMqrDHA.1512@TK2MSFTNGP10.phx.gbl...
bonjour,
as-tu employé en début de code
Application.ScreenUpdating=false
et en fin de code:
Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select
For Each Cell In Selection
tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer
360 fois [Heures_Début] et [Heures_Fin]
Pour cela, créer avant la boucle 2 variables VBA
heuresDébut=[Heures_Début]
heuresFin = [Heures_Fin]
et les réutiliser dans la boucle:
Cell(Jour, 4).Value = heuresDébut
Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" <Zork.NOSSWEN@tropcurieurx.com> a écrit dans
le message news:
utMpEZorDHA.3224@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai un code:
Sub Saisie()
i = [Date_Début]
j = [Date_fin]
Sheets("Général").Select
Range("A3:A367").Select
For Each Cell In Selection
If Cell > i And Cell <= j + 1 Then
Cell(Jour, 4).Value = [Heures_Début]
Cell(Jour, 5).Value = [Heures_Fin]
End If
Next
End Sub
Il fonctionne, mais il s'avère qu'il est très lent.
Est-ce du au code lui-même ou selon vous à autre
chose (La taille de
Pour votre gouverne, il s'agit d'une instruction qui dit à Excel ne pas afficher les modifications de la macros à l'écran. Excel n'affiche rien durant l'évolution de la macro et rafraîchit l'écran à la fin du traitement.
Bonne soirée,
Olivier
-----Message d'origine----- Merci , Rien qu'avec Application.ScreenUpdating=true Cela va beaucoup plus vite. Mais pour ma simple gouverne à quoi cela correspond cette "Instruction"
Merci Pascal "Bourby" a écrit dans le message de news:
bonjour,
as-tu employé en début de code Application.ScreenUpdatingúlse et en fin de code: Application.ScreenUpdating=true
De plus, il est inutile de sélectionner la plage,
Range("A3:A367").Select For Each Cell In Selection tu peux écrire:
For Each Cell In Range("A3:A367")
Si ça ne suffit pas, tu peux encore éviter d'évaluer 360 fois [Heures_Début] et [Heures_Fin] Pour cela, créer avant la boucle 2 variables VBA heuresDébut=[Heures_Début] heuresFin = [Heures_Fin]
et les réutiliser dans la boucle: Cell(Jour, 4).Value = heuresDébut Cell(Jour, 5).Value = [Heures_Fin]
Si ça ne suffit pas, ça dépasse mes compétences.
Cordialement
Bourby
"Pascal" a écrit dans le message news:
Bonjour à tous, J'ai un code: Sub Saisie() i = [Date_Début] j = [Date_fin] Sheets("Général").Select Range("A3:A367").Select For Each Cell In Selection If Cell > i And Cell <= j + 1 Then Cell(Jour, 4).Value = [Heures_Début] Cell(Jour, 5).Value = [Heures_Fin] End If Next End Sub
Il fonctionne, mais il s'avère qu'il est très lent. Est-ce du au code lui-même ou selon vous à autre chose (La taille de