Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 MEFC selon plusieurs lignes

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour,
J'ai en colonne A ces valeurs triées, j'aimerais mettre une MEFC en alternance pour marquer les changements de valeurs.
A
A
A
J
J
B
Psq
Psq
Psq
Psq
???
???
Résultat attendu par exemple si on joue sur la couleur de la police:
A
A
A

J
J
B
Psq
Psq
Psq
Psq
???
???

Remarque : il ne peut y avoir de formules intégrées dans la feuille car je la .clear.
Merci
Carlos
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Avec cette fonction perso, peut être :
VB:
Function ChangeQuandChange(Rng As Range) As Boolean
Dim T(), L&
If Rng.Rows.Count < 2 Then Exit Function
T = Rng.Value
ChangeQuandChange = False
For L = UBound(T, 1) To 2 Step -1
   ChangeQuandChange = ChangeQuandChange Xor T(L, 1) <> T(L - 1, 1)
   Next L
End Function
 

Dranreb

XLDnaute Barbatruc
Non vous n'avez pas compris. Là c'est =ChangeQuandChange(A$2:A2)
C'est à dire depuis la référence absolue à la première ligne ou la MeFC s'applique jusqu'à la référence relative à la ligne en cours, qui est toujours la même que la 1ère dans la formule à la définition de la MeFC, mais ça ne représente une seule cellule que pour la 1ère ligne.
 
Dernière édition:

carlos

XLDnaute Impliqué
Supporter XLD
Bonsoir,
j'ai du mal m'exprimer!
Sur le fichier joint, il y a ce que j'attends colorié mais avec formule dans cellule et ça qui fonctionne.
Je voudrais me passer des formules dans les cellules.
Merci
Carlos
 

Pièces jointes

  • Classeur2.xls
    36 KB · Affichages: 19

Dranreb

XLDnaute Barbatruc
La formule de votre MeFC n'est toujours pas bonne: =ChangeQuandChange(A1:A$2) au lieu de =ChangeQuandChange(A$2:A2)
La plage où elle s'applique est $A$2:$A$65536 et il faut qu'il prenne pour :
A2 : =ChangeQuandChange(A$2:A2)
A3 : =ChangeQuandChange(A$2:A3)
A4 : =ChangeQuandChange(A$2:A4)
etc.
Donc, pour la A2, et du coup pour l'intégralité de la MeFC, c'est cette seule et même cellule A2 deux fois mais avec référence relative à la ligne pour la répétition de droite seulement.
 

Dranreb

XLDnaute Barbatruc
Pour que la fonction soit vraie pour la 1ère ligne corrigez la comme ça :
VB:
Function ChangeQuandChange(Rng As Range) As Boolean
Dim T(), L&
ChangeQuandChange = True
If Rng.Rows.Count < 2 Then Exit Function
T = Rng.Value
For L = UBound(T, 1) To 2 Step -1
   ChangeQuandChange = ChangeQuandChange Xor T(L, 1) <> T(L - 1, 1)
   Next L
End Function
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…