XL 2010 MEFC selon plusieurs lignes

  • Initiateur de la discussion Initiateur de la discussion carlos
  • 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 !

carlos

XLDnaute Impliqué
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
 
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
 
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:
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.
 
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
 
- 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
5
Affichages
705
Réponses
1
Affichages
652
Réponses
3
Affichages
563
Retour