cs_elcano
Messages postés2Date d'inscriptiondimanche 27 août 2006StatutMembreDernière intervention 6 avril 2007
-
5 avril 2007 à 20:31
Rico 95
Messages postés18Date d'inscriptionmardi 13 mars 2007StatutMembreDernière intervention21 mai 2008
-
14 avril 2007 à 13:03
Bonsoir,
Je débute dans la programmation VBA sous excel, j'ai réussi a créer une
checkbox et à faire ce que je voulais faire, c'est à dire lorsque
qu'elle est active, j'additionne une valeur dans mon tableau... mais je
trouve ce code un peu lourd !
Quelqu'un a t'il une idée pour l'optimiser ?
Private Sub CheckBox1_Click()
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 avril 2007 à 05:34
Salut,
il faut faire une boucle sur les colonnes, voici le code :
Const Ajout1 As Long = 52 '24 + 28
Const Ajout2 As Long = 28
Private Sub CheckBox1_Click()
Dim i As Long
If CheckBox1.Value = True Then
For i = 4 To 20
Cells(5, i).Value = Cells(4, i).Value + Ajout1
Next i
Else
For i = 4 To 20
Cells(5, i).Value = Cells(4, i).Value + Ajout2
Next i
End If
End Sub
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 6 avril 2007 à 08:51
Re,
A celle la est encore mieux (quoique moins facile à comprendre peu être)
Private Sub CheckBox1_Click()
For i = 4 To 20
Cells(5, i).Value = Cells(4, i).Value + IIf(CheckBox1.Value, 28 + 24, 28)
Next i
End Sub , ----
[code.aspx?ID=41455 By Renfield]
cs_elcano
Messages postés2Date d'inscriptiondimanche 27 août 2006StatutMembreDernière intervention 6 avril 2007 6 avril 2007 à 10:05
Merci beaucoup pour vos réponses, les 3 réponses sont parfaites, mais je vais opter pour la 1ère qui reste dans le style ou j'avais écrit, car si je veut modifier mon code plus tard la 3ème sera pas du gateau pour moi :)
Bonne journée et encore merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Y a t'il un moyen d'allèger ces instructions ? En remplaçant dans un premier temps le WorkSheets ("Feuill1") par un objet ou une donnée qui s'appellerai par exemple W_f qui serait reconnu dans tous le classeur ?
J'ai essayé des Dim ou Public sans succès. Est ce la bonne méthode ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 6 avril 2007 à 13:43
Salut,
IL existe avec Excel les objet Suivant:
ActiveWorkBook : type WorkBook représentant le classeur actif.
ActiveSheet: Type WorkSheet représentant la feuille active.
Autre idée.
'Dans un module
Public W_F As Worksheet
'Dans le code de ThisWorkBook
Private Sub Workbook_Open()
Set W_F = ActiveWorkbook.Worksheets("Feuil1")
End Sub , ----
[code.aspx?ID=41455 By Renfield]
W_F représentera alors pour le classeur ouvert Worksheets( "Feuil1" ) et ce PARTOUT normalement