XL pour MAC Test couleur (mise en forme conditionnelle) cellules non adjacentes (VBA)

  • Initiateur de la discussion Initiateur de la discussion Rolu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Rolu

XLDnaute Nouveau
Bonjour

Je suis novice en VBA et malgrès toutes mes recherche je sèche un peu, c'est pourquoi je vous demande un petit coup de main.

Je cherche à faire un test sur la couleur (mise en forme conditionnelle)de plusieurs cellules non adjacentes.

J'ai écris cela mais apparement cela ne fonctionne pas :
If [d4,e4,f4,g4,j4,k4,l4,m4,p4,q4,r4,s4,u4,v4,w4,x4,z4,aa4,ab4,ac4].Interior.ColorIndex = 4 Then End

Ai-je fais une erreur de syntaxe ?

Si quelqu'un a un idée je suis preneur.

Par avance merci
 
Solution
Re,
If [AG4].Interior.ColorIndex = 3 Then End
Cela fonctionne.
Non, cela ne marche pas. Vous lisez la couleur de la cellule et non la couleur de la MFC.

Regardez cette PJ.
La plage a comme couleur Jaune ( colorindex=6 ) et la MFC met en bleu les cellules qui contiennent 1.
Vous verrez qu'avec la macro ci dessous, toutes les couleurs de la plage valent 6, et la MFC n'est pas prise en compte.
VB:
Sub couleur()
    Dim L%
    For L = 5 To 13
        Range("D" & L) = Range("C" & L).Interior.ColorIndex
    Next L
End Sub
Bonjour Rolu et bienvenu sur XLD,
Outre cette syntaxe qui n'est pas correcte, il n'est pas possible de détecter une MFC avec interior.color.
La MFC vient en supplément de la couleur de la cellule, "par dessus" et non à la place.
Deux solutions :
- La détection des MFC, vous trouverez des ex sur XLD, mais ce sont des usines à gaz
- Recreer les conditions des MFC en VBA.
Si les conditions des MFC son simples alors la seconde solution l'est tout autant.
 
Bonjour @Rolu

Edit : Bonjour Sylvain

Petit rappel comment fonctionne d'une manière générale

If .... then

Si ma conditioni alors ==> If ma condition then
Je fais ceci ==> Blablabla.... (ma condition est vrai)
Fin de ma condition ==> End if

Après on peut compliquer .....

Si ma condition alors ==> If ma condition then
Je fais ceci ==> Blablabla.... (ma condition est vrai)
Ma condition est fausse ==> Else
Je fais plutot cela ==> Autre blablabla...... (ma condition est fausse)
Fin de ma condition ==> End if

@Phil69970
 
Dernière édition:
Bonjour Rolu et bienvenu sur XLD,
Outre cette syntaxe qui n'est pas correcte, il n'est pas possible de détecter une MFC avec interior.color.
La MFC vient en supplément de la couleur de la cellule, "par dessus" et non à la place.
Deux solutions :
- La détection des MFC, vous trouverez des ex sur XLD, mais ce sont des usines à gaz
- Recreer les conditions des MFC en VBA.
Si les conditions des MFC son simples alors la seconde solution l'est tout autant.
Bonjour Sylvanu

Merci de ta réponse.

Par contre tu me dis qu'il n'est pas possible de détecter une MFC or quand je fais le test sur une seule cellule avec le code qui suit :
If [AG4].Interior.ColorIndex = 3 Then End

Cela fonctionne.

Mon souci est la syntaxe pour déclarer plusieurs cellule non adjacentes (cela n'est peut-être pas possible ?)
 
Re,
If [AG4].Interior.ColorIndex = 3 Then End
Cela fonctionne.
Non, cela ne marche pas. Vous lisez la couleur de la cellule et non la couleur de la MFC.

Regardez cette PJ.
La plage a comme couleur Jaune ( colorindex=6 ) et la MFC met en bleu les cellules qui contiennent 1.
Vous verrez qu'avec la macro ci dessous, toutes les couleurs de la plage valent 6, et la MFC n'est pas prise en compte.
VB:
Sub couleur()
    Dim L%
    For L = 5 To 13
        Range("D" & L) = Range("C" & L).Interior.ColorIndex
    Next L
End Sub
 

Pièces jointes

Re,

Non, cela ne marche pas. Vous lisez la couleur de la cellule et non la couleur de la MFC.

Regardez cette PJ.
La plage a comme couleur Jaune ( colorindex=6 ) et la MFC met en bleu les cellules qui contiennent 1.
Vous verrez qu'avec la macro ci dessous, toutes les couleurs de la plage valent 6, et la MFC n'est pas prise en compte.
VB:
Sub couleur()
    Dim L%
    For L = 5 To 13
        Range("D" & L) = Range("C" & L).Interior.ColorIndex
    Next L
End Sub
Autant pour moi effectivement je testais la couleur de la cellule et non de la MFC

Encore merci, il va falloir que je trouve une autre solution
 
Bonjour,
Ca, je ne connaissais pas. Mais sur mon PC cela génère systématiquement une erreur.
Quelle version VBA avez vous ? on l'obtient ici :
1646129059755.png

Moi, je suis en 6.3. peut être est ce dû à cela.
Pouvez vous tester ma PJ ?
Moi, la colonne D est vide car il génère une erreur sur cette instruction. Merci.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
62
Réponses
2
Affichages
477
Retour