Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Accélerer une macro de façon IMPRESSIONNANTE !

6 réponses
Avatar
Oliv'
Bonjour,
Petite astuce pour accélerer vos macros.
Il vaut mieux stocker les adresses de l'ensemble des cellules concernées par
une action puis faire l'action que de faire l'action sur chaque cellule.
(sais pas si c'est bien clair !! ;-)))

exemple pour changer la couleur de cellules déverouillées : la première met
moins de 1 seconde la deuxième 15 sec
sur une zone A1:B17 où 30 cellules sont déverouillée de façon discontinue
et plus y en a plus c'est impressionant !!!

Sub celllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
If rng Is Nothing Then
Set rng = cellule
Else
Set rng = Union(rng, cellule)
End If

End If
Next cellule
If rng Is Nothing Then
MsgBox "pas de cellule deverouillée"
Exit Sub
End If
rng.Interior.ColorIndex = 40

Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub
'#############################
Sub moinsrapidecelllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
cellule.Interior.ColorIndex = 40
End If
Next cellule
Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub


Merci notamment à Thomas Corvaisier et Laurent LONGRE pour leur post de
septembre 2000
http://groups.google.com/group/microsoft.public.fr.excel/browse_frm/thread/b17fce0e5894f342/0686b39583862727?lnk=st&q=range+plusieurs+lignes+discontinue&rnum=1
et merci groups.google !!!!


--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

6 réponses

Avatar
LSteph
Bonsoir Oliv,
'J'ai dû raté un truc
sur une zone A1:B17 où 30 cellules sont déverouillée de façon discontinue
!Cela n'en fait que deux de verrouillées

Donc j'ai fais avec plus ou moins de 1 à 30(verouillées ou non)
Feuille protègée ou pas idem.
J'obtiens avec ceci,

??Maxi 1 seconde de A1 à P41, en dessous 0 secondes.

Sub toliv()
Dim ttt As Double
Dim c As Range
ttt = Time
Application.ScreenUpdating = False
For Each c In Selection.Cells
If c.Locked = False Then c.Interior.ColorIndex = 27
Next
Application.ScreenUpdating = True
MsgBox CStr(Time - ttt)

End Sub

'lSteph

"Oliv'" <(supprimerceci) a écrit dans le
message de news:
Bonjour,
Petite astuce pour accélerer vos macros.
Il vaut mieux stocker les adresses de l'ensemble des cellules concernées
par une action puis faire l'action que de faire l'action sur chaque
cellule. (sais pas si c'est bien clair !! ;-)))

exemple pour changer la couleur de cellules déverouillées : la première
met moins de 1 seconde la deuxième 15 sec
sur une zone A1:B17 où 30 cellules sont déverouillée de façon discontinue
et plus y en a plus c'est impressionant !!!

Sub celllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
If rng Is Nothing Then
Set rng = cellule
Else
Set rng = Union(rng, cellule)
End If

End If
Next cellule
If rng Is Nothing Then
MsgBox "pas de cellule deverouillée"
Exit Sub
End If
rng.Interior.ColorIndex = 40

Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub
'#############################
Sub moinsrapidecelllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
cellule.Interior.ColorIndex = 40
End If
Next cellule
Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub


Merci notamment à Thomas Corvaisier et Laurent LONGRE pour leur post de
septembre 2000
http://groups.google.com/group/microsoft.public.fr.excel/browse_frm/thread/b17fce0e5894f342/0686b39583862727?lnk=st&q=range+plusieurs+lignes+discontinue&rnum=1
et merci groups.google !!!!


--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



Avatar
Oliv'
LSteph que je salut a écrit

sur une zone A1:B17 où 30 cellules sont déverouillée de façon
discontinue
!Cela n'en fait que deux de verrouillées



non c'est moi ma zone était en fait a1:c17

Donc j'ai fais avec plus ou moins de 1 à 30(verouillées ou non)
Feuille protègée ou pas idem.
oui pas de protection sur la feuille


J'obtiens avec ceci,
??Maxi 1 seconde de A1 à P41, en dessous 0 secondes.


tu selectionnes bien ta zone avant et tu obtiens des changements de
couleurs?

Sub toliv()
Dim ttt As Double
Dim c As Range
ttt = Time
Application.ScreenUpdating = False
For Each c In Selection.Cells
If c.Locked = False Then c.Interior.ColorIndex = 27
Next
Application.ScreenUpdating = True
MsgBox CStr(Time - ttt)
je vais profiter pour simplifier mon calcul de temp merci !


End Sub


sur mon poste 16 sec avec ta requete en selectionnant a1:p41
avec 37 cellules locked = false
C'est apparemment l'opération interior.color qui est longue

essaye un peu en mettant le teste ...locked = true
sur a1:p41 entierement verrouillée 5minutes chez moi !!!!! dingue

c'est un P4 2.66GHZ office 2003 SP2

Merci du retour
à +
Oliv'

'lSteph

"Oliv'" <(supprimerceci) a écrit dans le
message de news:
Bonjour,
Petite astuce pour accélerer vos macros.
Il vaut mieux stocker les adresses de l'ensemble des cellules
concernées par une action puis faire l'action que de faire l'action
sur chaque cellule. (sais pas si c'est bien clair !! ;-)))

exemple pour changer la couleur de cellules déverouillées : la
première met moins de 1 seconde la deuxième 15 sec
sur une zone A1:B17 où 30 cellules sont déverouillée de façon
discontinue et plus y en a plus c'est impressionant !!!

Sub celllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
If rng Is Nothing Then
Set rng = cellule
Else
Set rng = Union(rng, cellule)
End If

End If
Next cellule
If rng Is Nothing Then
MsgBox "pas de cellule deverouillée"
Exit Sub
End If
rng.Interior.ColorIndex = 40

Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub
'#############################
Sub moinsrapidecelllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
cellule.Interior.ColorIndex = 40
End If
Next cellule
Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub


Merci notamment à Thomas Corvaisier et Laurent LONGRE pour leur post
de septembre 2000
http://groups.google.com/group/microsoft.public.fr.excel/browse_frm/thread/b17fce0e5894f342/0686b39583862727?lnk=st&q=range+plusieurs+lignes+discontinue&rnum=1
et merci groups.google !!!!


--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




Avatar
LSteph
Bonsoir,
non je n'ai qu'1.7 Ghz Celeron et pourtant avec ma sub je mets moins d'une
seconde avec le code que je t'ai donné
si tu mets 16 secondes , il doit y avoir un sérieux pb sur ton poste .
Je vais de ce pas essayer ce que tu suggères (à nouveau) à tout de suite.
lSteph
"Oliv'" <(supprimerceci) a écrit dans le
message de news:

LSteph que je salut a écrit

sur une zone A1:B17 où 30 cellules sont déverouillée de façon
discontinue
!Cela n'en fait que deux de verrouillées



non c'est moi ma zone était en fait a1:c17

Donc j'ai fais avec plus ou moins de 1 à 30(verouillées ou non)
Feuille protègée ou pas idem.
oui pas de protection sur la feuille


J'obtiens avec ceci,
??Maxi 1 seconde de A1 à P41, en dessous 0 secondes.


tu selectionnes bien ta zone avant et tu obtiens des changements de
couleurs?

Sub toliv()
Dim ttt As Double
Dim c As Range
ttt = Time
Application.ScreenUpdating = False
For Each c In Selection.Cells
If c.Locked = False Then c.Interior.ColorIndex = 27
Next
Application.ScreenUpdating = True
MsgBox CStr(Time - ttt)
je vais profiter pour simplifier mon calcul de temp merci !


End Sub


sur mon poste 16 sec avec ta requete en selectionnant a1:p41
avec 37 cellules locked = false
C'est apparemment l'opération interior.color qui est longue

essaye un peu en mettant le teste ...locked = true
sur a1:p41 entierement verrouillée 5minutes chez moi !!!!! dingue

c'est un P4 2.66GHZ office 2003 SP2

Merci du retour
à +
Oliv'

'lSteph

"Oliv'" <(supprimerceci) a écrit dans le
message de news:
Bonjour,
Petite astuce pour accélerer vos macros.
Il vaut mieux stocker les adresses de l'ensemble des cellules
concernées par une action puis faire l'action que de faire l'action
sur chaque cellule. (sais pas si c'est bien clair !! ;-)))

exemple pour changer la couleur de cellules déverouillées : la
première met moins de 1 seconde la deuxième 15 sec
sur une zone A1:B17 où 30 cellules sont déverouillée de façon
discontinue et plus y en a plus c'est impressionant !!!

Sub celllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
If rng Is Nothing Then
Set rng = cellule
Else
Set rng = Union(rng, cellule)
End If

End If
Next cellule
If rng Is Nothing Then
MsgBox "pas de cellule deverouillée"
Exit Sub
End If
rng.Interior.ColorIndex = 40

Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub
'#############################
Sub moinsrapidecelllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
cellule.Interior.ColorIndex = 40
End If
Next cellule
Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub


Merci notamment à Thomas Corvaisier et Laurent LONGRE pour leur post
de septembre 2000
http://groups.google.com/group/microsoft.public.fr.excel/browse_frm/thread/b17fce0e5894f342/0686b39583862727?lnk=st&q=range+plusieurs+lignes+discontinue&rnum=1
et merci groups.google !!!!


--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~








Avatar
LSteph
Re, suite,

Je viens de tester
essaye un peu en mettant le teste ...locked = true
sur a1:p41 entierement verrouillée
1 seconde


idem feuille protègée ou non (même version excel)

?bizarre t'aurais pas d'autres processi dans le gestionnaire des tâches ou
un truc qui fait peiner ton PC
ou bien un tas de truc dans un autre classeur ouvert ou une mefc ou un
chmilblic évènementiel qui tourne en permanence.

lSteph

"Oliv'" <(supprimerceci) a écrit dans le
message de news:

LSteph que je salut a écrit

sur une zone A1:B17 où 30 cellules sont déverouillée de façon
discontinue
!Cela n'en fait que deux de verrouillées



non c'est moi ma zone était en fait a1:c17

Donc j'ai fais avec plus ou moins de 1 à 30(verouillées ou non)
Feuille protègée ou pas idem.
oui pas de protection sur la feuille


J'obtiens avec ceci,
??Maxi 1 seconde de A1 à P41, en dessous 0 secondes.


tu selectionnes bien ta zone avant et tu obtiens des changements de
couleurs?

Sub toliv()
Dim ttt As Double
Dim c As Range
ttt = Time
Application.ScreenUpdating = False
For Each c In Selection.Cells
If c.Locked = False Then c.Interior.ColorIndex = 27
Next
Application.ScreenUpdating = True
MsgBox CStr(Time - ttt)
je vais profiter pour simplifier mon calcul de temp merci !


End Sub


sur mon poste 16 sec avec ta requete en selectionnant a1:p41
avec 37 cellules locked = false
C'est apparemment l'opération interior.color qui est longue

essaye un peu en mettant le teste ...locked = true
sur a1:p41 entierement verrouillée 5minutes chez moi !!!!! dingue

c'est un P4 2.66GHZ office 2003 SP2

Merci du retour
à +
Oliv'

'lSteph

"Oliv'" <(supprimerceci) a écrit dans le
message de news:
Bonjour,
Petite astuce pour accélerer vos macros.
Il vaut mieux stocker les adresses de l'ensemble des cellules
concernées par une action puis faire l'action que de faire l'action
sur chaque cellule. (sais pas si c'est bien clair !! ;-)))

exemple pour changer la couleur de cellules déverouillées : la
première met moins de 1 seconde la deuxième 15 sec
sur une zone A1:B17 où 30 cellules sont déverouillée de façon
discontinue et plus y en a plus c'est impressionant !!!

Sub celllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
If rng Is Nothing Then
Set rng = cellule
Else
Set rng = Union(rng, cellule)
End If

End If
Next cellule
If rng Is Nothing Then
MsgBox "pas de cellule deverouillée"
Exit Sub
End If
rng.Interior.ColorIndex = 40

Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub
'#############################
Sub moinsrapidecelllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
cellule.Interior.ColorIndex = 40
End If
Next cellule
Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub


Merci notamment à Thomas Corvaisier et Laurent LONGRE pour leur post
de septembre 2000
http://groups.google.com/group/microsoft.public.fr.excel/browse_frm/thread/b17fce0e5894f342/0686b39583862727?lnk=st&q=range+plusieurs+lignes+discontinue&rnum=1
et merci groups.google !!!!


--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~








Avatar
Oliv'
LSteph que je salut a écrit
Re, suite,

Je viens de tester
essaye un peu en mettant le teste ...locked = true
sur a1:p41 entierement verrouillée
1 seconde


idem feuille protègée ou non (même version excel)

?bizarre t'aurais pas d'autres processi dans le gestionnaire des
tâches ou un truc qui fait peiner ton PC
ou bien un tas de truc dans un autre classeur ouvert ou une mefc ou un
chmilblic évènementiel qui tourne en permanence.

EXACT !! j'ai des "coller images avec liaison" c'est ca qui foutait le

bordel
c'était quand même étrange que cela demandait autant de temps !!!
faut que je les désactive

en tout cas merci bcp

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lSteph

"Oliv'" <(supprimerceci) a écrit dans le
message de news:

LSteph que je salut a écrit

sur une zone A1:B17 où 30 cellules sont déverouillée de façon
discontinue
!Cela n'en fait que deux de verrouillées



non c'est moi ma zone était en fait a1:c17

Donc j'ai fais avec plus ou moins de 1 à 30(verouillées ou non)
Feuille protègée ou pas idem.
oui pas de protection sur la feuille


J'obtiens avec ceci,
??Maxi 1 seconde de A1 à P41, en dessous 0 secondes.


tu selectionnes bien ta zone avant et tu obtiens des changements de
couleurs?

Sub toliv()
Dim ttt As Double
Dim c As Range
ttt = Time
Application.ScreenUpdating = False
For Each c In Selection.Cells
If c.Locked = False Then c.Interior.ColorIndex = 27
Next
Application.ScreenUpdating = True
MsgBox CStr(Time - ttt)
je vais profiter pour simplifier mon calcul de temp merci !


End Sub


sur mon poste 16 sec avec ta requete en selectionnant a1:p41
avec 37 cellules locked = false
C'est apparemment l'opération interior.color qui est longue

essaye un peu en mettant le teste ...locked = true
sur a1:p41 entierement verrouillée 5minutes chez moi !!!!! dingue

c'est un P4 2.66GHZ office 2003 SP2

Merci du retour
à +
Oliv'

'lSteph

"Oliv'" <(supprimerceci) a écrit dans
le message de news:
Bonjour,
Petite astuce pour accélerer vos macros.
Il vaut mieux stocker les adresses de l'ensemble des cellules
concernées par une action puis faire l'action que de faire l'action
sur chaque cellule. (sais pas si c'est bien clair !! ;-)))

exemple pour changer la couleur de cellules déverouillées : la
première met moins de 1 seconde la deuxième 15 sec
sur une zone A1:B17 où 30 cellules sont déverouillée de façon
discontinue et plus y en a plus c'est impressionant !!!

Sub celllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
If rng Is Nothing Then
Set rng = cellule
Else
Set rng = Union(rng, cellule)
End If

End If
Next cellule
If rng Is Nothing Then
MsgBox "pas de cellule deverouillée"
Exit Sub
End If
rng.Interior.ColorIndex = 40

Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub
'#############################
Sub moinsrapidecelllocked()
' Macro enregistrée le 12/10/2005 par Oliv'
Dim rng As Range
Dim t0 As Date
Dim t1 As Date
Dim tf As Date
t0 = Time
Application.ScreenUpdating = False

Range("a1", Cells.SpecialCells(xlCellTypeLastCell)).Select
For Each cellule In Selection
If cellule.Locked = False Then
cellule.Interior.ColorIndex = 40
End If
Next cellule
Application.ScreenUpdating = True
t1 = Time
tf = (t1 - t0)

MsgBox prompt:="Ok !" & tf
End Sub


Merci notamment à Thomas Corvaisier et Laurent LONGRE pour leur
post de septembre 2000
http://groups.google.com/group/microsoft.public.fr.excel/browse_frm/thread/b17fce0e5894f342/0686b39583862727?lnk=st&q=range+plusieurs+lignes+discontinue&rnum=1
et merci groups.google !!!!


--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~








Avatar
Oliv'
Salut
j'ai donc une feuille avec des copies/images de certaines cellules
(edition/copier puis shift+edition/copier l'image avec liaison.)
ou en vba

Selection.Copy
Sheets("Feuil2").Select
Range("A44").Select
ActiveSheet.Pictures.Paste(Link:=True).Select

a chaque fois que je modifie une cellule il y a une mise à jour de cette
image
comment désactiver temporairement cette mise à jour car cela prend
énormément de ressources ??
le mode de recalcul SUR ORDRE ne change rien ni le
Application.EnableEvents = False

il semble que l'on puisse faire cela mais sur chaque image :

ActiveSheet.Shapes("Picture 1").Select
toto=Selection.Formula
Selection.Formula = ""

[instructions]

ActiveSheet.Shapes("Picture 1").Select
Selection.Formula = toto

Une AUTRE idée ?

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

EXACT !! j'ai des "coller images avec liaison" c'est ca qui foutait le
bordel
c'était quand même étrange que cela demandait autant de temps !!!
faut que je les désactive

en tout cas merci bcp