Simplifier une code VBA

  • Initiateur de la discussion Initiateur de la discussion David59
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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@+
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
4
Affichages
461
Réponses
2
Affichages
153
Réponses
10
Affichages
547
Retour