"Case Is = "Facile": Selection.Interior.ColorIndex = 3

WorkHard

XLDnaute Nouveau
Salut à tous,

La première partie de ma macro fonctionne mais pas la deuxième. La deuxième partie ne fonctionne plus depuis que j'ai changé "Case Is = 1" en "Case Is = "Facile"" ...
Est ce que quelqu'un sait pourquoi? Je pensais que c'était c'était possible ou alors j'ai fais une erreur de syntaxe.

ChartObjects(1).Activate
For i = 5 To 11
ActiveChart.SeriesCollection(1).DataLabels(i - 4).Select
Select Case Cells(21, i)
Case Is = "Facile": Selection.Text = "Facile"
Case Is = "Moyen": Selection.Text = "Moyen"
Case Is = "Dur": Selection.Text = "Dur"
End Select
Next

For j = 5 To 11
ActiveChart.SeriesCollection(1).Points(j - 4).Select
Select Case Cells(21, j)
Case Is = "Facile": Selection.Interior.ColorIndex = 3
Case Is = "Moyen": Selection.Interior.ColorIndex = 4
Case Is = "Dur": Selection.Interior.ColorIndex = 5
End Select
Next

Merci pour votre aide.

A bientôt
 
G

Guest

Guest
Re : "Case Is = "Facile": Selection.Interior.ColorIndex = 3

Bonjour WorkHard,

A tester:

Code:
    For j = 5 To 11
        With ActiveChart.SeriesCollection(1).Points(j - 4)
            Select Case Cells(21, j)
            Case "Facile": .Interior.ColorIndex = 3
            Case "Moyen": .Interior.ColorIndex = 4
            Case "Dur": .Interior.ColorIndex = 5
            End Select
        End With
    Next

A+
 

Papou-net

XLDnaute Barbatruc
Re : "Case Is = "Facile": Selection.Interior.ColorIndex = 3

Bonsoir WorkHard,

As-tu essayé ainsi :

Code:
ChartObjects(1).Activate
For i = 5 To 11
ActiveChart.SeriesCollection(1).DataLabels(i - 4).Select
Select Case Cells(21, i)
Case "Facile"
Selection.Interior.ColorIndex = 3
Case "Moyen"
Selection.Interior.ColorIndex = 4
Case "Dur"
Selection.Text = Interior.ColorIndex = 5
End Select
Next

For j = 5 To 11
ActiveChart.SeriesCollection(1).Points(j - 4).Select
Select Case Cells(21, j)
Case "Facile"
Selection.Interior.ColorIndex = 3
Case "Moyen"
Selection.Interior.ColorIndex = 4
Case "Dur"
Selection.Interior.ColorIndex = 5
End Select
Next

Cordialement.
 
Dernière édition:

WorkHard

XLDnaute Nouveau
Re : "Case Is = "Facile": Selection.Interior.ColorIndex = 3

Salut Hasco et Papou-net,

Merci pour vos proposition.
Celle de Hasco bloque et indique qu'il maque une référence et celle de Papou-net ne bloque pas mais ne fonctionne pas. Par contre celle de Papou-net fonctionne lorsque ce n'est pas du texte et permet donc de réduire "Case is = ..." à "Case..." :eek:

A+
 

Papou-net

XLDnaute Barbatruc
Re : "Case Is = "Facile": Selection.Interior.ColorIndex = 3

Salut Hasco et Papou-net,

Merci pour vos proposition.
Celle de Hasco bloque et indique qu'il maque une référence et celle de Papou-net ne bloque pas mais ne fonctionne pas. Par contre celle de Papou-net fonctionne lorsque ce n'est pas du texte et permet donc de réduire "Case is = ..." à "Case..." :eek:

A+

Alors essaies ceci (sans garantie !) :

Code:
Select Case Cells(21, i)[COLOR="RoyalBlue"][B].Value[/B][/COLOR]

Cordialement.
 

WorkHard

XLDnaute Nouveau
Re : "Case Is = "Facile": Selection.Interior.ColorIndex = 3

Re,

Voici un fichier joint pour que vous puissiez mieux comprendre et essayer des trucs si ça vous dit.

Merci à vous.

A+
 

Pièces jointes

  • Classeur1.xlsm
    23.5 KB · Affichages: 76
  • Classeur1.xlsm
    23.5 KB · Affichages: 81
  • Classeur1.xlsm
    23.5 KB · Affichages: 74

WorkHard

XLDnaute Nouveau
Re : "Case Is = "Facile": Selection.Interior.ColorIndex = 3

Excusez moi, j'ai pas changer la macro de la première feuille. Prenez plutôt ce fichier.
 

Pièces jointes

  • Classeur1.xlsm
    23.4 KB · Affichages: 101
  • Classeur1.xlsm
    23.4 KB · Affichages: 123
  • Classeur1.xlsm
    23.4 KB · Affichages: 126
G

Guest

Guest
Re : "Case Is = "Facile": Selection.Interior.ColorIndex = 3

Bonsoir,

Avec un fichier tout va mieux,
Sur la base du deuxième fichier:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim obj
    For j = 5 To 11
        Set obj = ChartObjects(1).Chart.SeriesCollection(1).Points(j - 4)
        With obj.Fill
            Select Case Cells(21, j).Value
            Case 1: .ForeColor.SchemeColor = 5
            Case 2: .ForeColor.SchemeColor = 4
            Case 3: .ForeColor.SchemeColor = 12
            End Select
        End With
    Next
End Sub

Petite question: Pourquoi parcourir tous les points pour n'en changer q'un?
A+
 

WorkHard

XLDnaute Nouveau
Re : "Case Is = "Facile": Selection.Interior.ColorIndex = 3

Re,

En faite je veux utiliser des écritures à la place des chiffres, c'est à dire facile à la place de 1, moyen à la place de 2 et dur à la place de 3. Alors j'ai essayé :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim obj
For j = 5 To 11
Set obj = ChartObjects(1).Chart.SeriesCollection(1).Points(j - 4)
With obj.Fill
Select Case Cells(21, j).Value
Case "facile": .ForeColor.SchemeColor = 5
Case "moyen": .ForeColor.SchemeColor = 4
Case "dur": .ForeColor.SchemeColor = 12
End Select
End With
Next
End Sub

Mais ça ne fonctionne pas, par contre ça marche avec les chiffres (comme tu l'as écris).
C'est une façon différente d'écrire :

Private Sub Worksheet_Change(ByVal Target As Range)

ChartObjects(1).Activate
For j = 5 To 11
ActiveChart.SeriesCollection(1).Points(j - 4).Select
Select Case Cells(21, j)
Case 1: Selection.Interior.ColorIndex = 5
Case 2: Selection.Interior.ColorIndex = 4
Case 3: Selection.Interior.ColorIndex = 12
End Select
Next
End Sub

Cdt.
 
G

Guest

Guest
Re : "Case Is = "Facile": Selection.Interior.ColorIndex = 3

Re,

En plus Réduit et sans parcourt de tous les points:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("$E$21:$K$21")) Is Nothing Then Exit Sub
    With ChartObjects(1).Chart.SeriesCollection(1).Points(Target.Column - 4).Fill
        Select Case Target.Value
        Case 1: .ForeColor.SchemeColor = 5
        Case 2: .ForeColor.SchemeColor = 4
        Case 3: .ForeColor.SchemeColor = 12
        End Select
    End With
End Sub

Ce qui donne en 3 lignes:
Code:
    If Intersect(Target, Range("$E$21:$K$21")) Is Nothing Then Exit Sub
    If Target < 1 Or Target > 3 Then Exit Sub
    ChartObjects(1).Chart.SeriesCollection(1).Points(Target.Column - 4).Fill.ForeColor.SchemeColor = Array(5, 4, 12)(Target - 1)

A+
 
Dernière modification par un modérateur:

Discussions similaires

Réponses
11
Affichages
335

Statistiques des forums

Discussions
312 379
Messages
2 087 764
Membres
103 661
dernier inscrit
fcleves