accélérer un code

pascal21

XLDnaute Barbatruc
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("c15").Value = "" Then
OptionButton5.Visible = False
OptionButton6.Visible = False
OptionButton7.Visible = False
OptionButton8.Visible = False
Else: OptionButton5.Visible = True
 OptionButton6.Visible = True
 OptionButton7.Visible = True
 OptionButton8.Visible = True
End If


If Range("c9").Value = "" Then
OptionButton1.Visible = False
OptionButton2.Visible = False
OptionButton3.Visible = False
OptionButton4.Visible = False
Else: OptionButton1.Visible = True
 OptionButton2.Visible = True
 OptionButton3.Visible = True
 OptionButton4.Visible = True
End If


 If Range("c21").Value = "" Then
OptionButton9.Visible = False
OptionButton10.Visible = False
OptionButton11.Visible = False
OptionButton12.Visible = False
Else: OptionButton9.Visible = True
 OptionButton10.Visible = True
 OptionButton11.Visible = True
 OptionButton12.Visible = True
End If
End Sub
bonsoir
j'ai essayé de le réduire pour l'accélérer mais que neni
les boucles j'y comprends rien
comment faire merci de votre aide
d'ailleurs pendant qu'on y est si ce code pouvait s'activer que si les cellules C9 C15 C21 changeaient de valeur ça serait mieux
parceque là, ça ralentit même si je suis sur les autre cellules
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : accélérer un code

Re,

essaye ceci, non testé....
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C15,C9,C21")) Is Nothing Then Exit Sub
OptionButton5.Visible = Not Range("c15").Value = ""
OptionButton6.Visible = Not Range("c15").Value = ""
OptionButton7.Visible = Not Range("c15").Value = ""
OptionButton8.Visible = Not Range("c15").Value = ""

OptionButton1.Visible = Not Range("c9").Value = ""
OptionButton2.Visible = Not Range("c9").Value = ""
OptionButton3.Visible = Not Range("c9").Value = ""
OptionButton4.Visible = Not Range("c9").Value = ""

OptionButton9.Visible = Not Range("c21").Value = ""
OptionButton10.Visible = Not Range("c21").Value = ""
OptionButton11.Visible = Not Range("c21").Value = ""
OptionButton12.Visible = Not Range("c21").Value = ""

End Sub
 

job75

XLDnaute Barbatruc
Re : accélérer un code

Bonjour Pascal, Pierrot,

Une solution "ramassée" mais pas plus rapide :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [C9,C15,C21]) Is Nothing Then Exit Sub
Dim i As Byte
For i = 1 To 12
Me.OLEObjects("OptionButton" & i).Visible = [C9].Offset(6 * Int((i - 1) / 4)) <> ""
Next
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : accélérer un code

Re,

Ceci sera un peu plus rapide :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [C9,C15,C21]) Is Nothing Then Exit Sub
With Me.Shapes
.Range(Array("OptionButton1", "OptionButton2", "OptionButton3", "OptionButton4")).Visible = [C9] <> ""
.Range(Array("OptionButton5", "OptionButton6", "OptionButton7", "OptionButton8")).Visible = [C15] <> ""
.Range(Array("OptionButton9", "OptionButton10", "OptionButton11", "OptionButton12")).Visible = [C21] <> ""
End With
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : accélérer un code

Re,

Testé sur Win 7 - Excel 2010 :

- macro du post #3 => 0,0026 seconde

- macro du post #4 => 0,0009 seconde, 3 fois plus rapide donc.

Edit : la macro de Pascal, post #1, est encore plus rapide => 0,0007 seconde :)

Comme quoi les codes les plus longs ne sont pas forcément les plus mauvais :)

A+
 
Dernière édition:

pascal21

XLDnaute Barbatruc
Re : accélérer un code

bonsoir et merci pour ton acharnement Job75
j'ai utiliser le code du post 4 finalement
le seul bémol est, le changement de valeur des cellules [C9,C15,C21] se fait depuis une listbox ça m'oblige à sélectionner la valeur, changer de cellule puis revenir dessus et cliquer (???) mais je ne vais pas faire le fine bouche
intéressant ton chrono sur les 3 codes, le problème de mon code est qu'il se mettait en route sur toutes les cellules, d'où le problème de ralentissement constaté
If Intersect(Target, [C9,C15,C21]) Is Nothing Then Exit Sub
faudrait je me mette à comprendre cette ligne
ça me ferait gagner du temps:eek:
merci aussi à Pierrot pour son aide
 

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 088 004
Membres
103 695
dernier inscrit
acimi