Simplification pour ménage d'été

T

Temjeh

Guest
Bonjour le forum

Je suis dans le ménage pour l'été

Comment est-ce possible de simplifier ceci pour ne pas le répéter sur chaque mois :

Private Sub CommandButton9_Click()
'<>
Dim coz
coz = ComboBox2

Dim co
co = ComboBox1

If ComboBox2 = "" Then
MsgBox "***Sélectionner le mois***"

Else
If coz = "Janvier" Then

Sheets("JANVIER").Select
Label66 = ComboBox1.Value
Label15 = ActiveSheet.Name
Range("B1").Activate

TextBox1 = Range("B37")
TextBox19 = Range("E37")
TextBox20 = Range("H37")
TextBox21 = Range("K37")
TextBox26 = Range("N5")
TextBox27 = Range("N6")
TextBox28 = Range("N7")
TextBox29 = Range("N8")

Else

If ComboBox1 = "" Then
MsgBox "***Sélectionner la dépense***"

Else
If co = "Gas" Then
Range("B1").Activate
Range("B1").End(xlDown).Offset(1, 0).Select

Else
If co = "Réparations" Then
Range("E1").Activate
Range("E1").End(xlDown).Offset(1, 0).Select

Else
If co = "Entretien" Then
Range("H1").Activate
Range("H1").End(xlDown).Offset(1, 0).Select

Else
If co = "Autre" Then
Range("K1").Activate
Range("K1").End(xlDown).Offset(1, 0).Select


End If
End If
End If
End If
End If
End If

J'ai la même chose pour Février,mars, avril...jusqu'à Décembre ce qui me fait un code de 4 pieds de long

If coz = "Février" Then
...
...
...
If coz = "Mars" Then

Merci à l'avance

Temjeh

A+
 
T

Temjeh

Guest
Merci beaucoup
Voici mon final:moins de 50 lignes aulieu de 600 !!!!!!!!!!!!!!!!!

Private Sub CommandButton9_Click()
'<>
Dim coz
coz = ComboBox2

Dim co
co = ComboBox1

If ComboBox2 = "" Then
MsgBox "***Sélectionner le mois***"
Else

Sheets(coz).Select

Label66 = ComboBox1.Value
Label15 = ActiveSheet.Name
Range("B1").Activate

TextBox1 = Range("B37")
TextBox19 = Range("E37")
TextBox20 = Range("H37")
TextBox21 = Range("K37")
TextBox26 = Range("N5")
TextBox27 = Range("N6")
TextBox28 = Range("N7")
TextBox29 = Range("N8")


If ComboBox1 = "" Then
MsgBox "***Sélectionner la dépense***"

Else
If co = "Gas" Then
Range("B1").Activate
Range("B1").End(xlDown).Offset(1, 0).Select

Else
If co = "Réparations" Then
Range("E1").Activate
Range("E1").End(xlDown).Offset(1, 0).Select

Else
If co = "Entretien" Then
Range("H1").Activate
Range("H1").End(xlDown).Offset(1, 0).Select

Else
If co = "Autre" Then
Range("K1").Activate
Range("K1").End(xlDown).Offset(1, 0).Select


End If
End If
End If
End If
End If
End If


End Sub

Temjeh
 
Y

Yeahou

Guest
Re Temjeh, le forum

Encore moi

pour info tes Range("").Activate ne servent absolument à rien devant
Range("").End(xlDown).Offset(1, 0).Select
cela revient à activer une cellule avant d'en sélectionner une autre, tu peux les supprimer.

A+
 
@

@+Thierry

Guest
Bonsoir Temjeh, Yeahou, le Forum

Une autre façon d'écrire ton code, même si il fait la même chose, mais plus simple à lire, et plus rapide avec le Select Case qui évite cette cascade de If Else, Else, Else... Et puis en déclarant les Variables....

Option Explicit

Private Sub CommandButton9_Click()
Dim co As String, coz As String
co = ComboBox1
coz = ComboBox2

If co = "" Then MsgBox "***Sélectionner la dépense***": Exit Sub
If coz = "" Then MsgBox "***Sélectionner le mois***": Exit Sub

Sheets(coz).Select

Label66 = co
Label15 = ActiveSheet.Name

With ActiveSheet
TextBox1 = .Range("B37")
TextBox19 = .Range("E37")
TextBox20 = .Range("H37")
TextBox21 = .Range("K37")
TextBox26 = .Range("N5")
TextBox27 = .Range("N6")
TextBox28 = .Range("N7")
TextBox29 = .Range("N8")

Select Case co
Case "Gas": .Range("B1").End(xlDown).Offset(1, 0).Select
Case "Réparations": .Range("E1").End(xlDown).Offset(1, 0).Select
Case "Entretien": .Range("H1").End(xlDown).Offset(1, 0).Select
Case "Autre": .Range("K1").End(xlDown).Offset(1, 0).Select
Case Else: MsgBox "Y a un sbinz lol !!!"
End Select
End With

End Sub

NB sans aucune simulation en réél sur un UserForm (d'ailleurs je suis surpris des numéro des Controls... 29 TextBoxes !!

Bonne Soirée
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 501
Messages
2 089 014
Membres
104 005
dernier inscrit
Maxence