Calvus
XLDnaute Barbatruc
Bonjour le forum,
Comment faire pour utiliser les valeurs d'Arrays déclarés dans une macro avec un Select Case ?
Par exemple ceci fonctionne :
	
	
	
	
	
		
Mais si je fais appel au nom de l'Array, évidemment ça "bugue".
	
	
	
	
	
		
J'ai mis le code intégral dans le fichier exemple, dont le but est de colorer des groupes de shapes.
La 1ère macro fonctionne, appelant directement chaque cas
La 2nde plante pour les raisons invoquées plus haut.
Voici les 2 codes :
	
	
	
	
	
		
	
	
	
	
	
		
J'aimerais évidemment utiliser le 2nd code.
Merci et bonne journée
	
		
			
		
		
	
				
			Comment faire pour utiliser les valeurs d'Arrays déclarés dans une macro avec un Select Case ?
Par exemple ceci fonctionne :
		VB:
	
	
	Cadre1 = Array("01", "02", "03", "04")
            Select Case sh.Name
                Case "01", "02", "03", "04"
	Mais si je fais appel au nom de l'Array, évidemment ça "bugue".
		Code:
	
	
	Cadre1 = Array("01", "02", "03", "04")
            Select Case sh.Name
                Case Cadre1
	J'ai mis le code intégral dans le fichier exemple, dont le but est de colorer des groupes de shapes.
La 1ère macro fonctionne, appelant directement chaque cas
La 2nde plante pour les raisons invoquées plus haut.
Voici les 2 codes :
		Code:
	
	
	Sub Colorer()
Dim i As Integer, j As Integer, t, f As Worksheet, t1, f1 As Worksheet
Dim Cadre1, Cadre2, Cadre3
Cadre1 = Array("01", "02", "03", "04")
Cadre2 = Array("05", "06", "07", "08")
Cadre3 = Array("09", "10", "11", "12")
    Dim sh As Shape, couleur1, couleur2, couleur3, couleur4, couleur5
    couleur1 = RGB(180, 196, 100)
    couleur2 = RGB(180, 226, 120)
    couleur3 = RGB(140, 186, 160)
   
    For Each sh In ActiveSheet.Shapes
        If IsNumeric(sh.Name) Then
            Select Case sh.Name
                Case "01", "02", "03", "04"
                    sh.Fill.ForeColor.RGB = couleur1
                Case "05", "06", "07", "08"
                    sh.Fill.ForeColor.RGB = couleur2
                Case "09", "10", "11", "12"
                    sh.Fill.ForeColor.RGB = couleur3
            End Select
        End If
    Next sh
End Sub
	
		Code:
	
	
	Sub Colorer_2()
Dim i As Integer, j As Integer, t, f As Worksheet, t1, f1 As Worksheet
Dim Cadre1, Cadre2, Cadre3
Cadre1 = Array("01", "02", "03", "04")
Cadre2 = Array("05", "06", "07", "08")
Cadre3 = Array("09", "10", "11", "12")
    Dim sh As Shape, couleur1, couleur2, couleur3, couleur4, couleur5
    couleur1 = RGB(180, 196, 100)
    couleur2 = RGB(180, 226, 120)
    couleur3 = RGB(140, 186, 160)
   
    For Each sh In ActiveSheet.Shapes
        If IsNumeric(sh.Name) Then
            Select Case sh.Name
                Case Cadre1
                    sh.Fill.ForeColor.RGB = couleur1
                Case Cadre2
                    sh.Fill.ForeColor.RGB = couleur2
                Case Cadre3
                    sh.Fill.ForeColor.RGB = couleur3
            End Select
        End If
    Next sh
End Sub
	J'aimerais évidemment utiliser le 2nd code.
Merci et bonne journée