XL pour MAC boucle couleur

Delorme

XLDnaute Occasionnel
bonjour à tous
debutant mais passionné d'excel , j'ai un problème sur une boucle que je souhaite faire pour afficher des couleurs excel
2 colonnes a et b
1ere colonne a codes couleurs (1 2 3 4 5 6 est
2eme colonne b en faisant ma macro vba, je souhaite afficher dans la colonne b la couleur des codes colonne a
mon essai non fructueux
Sub colori()
Dim mavariable As Variant
Dim col, lig As Variant
col = 1
lig = 1
mavariable = 8
Range("a1").Select
While ActiveCell <> ""
If ActiveCell = mavariable Then
Range("col,lig").Interior.ColorIndex = Range("col,lig").Value (ligne refusée)
col = col + 1
lig = lig + 1
mavariable = mavariable + 1
End If
ActiveCell.Offset(1, 0).Select
'mavariable = mavariable + 1
Wend
End Sub

Help svp
Michel
 

Delorme

XLDnaute Occasionnel
@Delorme (Bonjour)
Tu as testé la macro que j'ai posté dans le message#13 ?

Tu peux également tester celle-ci. Merci
Et me redire le résultat de ton test.
VB:
Sub couleurs_B()
Dim i&, lig&, col&
lig = 2: col = 2
    For i = 1 To 56
        With Cells(lig, col)
            .Value = i
            .Interior.ColorIndex = i
            .Font.Color = vbWhite
            .Font.Bold = True
            .HorizontalAlignment = xlCenter
       End With
        If i > 1 And i Mod 8 = 0 Then
            col = col + 1
            lig = 2
            Else
            lig = lig + 1
        End If
Next
[B2].CurrentRegion.Borders.Value = 1
End Sub
les deux marchent
formidable
merci
 

Delorme

XLDnaute Occasionnel
@Delorme (Bonjour)
Tu as testé la macro que j'ai posté dans le message#13 ?

Tu peux également tester celle-ci. Merci
Et me redire le résultat de ton test.
VB:
Sub couleurs_B()
Dim i&, lig&, col&
lig = 2: col = 2
    For i = 1 To 56
        With Cells(lig, col)
            .Value = i
            .Interior.ColorIndex = i
            .Font.Color = vbWhite
            .Font.Bold = True
            .HorizontalAlignment = xlCenter
       End With
        If i > 1 And i Mod 8 = 0 Then
            col = col + 1
            lig = 2
            Else
            lig = lig + 1
        End If
Next
[B2].CurrentRegion.Borders.Value = 1
End Sub
les deux marchent
impec
juste j'aurais souhaite rentre moi même les numéros de couleur de la colonne A
et non pas lister toutes les couleurs
Exemple colonne A A1=5
A2=8
A3= 45 et voir seulement ces couleurs affichees en actionnant la macro
merci
 

Staple1600

XLDnaute Barbatruc
Re

Dans ce cas, utilises le code ci-dessous
A mettre dans le code de la feuille (pas dans un module standard)
(Clic-droit sur l'onglet et Visualiser le code)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:A56"), Target) Is Nothing Then
Select Case Target.Value
Case 1 To 56
Target.Interior.ColorIndex = Target.Value
Case Else
Exit Sub
End Select
End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Re,

@Delorme
Comme expliqué il faut la mettre dans le module de la feuille
Dans Excel, faire un clic-droit sur l'onglet (en bas) et choisir Visualiser le code
Exemple ici sur un Excel Windows
3.png

C'est dans la fenêtre blanche qui s'ouvrira qu'il faut copier ma dernière macro.

Ensuite, quand tu saisiras un nombre entre 1 et 56 dans la colonne A
(dans les cellules A1 à A56), le changement de couleur sera automatique.
 

Staple1600

XLDnaute Barbatruc
@Delorme
Pour un affichage dans de la couleur en B
Utilises cette versions
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:A56"), Target) Is Nothing Then
Select Case Target.Value
Case 1 To 56
Target.Offset(, 1).Interior.ColorIndex = Target.Value
Case Else
Exit Sub
End Select
End If
End Sub

NB:
Private Sub Worksheet_Change(ByVal Target As Range)
C'est ce qu'on appelle une procédure évènementielle (liée à la feuille)
Donc le code VBA est dans le module de la feuille concernée
(Pas dans ce qu'on appelle un module standard)
 

Delorme

XLDnaute Occasionnel
@Delorme
Pour un affichage dans de la couleur en B
Utilises cette versions
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:A56"), Target) Is Nothing Then
Select Case Target.Value
Case 1 To 56
Target.Offset(, 1).Interior.ColorIndex = Target.Value
Case Else
Exit Sub
End Select
End If
End Sub

NB:
Private Sub Worksheet_Change(ByVal Target As Range)
C'est ce qu'on appelle une procédure évènementielle (liée à la feuille)
Donc le code VBA est dans le module de la feuille concernée
(Pas dans ce qu'on appelle un module standard)
 

Discussions similaires