Simplifier VBA d'une fonction

Bonjour.

J'ai écrit un code qui fonctionne qui me permet de créer beaucoup de zones cliquables sur une feuille.

Le problème, c'est que c'est très compliqué.

J'aurai voulu créer une fonction pour simplifier mon code mais j'ai trop de variables pour y parvenir.

Si quelqu'un voulait bien y jeter un petit coup d'oeil et m'aider (ce serait la première fonction car je ne m'y connais pas trop en fonction), ce serait bien sympathique.

Voici la partie du code qui revient tout le temps :

Case "$B$5:$I$5"
For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.1"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "1"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs de base du chapitre 1 en double cliquant dessus puis clique sur la case rouge"

Ce qui change : le case du début, Range("AF4") qui prend le numéro du chapitre en question, le range ("AG4") qui prend 1, 2 ou 3 selon si la case cochée est entre B et I, entre J et Q ou entre R et Y.

A la fin, dans la msgBox, je dois changer le nom du chapitre en fonction du range ("AF4'") et les mots "savoir de base" si AG4 = 1, Nouveaux savoirs si AG4 = 2, savoirs de perf si AG4 = 3.

Voici le code entier :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$E$1:$F$1"
Sheets("chapitre 1").Select
Case "$G$1:$H$1"
Sheets("chapitre 2").Select
Case "$I$1:$J$1"
Sheets("chapitre 3").Select
Case "$K$1:$L$1"
Sheets("chapitre 4").Select
Case "$M$1:$N$1"
Sheets("chapitre 5").Select
Case "$O$1:$P$1"
Sheets("chapitre 6").Select
Case "$Q$1:$R$1"
Sheets("chapitre 7").Select
Case "$S$1:$T$1"
Sheets("chapitre 8").Select
Case "$U$1:$V$1"
Sheets("chapitre 9").Select
Case "$W$1:$X$1"
Sheets("chapitre 10").Select

Case "$B$5:$I$5"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.1"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "1"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs de base du chapitre 1 en double cliquant dessus puis clique sur la case rouge"

Case "$J$5:$Q$5"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.1"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "2"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les nouveaux savoirs du chapitre 1 en double cliquant dessus puis clique sur la case rouge"

Case "$R$5:$Y$5"
[size=150] For i = 1 To 26
   For j = 1 To 30
     If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
        Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
     End If
   Next j
  Next i
Sheets("liste_codee").Range("AF4") = [/size]"chap.1"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "3"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs d'approfondissement du chapitre 1 en double cliquant dessus puis clique sur la case rouge"

Case "$B$8:$I$8"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.2"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "1"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs de base du chapitre 2 en double cliquant dessus puis clique sur la case rouge"

Case "$J$8:$Q$8"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.2"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "2"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les nouveaux savoirs du chapitre 2 en double cliquant dessus puis clique sur la case rouge"

Case "$R$8:$Y$8"
 For i = 1 To 26
   For j = 1 To 30
     If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
        Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
     End If
   Next j
  Next i
Sheets("liste_codee").Range("AF4") = "chap.2"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "3"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs d'approfondissement du chapitre 2 en double cliquant dessus puis clique sur la case rouge"

Case "$B$11:$I$11"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.3"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "1"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs de base du chapitre 3 en double cliquant dessus puis clique sur la case rouge"

Case "$J$11:$Q$11"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.3"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "2"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les nouveaux savoirs du chapitre 3 en double cliquant dessus puis clique sur la case rouge"

Case "$R$11:$Y$11"
 For i = 1 To 26
   For j = 1 To 30
     If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
        Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
     End If
   Next j
  Next i
Sheets("liste_codee").Range("AF4") = "chap.3"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "3"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs d'approfondissement du chapitre 3 en double cliquant dessus puis clique sur la case rouge"

Case "$B$14:$I$14"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.4"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "1"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs de base du chapitre 4 en double cliquant dessus puis clique sur la case rouge"

Case "$J$14:$Q$14"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.4"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "2"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les nouveaux savoirs du chapitre 4 en double cliquant dessus puis clique sur la case rouge"

Case "$R$14:$Y$14"
 For i = 1 To 26
   For j = 1 To 30
     If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
        Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
     End If
   Next j
  Next i
Sheets("liste_codee").Range("AF4") = "chap.4"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "3"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs d'approfondissement du chapitre 4 en double cliquant dessus puis clique sur la case rouge"

Case "$B$17:$I$17"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.5"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "1"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs de base du chapitre 5 en double cliquant dessus puis clique sur la case rouge"

Case "$J$17:$Q$17"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.5"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "2"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les nouveaux savoirs du chapitre 5 en double cliquant dessus puis clique sur la case rouge"

Case "$R$17:$Y$17"
 For i = 1 To 26
   For j = 1 To 30
     If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
        Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
     End If
   Next j
  Next i
Sheets("liste_codee").Range("AF4") = "chap.5"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "3"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs d'approfondissement du chapitre 5 en double cliquant dessus puis clique sur la case rouge"

Case "$B$20:$I$20"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.6"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "1"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs de base du chapitre 6 en double cliquant dessus puis clique sur la case rouge"

Case "$J$20:$Q$20"
 For i = 1 To 26
For j = 1 To 30
If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
End If
Next j
Next i
Sheets("liste_codee").Range("AF4") = "chap.6"
Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") = "2"
Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les nouveaux savoirs du chapitre 6 en double cliquant dessus puis clique sur la case rouge"

Case "$R$20:$Y$20"
[color=#FF0000] For i = 1 To 26
   For j = 1 To 30
     If Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 48 Then
        Sheets("liste_codee").Cells(i, j).Interior.ColorIndex = 0
     End If
   Next j
  Next i
Sheets("liste_codee").Range("AF4") [/color]= "chap.6"
[color=#FF0000]Sheets("liste_codee").Columns("AF").Hidden = True
Sheets("liste_codee").Range("AG4") =[/color] "3"
[color=#FF0000]Sheets("liste_codee").Columns("AG").Hidden = True
Sheets("liste_codee").Select
MsgBox "Choisis les savoirs[/color] d'approfondissement [color=#FF0000]du chapitre [/color]6 [color=#FF0000]en double cliquant dessus puis clique sur la case rouge"[/color]

End Select

 End Sub

Merci pour ceux qui prendront le temps de m'aider sur ce petit preoblème.

Bonjour

Une première simplification à vérifier

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Chapitre As Byte, Numero As Byte, Debut
Dim J As Long, I As Long

  Debut = Array("", "Choisis les savoirs de base du chapitre ", _
                    "Choisis les nouveaux savoirs du chapitre ", _
                    "Choisis les savoirs d'approfondissement du chapitre ")

  Select Case Target.Address
    Case "$E$1:$F$1"
      Sheets("chapitre 1").Select
    Case "$G$1:$H$1"
      Sheets("chapitre 2").Select
    Case "$I$1:$J$1"
      Sheets("chapitre 3").Select
    Case "$K$1:$L$1"
      Sheets("chapitre 4").Select
    Case "$M$1:$N$1"
      Sheets("chapitre 5").Select
    Case "$O$1:$P$1"
      Sheets("chapitre 6").Select
    Case "$Q$1:$R$1"
      Sheets("chapitre 7").Select
    Case "$S$1:$T$1"
      Sheets("chapitre 8").Select
    Case "$U$1:$V$1"
      Sheets("chapitre 9").Select
    Case "$W$1:$X$1"
      Sheets("chapitre 10").Select
    Case "$B$5:$I$5"
      Chapitre = 1: Numero = 1
    Case "$J$5:$Q$5"
      Chapitre = 1: Numero = 2
    Case "$R$5:$Y$5"
      Chapitre = 1: Numero = 3
    Case "$B$8:$I$8"
      Chapitre = 2: Numero = 1
    Case "$J$8:$Q$8"
      Chapitre = 2: Numero = 2
    Case "$R$8:$Y$8"
      Chapitre = 2: Numero = 3
    Case "$B$11:$I$11"
      Chapitre = 3: Numero = 1
    Case "$J$11:$Q$11"
      Chapitre = 3: Numero = 2
    Case "$R$11:$Y$11"
      Chapitre = 3: Numero = 3
    Case "$B$14:$I$14"
      Chapitre = 4: Numero = 1
    Case "$J$14:$Q$14"
      Chapitre = 4: Numero = 2
    Case "$R$14:$Y$14"
      Chapitre = 4: Numero = 3
    Case "$B$17:$I$17"
      Chapitre = 5: Numero = 1
    Case "$J$17:$Q$17"
      Chapitre = 5: Numero = 2
    Case "$R$17:$Y$17"
      Chapitre = 5: Numero = 3
    Case "$B$20:$I$20"
      Chapitre = 6: Numero = 1
    Case "$J$20:$Q$20"
      Chapitre = 6: Numero = 2
    Case "$R$20:$Y$20"
      Chapitre = 6: Numero = 3
  End Select

  If Chapitre > 0 Then
    With Sheets("liste_codee")
      For I = 1 To 26
        For J = 1 To 30
          If .Cells(I, J).Interior.ColorIndex = 48 Then
            .Cells(I, J).Interior.ColorIndex = 0
          End If
        Next J
      Next I
      .Range("AF4") = "chap." & Chapitre
      .Columns("AF").Hidden = True
      .Range("AG4") = Numero
      .Columns("AG").Hidden = True
      .Select
      MsgBox Debut(Numero) & Chapitre & " en double cliquant dessus puis clique sur la case rouge"
    End With
  End If
 End Sub

Merci beaucoup pour cette simplification qui ne nécessite effectivement pas de fonctions mais juste des variables.

Pourrais-je te soumettre un autre problème de simplification mais cette fois sur plusieurs pages identiques ?

Bonjour

cartiers a écrit :

Pourrais-je te soumettre un autre problème de simplification mais cette fois sur plusieurs pages identiques ?

Tu peux bien sur toujours demander

Mais cette fois avec un fichier, car c'est plus facile de tester après si les modifications faites ne plantent pas le programme

Et pas sur que ce soit moi que te réponde

Rechercher des sujets similaires à "simplifier vba fonction"