Simplifier une code VBA

David59

XLDnaute Junior
Bonjour le forum
J’ai créé un code VBA qui fonction bien
J’aurais voulu le simplifier car très long

Il met des données dans des cases en fonction du mois qui est affiché
Code:
Private Sub CommandButton1_Click()
ActiveWorkbook.Save
If Sheets("tableau").Range("a7") = "1" Then
Sheets("graphique").Range("b1") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c1") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "2" Then
Sheets("graphique").Range("b2") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c2") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "3" Then
Sheets("graphique").Range("b3") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c3") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "4" Then
Sheets("graphique").Range("b4") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c4") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "5" Then
Sheets("graphique").Range("b5") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c5") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "6" Then
Sheets("graphique").Range("b6") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c6") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "7" Then
Sheets("graphique").Range("b7") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c7") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "8" Then
Sheets("graphique").Range("b8") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c8") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "9" Then
Sheets("graphique").Range("b9") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c9") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "10" Then
Sheets("graphique").Range("b10") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c10") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "11" Then
Sheets("graphique").Range("b11") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c11") = Sheets("fiche de payé").Range("f22").Value
End If

If Sheets("tableau").Range("a7") = "12" Then
Sheets("graphique").Range("b12") = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c12") = Sheets("fiche de payé").Range("f22").Value
End If
End Sub
J’ai donc essayé de faire comme ça
Code:
Private Sub CommandButton1_Click()
Dim TABL As Sheets
Dim GRAPH1 As Sheets
Dim GRAPH2 As Sheets
Dim DONN As Sheets
Dim FDP As Sheets

Set TABL = Sheets("donnée").Range("b2")
Set GRAPH1 = Sheets("graphique")
Set DONN = Sheets("donnée").Range("b15")
Set FDP = Sheets("fiche de payé").Range("f22")

ActiveWorkbook.Save

If TABL = "1" Then
GRAPH.Range("b1") = DONN
GRAPH.Range("c1") = FDP

ElseIf TABL = "2" Then
GRAPH.Range("b2") = DONN
GRAPH.Range("c2") = FDP

ElseIf TABL = "3" Then
GRAPH.Range("b3") = DONN
GRAPH.Range("c3") = FDP

ElseIf TABL = "4" Then
GRAPH.Range("b4") = DONN
GRAPH.Range("c4") = FDP

ElseIf TABL = "5" Then
GRAPH.Range("b5") = DONN
GRAPH.Range("c5") = FDP

ElseIf TABL = "6" Then
GRAPH.Range("b6") = DONN
GRAPH.Range("c6") = FDP

ElseIf TABL = "7" Then
GRAPH.Range("b7") = DONN
GRAPH.Range("c7") = FDP

ElseIf TABL = "8" Then
GRAPH.Range("b8") = DONN
GRAPH.Range("c8") = FDP

ElseIf TABL = "9" Then
GRAPH.Range("b9") = DONN
GRAPH.Range("c9") = FDP

ElseIf TABL = "10" Then
GRAPH.Range("b10") = DONN
GRAPH.Range("c10") = FDP

ElseIf TABL = "11" Then
GRAPH.Range("b11") = DONN
GRAPH.Range("c11") = FDP

ElseIf TABL = "12" Then
GRAPH.Range("b12") = DONN
GRAPH.Range("c12") = FDP
Else
End If
End Sub
Mais un message erreur s'affiche sur le "TABL" du 1 er if
Erreur de compilation
Argument non facultatif

Merci d'avance
David@+
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Simplifier une code VBA

Bonjour

tu t'es trompé dans le type de variable

mais on doit pouvoir faire simple ainsi
Code:
Private Sub CommandButton1_Click()
ActiveWorkbook.Save

x= Sheets("tableau").Range("a7")
if x >0 and x<12 then
Sheets("graphique").Range("b" & x) = Sheets("tableau").Range("j8").Value
Sheets("graphique").Range("c"  & x) = Sheets("fiche de payé").Range("f22").Value
End If
end sub
 
Dernière édition:

Statistiques des forums

Discussions
312 482
Messages
2 088 766
Membres
103 955
dernier inscrit
mikaveli