OVH Cloud OVH Cloud

tester la couler de remplissage d'une cellule

22 réponses
Avatar
Arno
Bonjour,

je souhaite mettre une formule permettant de tester la couler de remplissage
d'une cellule.

Cela se rapporte à une liste téléphonique sous XL.
J'ai la liste à partire de la ligne 10.

de A1 à A3, j'ai des valeur texte dans des cellules colorées.
A1="toto" (remplissage rouge)
A2="tata" (remplissage vert)
A3="titi" (remplissage jaune)


La formule que je cherche est inscrite dans la colone A, à partir de la
ligne 10. Si la couleur de remplissage de B10 est jaune, alors A10 renvoi la
valeur présente dans A3, puisque A3 est jaune.

Merci pour votre aide.

Arno

10 réponses

1 2 3
Avatar
FFO
Rebonjour à toi

De la ligne 10 à 150 utilises ces lignes de code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In Range("A10", "A150")
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex = 6 Then
Range("A" & c.Row) = Range("A3")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex = 4 Then
Range("A" & c.Row) = Range("A2")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex = 3 Then
Range("A" & c.Row) = Range("A1")
Else
Range("A" & c.Row) = ""
End If
End If
End If
Next
End Sub

Si tu veux modifier la plage des lignes actualises cette partie :

("A10", "A150")

Attention l'importance de cette plage peux engendrer une certaine lenteur de
fonctionnement

Fais des essais et dis moi !!!!!
Avatar
FFO
Rebonjour à toi

Pour avoir la liste des couleurs mets dans un module ces lignes de code :

On Error Resume Next
For i = 1 To 100
Range("A" & i).Interior.ColorIndex = i
Range("B" & i) = i
Next

Tu obtiendras aprés son exécution en colonne A les couleurs en colonne B les
codes correspondants

Chez moi la dernière couleur porte le code 46

J'ai recherché dans cette procédure les couleurs du code 1 à 100

A toi de voir si cette plage est suffisante les derniers codes n'ayant
aucune correspondance de couleur

Donnes moi des nouvelles !!!!!
Avatar
Arno
All right !!!
Ca fonctionne...

Merci et à la prochaine.

"FFO" a écrit :

Rebonjour à toi

De la ligne 10 à 150 utilises ces lignes de code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In Range("A10", "A150")
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex = 6 Then
Range("A" & c.Row) = Range("A3")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex = 4 Then
Range("A" & c.Row) = Range("A2")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex = 3 Then
Range("A" & c.Row) = Range("A1")
Else
Range("A" & c.Row) = ""
End If
End If
End If
Next
End Sub

Si tu veux modifier la plage des lignes actualises cette partie :

("A10", "A150")

Attention l'importance de cette plage peux engendrer une certaine lenteur de
fonctionnement

Fais des essais et dis moi !!!!!



Avatar
FFO
Rebonjour Arno

Heureux que celà te convienne

Tu peux t'affranchir des codes couleurs et te baser sur la couleur elle même
des cellules A1,A2,A3 pour ramener la bonne valeur en fonction de la couleur
de la ligne avec mon code modifié ainsi :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In Range("A10", "A150")
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A3").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A3")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A2").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A2")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A1").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A1")
Else
Range("A" & c.Row) = ""
End If
End If
End If
Next
End Sub

Peut être mieux pour toi

Dis moi !!!!!!
Avatar
Arno
Bonjour,

le code proposé a des erreurs de syntaxe (selon l'éditeur VB)...
C'est ce que j'obtiens en copiant et collant cela à la place de l'ancien code.

"FFO" a écrit :

Rebonjour Arno

Heureux que celà te convienne

Tu peux t'affranchir des codes couleurs et te baser sur la couleur elle même
des cellules A1,A2,A3 pour ramener la bonne valeur en fonction de la couleur
de la ligne avec mon code modifié ainsi :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In Range("A10", "A150")
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A3").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A3")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A2").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A2")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A1").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A1")
Else
Range("A" & c.Row) = ""
End If
End If
End If
Next
End Sub

Peut être mieux pour toi

Dis moi !!!!!!



Avatar
Modeste
Bonsour® FFO avec ferveur ;o))) vous nous disiez :

Pour avoir la liste des couleurs mets dans un module ces lignes de
code :

On Error Resume Next
For i = 1 To 100
Range("A" & i).Interior.ColorIndex = i
Range("B" & i) = i
Next

Tu obtiendras aprés son exécution en colonne A les couleurs en
colonne B les codes correspondants

Chez moi la dernière couleur porte le code 46

J'ai recherché dans cette procédure les couleurs du code 1 à 100



100 ?????
il n'y a que 56 ColorIndex dont 13 redondants
;o)))
Avatar
Arno
Bonjour Modeste,

FFO m'indiquait :

Tu peux t'affranchir des codes couleurs et te baser sur la couleur elle même
des cellules A1,A2,A3 pour ramener la bonne valeur en fonction de la couleur
de la ligne avec mon code modifié ainsi :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In Range("A10", "A150")
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A3").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A3")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A2").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A2")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A1").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A1")
Else
Range("A" & c.Row) = ""
End If
End If
End If
Next
End Sub




Or, quand je mets ce code dans la feuille avec l'éditeur VB, l'appli
m'inidque qu'il y a un pb et positionne le curseur sur Then....


N'étant absoluement pas ferru de VB, j'ai demandé de l'aide à nouveau, mais
il semble que FFO soit passé sur un autre sujet.

Vous sauriez m'aider?


"Modeste" a écrit :

Bonsour® FFO avec ferveur ;o))) vous nous disiez :

> Pour avoir la liste des couleurs mets dans un module ces lignes de
> code :
>
> On Error Resume Next
> For i = 1 To 100
> Range("A" & i).Interior.ColorIndex = i
> Range("B" & i) = i
> Next
>
> Tu obtiendras aprés son exécution en colonne A les couleurs en
> colonne B les codes correspondants
>
> Chez moi la dernière couleur porte le code 46
>
> J'ai recherché dans cette procédure les couleurs du code 1 à 100

100 ?????
il n'y a que 56 ColorIndex dont 13 redondants
;o)))
.



Avatar
isabelle
bonjour Arno,

les 2 lignes suivante :

If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A3").Interior.ColorIndex Then

sont en fait une seule ligne
lors de la copie de code sur le forum il arrive souvent que les lignes soient couper
remet la sur une seule ligne et ce, sur au 3 endroits semblable dans la macro.


isabelle

Arno a écrit :
Bonjour Modeste,

FFO m'indiquait :


Tu peux t'affranchir des codes couleurs et te baser sur la couleur elle même
des cellules A1,A2,A3 pour ramener la bonne valeur en fonction de la couleur
de la ligne avec mon code modifié ainsi :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In Range("A10", "A150")
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A3").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A3")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A2").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A2")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A1").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A1")
Else
Range("A" & c.Row) = ""
End If
End If
End If
Next
End Sub





Or, quand je mets ce code dans la feuille avec l'éditeur VB, l'appli
m'inidque qu'il y a un pb et positionne le curseur sur Then....


N'étant absoluement pas ferru de VB, j'ai demandé de l'aide à nouveau, mais
il semble que FFO soit passé sur un autre sujet.

Vous sauriez m'aider?


"Modeste" a écrit :


Bonsour® FFO avec ferveur ;o))) vous nous disiez :


Pour avoir la liste des couleurs mets dans un module ces lignes de
code :

On Error Resume Next
For i = 1 To 100
Range("A" & i).Interior.ColorIndex = i
Range("B" & i) = i
Next

Tu obtiendras aprés son exécution en colonne A les couleurs en
colonne B les codes correspondants

Chez moi la dernière couleur porte le code 46

J'ai recherché dans cette procédure les couleurs du code 1 à 100



100 ?????
il n'y a que 56 ColorIndex dont 13 redondants
;o)))
.






Avatar
Arno
Bonjour,

Eh bien cela ne fonctionne pas...
le code (relatif à la page, et non pas dans une macro) tourne sans erreur.
En revanche, cela n'apporte aucun résultat.

Je reprécise mon besoin :


J'ai un tableau de contacts de A10 à E600.
A10 correspond à nom du commercial (A11 à A600 sont les cellules à remplir
grace à la fonction que nous mettons en place ici.
B10 correspond à nom de société
C10 correspond à nom interlocuteur
D10 correspond à num de tel
E10 mail

B1 (en jaune) contient la valeur "toto"
B2 (en bleu) contient la valeur "tata"
B3 (en rouge) contient la valeur "titi"
B4 (en vert) contient la valeur "tutu"

l'objectif est de reseigner la veleur des cellules A11 à A600 en fonction de
la couleur de la ligne considérée.
Si la ligne 11 est bleue, alors je renseinge la valeur de B2, soit tata dans
A11.


Après cela, je souhaite pouvoir faire des tris sur nom de sté, ou nom du
commercial... ou encore filtrer la liste avec la fonction filtrer.

Merci pour votre aide.

Arno

PS : j'ai changé de sté, et je souhaite garder mon compte. En revanche, je
n'accède plus au compte mail me servant d'identifiant. Par conséquent, je
n'ai pas les notification de réponse. Comment puis je changer l'adresse mail
de notification de réponse?






"isabelle" a écrit :

bonjour Arno,

les 2 lignes suivante :

If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A3").Interior.ColorIndex Then

sont en fait une seule ligne
lors de la copie de code sur le forum il arrive souvent que les lignes soient couper
remet la sur une seule ligne et ce, sur au 3 endroits semblable dans la macro.


isabelle

Arno a écrit :
> Bonjour Modeste,
>
> FFO m'indiquait :
>
>
>> Tu peux t'affranchir des codes couleurs et te baser sur la couleur elle même
>> des cellules A1,A2,A3 pour ramener la bonne valeur en fonction de la couleur
>> de la ligne avec mon code modifié ainsi :
>>
>> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>> For Each c In Range("A10", "A150")
>> If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
>> Range("A3").Interior.ColorIndex Then
>> Range("A" & c.Row) = Range("A3")
>> Else
>> If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
>> Range("A2").Interior.ColorIndex Then
>> Range("A" & c.Row) = Range("A2")
>> Else
>> If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
>> Range("A1").Interior.ColorIndex Then
>> Range("A" & c.Row) = Range("A1")
>> Else
>> Range("A" & c.Row) = ""
>> End If
>> End If
>> End If
>> Next
>> End Sub
>>
>
>
> Or, quand je mets ce code dans la feuille avec l'éditeur VB, l'appli
> m'inidque qu'il y a un pb et positionne le curseur sur Then....
>
>
> N'étant absoluement pas ferru de VB, j'ai demandé de l'aide à nouveau, mais
> il semble que FFO soit passé sur un autre sujet.
>
> Vous sauriez m'aider?
>
>
> "Modeste" a écrit :
>
>
>> Bonsour® FFO avec ferveur ;o))) vous nous disiez :
>>
>>
>>> Pour avoir la liste des couleurs mets dans un module ces lignes de
>>> code :
>>>
>>> On Error Resume Next
>>> For i = 1 To 100
>>> Range("A" & i).Interior.ColorIndex = i
>>> Range("B" & i) = i
>>> Next
>>>
>>> Tu obtiendras aprés son exécution en colonne A les couleurs en
>>> colonne B les codes correspondants
>>>
>>> Chez moi la dernière couleur porte le code 46
>>>
>>> J'ai recherché dans cette procédure les couleurs du code 1 à 100
>>>
>> 100 ?????
>> il n'y a que 56 ColorIndex dont 13 redondants
>> ;o)))
>> .
>>
>>
.



Avatar
isabelle
peut tu mettre ton fichier sur ci-joint ?

isabelle

Arno a écrit :
Bonjour,

Eh bien cela ne fonctionne pas...
le code (relatif à la page, et non pas dans une macro) tourne sans erreur.
En revanche, cela n'apporte aucun résultat.

Je reprécise mon besoin :


J'ai un tableau de contacts de A10 à E600.
A10 correspond à nom du commercial (A11 à A600 sont les cellules à remplir
grace à la fonction que nous mettons en place ici.
B10 correspond à nom de société
C10 correspond à nom interlocuteur
D10 correspond à num de tel
E10 mail

B1 (en jaune) contient la valeur "toto"
B2 (en bleu) contient la valeur "tata"
B3 (en rouge) contient la valeur "titi"
B4 (en vert) contient la valeur "tutu"

l'objectif est de reseigner la veleur des cellules A11 à A600 en fonction de
la couleur de la ligne considérée.
Si la ligne 11 est bleue, alors je renseinge la valeur de B2, soit tata dans
A11.


Après cela, je souhaite pouvoir faire des tris sur nom de sté, ou nom du
commercial... ou encore filtrer la liste avec la fonction filtrer.

Merci pour votre aide.

Arno

PS : j'ai changé de sté, et je souhaite garder mon compte. En revanche, je
n'accède plus au compte mail me servant d'identifiant. Par conséquent, je
n'ai pas les notification de réponse. Comment puis je changer l'adresse mail
de notification de réponse?






"isabelle" a écrit :


bonjour Arno,

les 2 lignes suivante :

If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A3").Interior.ColorIndex Then

sont en fait une seule ligne
lors de la copie de code sur le forum il arrive souvent que les lignes soient couper
remet la sur une seule ligne et ce, sur au 3 endroits semblable dans la macro.


isabelle

Arno a écrit :

Bonjour Modeste,

FFO m'indiquait :



Tu peux t'affranchir des codes couleurs et te baser sur la couleur elle même
des cellules A1,A2,A3 pour ramener la bonne valeur en fonction de la couleur
de la ligne avec mon code modifié ainsi :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In Range("A10", "A150")
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A3").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A3")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A2").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A2")
Else
If Rows("" & c.Row & ":" & c.Row & "").Interior.ColorIndex =
Range("A1").Interior.ColorIndex Then
Range("A" & c.Row) = Range("A1")
Else
Range("A" & c.Row) = ""
End If
End If
End If
Next
End Sub




Or, quand je mets ce code dans la feuille avec l'éditeur VB, l'appli
m'inidque qu'il y a un pb et positionne le curseur sur Then....


N'étant absoluement pas ferru de VB, j'ai demandé de l'aide à nouveau, mais
il semble que FFO soit passé sur un autre sujet.

Vous sauriez m'aider?


"Modeste" a écrit :



Bonsour® FFO avec ferveur ;o))) vous nous disiez :



Pour avoir la liste des couleurs mets dans un module ces lignes de
code :

On Error Resume Next
For i = 1 To 100
Range("A" & i).Interior.ColorIndex = i
Range("B" & i) = i
Next

Tu obtiendras aprés son exécution en colonne A les couleurs en
colonne B les codes correspondants

Chez moi la dernière couleur porte le code 46

J'ai recherché dans cette procédure les couleurs du code 1 à 100




100 ?????
il n'y a que 56 ColorIndex dont 13 redondants
;o)))
.







.






1 2 3