Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

doublon colonnes

24 réponses
Avatar
pierre
Bonjour

J'utilise mfc avec la formule NB.SI($A$3:$D$90;A3)>1 pour détecter les
doublons
j'aimerais avoir un résultat positif uniquement si la valeur est presente
dans les 4 colonnes
J'ai augmenté >3 mais cela ne garantit pas sa présence dans toutes les
colonnes
merci pour votre aide

Pierre

10 réponses

1 2 3
Avatar
MichD
La formule proposée répond à cette question originale :

---------------------
j'aimerais avoir un résultat positif uniquement si
la valeur est présente dans les 4 colonnes
---------------------

La valeur recherchée est dans la cellule A3

=SOMME(SI(NB.SI(DECALER(A1;0;LIGNE(INDIRECT("1:4"))-1;NBVAL(A:A);1);A3)>0;1))=4

Voir l'exemple : http://cjoint.com/?AFBtTITLO7v

N.B. Il faut oublier les premières formules que j'ai présentées,
Il me semble avoir fait amende honorable à leur sujet.

--------------------------------------------
MichD
Avatar
Jacky
Re...

Comment fais-tu pour peinturlurer tous les doublons dans ton exemple ?

--
Salutations
JJ


"MichD" a écrit dans le message de news: iuafn2$rh7$
La formule proposée répond à cette question originale :

---------------------
j'aimerais avoir un résultat positif uniquement si
la valeur est présente dans les 4 colonnes
---------------------

La valeur recherchée est dans la cellule A3

=SOMME(SI(NB.SI(DECALER(A1;0;LIGNE(INDIRECT("1:4"))-1;NBVAL(A:A);1);A3)>0;1))=4

Voir l'exemple : http://cjoint.com/?AFBtTITLO7v

N.B. Il faut oublier les premières formules que j'ai présentées,
Il me semble avoir fait amende honorable à leur sujet.

--------------------------------------------
MichD


Avatar
MichD
Faut-il révéler tous ses secrets ? ;-)

http://cjoint.com/?AFBwQXBo0Ty

A ) sélectionne tout le tableau : A1:D10
B ) Tu adaptes la formule un tant soit peu comme ceci:
=SOMME(SI(NB.SI(DECALER($A$1;0;LIGNE(INDIRECT("1:4"))-1;NBVAL($A:$A);1);A1)>0;1))=4
C ) Tu choisis le format de cellule à appliquer lorsque la formule renvoie "Vrai"
D ) Et surprise, ça marche !
;-)




MichD
--------------------------------------------
"Jacky" a écrit dans le message de groupe de discussion : iuaju6$6q5$

Re...

Comment fais-tu pour peinturlurer tous les doublons dans ton exemple ?

--
Salutations
JJ


"MichD" a écrit dans le message de news: iuafn2$rh7$
La formule proposée répond à cette question originale :

---------------------
j'aimerais avoir un résultat positif uniquement si
la valeur est présente dans les 4 colonnes
---------------------

La valeur recherchée est dans la cellule A3

=SOMME(SI(NB.SI(DECALER(A1;0;LIGNE(INDIRECT("1:4"))-1;NBVAL(A:A);1);A3)>0;1))=4

Voir l'exemple : http://cjoint.com/?AFBtTITLO7v

N.B. Il faut oublier les premières formules que j'ai présentées,
Il me semble avoir fait amende honorable à leur sujet.

--------------------------------------------
MichD


Avatar
MichD
Et si tu ne veux pas appliquer la mise en forme conditionnelle à la ligne de titre : A1:D1

Tu sélectionnes le tableau : A2:D10 et tu utilises cette formule :
=SOMME(SI(NB.SI(DECALER($A$1;1;LIGNE(INDIRECT("1:4"))-1;NBVAL($A:$A);1);A2)>0;1))=4

Comme la formule utilise la fonction decaler() pour délimiter la plage, on doit l'adapter
légèrement selon ce que l'on désire. Si le tableau avait 7, 8, ou 10 colonnes, on pourrait
adapter la formule rapidement en modifiant le 4 dans "LIGNE(INDIRECT("1:4"))-1" pour
le nombre de colonnes du tableau que l'on a.
Par exemple, dans le cas d'un tableau à 5 colonnes, la dernière formule deviendrait :
=SOMME(SI(NB.SI(DECALER($A$1;1;LIGNE(INDIRECT("1:5"))-1;NBVAL($A:$A);1);A2)>0;1))=5




MichD
--------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : iuaq8l$nrf$

Faut-il révéler tous ses secrets ? ;-)

http://cjoint.com/?AFBwQXBo0Ty

A ) sélectionne tout le tableau : A1:D10
B ) Tu adaptes la formule un tant soit peu comme ceci:
=SOMME(SI(NB.SI(DECALER($A$1;0;LIGNE(INDIRECT("1:4"))-1;NBVAL($A:$A);1);A1)>0;1))=4
C ) Tu choisis le format de cellule à appliquer lorsque la formule renvoie "Vrai"
D ) Et surprise, ça marche !
;-)




MichD
--------------------------------------------
"Jacky" a écrit dans le message de groupe de discussion : iuaju6$6q5$

Re...

Comment fais-tu pour peinturlurer tous les doublons dans ton exemple ?

--
Salutations
JJ


"MichD" a écrit dans le message de news: iuafn2$rh7$
La formule proposée répond à cette question originale :

---------------------
j'aimerais avoir un résultat positif uniquement si
la valeur est présente dans les 4 colonnes
---------------------

La valeur recherchée est dans la cellule A3

=SOMME(SI(NB.SI(DECALER(A1;0;LIGNE(INDIRECT("1:4"))-1;NBVAL(A:A);1);A3)>0;1))=4

Voir l'exemple : http://cjoint.com/?AFBtTITLO7v

N.B. Il faut oublier les premières formules que j'ai présentées,
Il me semble avoir fait amende honorable à leur sujet.

--------------------------------------------
MichD


Avatar
Jacky
Re..
Et si tu ne veux pas appliquer la mise en forme conditionnelle à la ligne de titre : A1:D1


Oui, cela m'a induit en erreur
En décortiquant la formule j'avais trouvé.
C'était un joli casse tête :-))
Comme le demandeur commence à la ligne 3, je pense que
=SOMME(SI(NB.SI(DECALER($A$1;2;LIGNE(INDIRECT("1:4"))-1;NBVAL($A:$A);1);A3)>0;1))=4
devrait lui convenir
Mais il a déjà trouvé son bonheur, et comme dirait "Modeste"
Tout le reste n'est que............
--
Salutations
JJ


"MichD" a écrit dans le message de news: iuasqo$uhd$
Et si tu ne veux pas appliquer la mise en forme conditionnelle à la ligne de titre : A1:D1

Tu sélectionnes le tableau : A2:D10 et tu utilises cette formule :
=SOMME(SI(NB.SI(DECALER($A$1;1;LIGNE(INDIRECT("1:4"))-1;NBVAL($A:$A);1);A2)>0;1))=4

Comme la formule utilise la fonction decaler() pour délimiter la plage, on doit l'adapter
légèrement selon ce que l'on désire. Si le tableau avait 7, 8, ou 10 colonnes, on pourrait
adapter la formule rapidement en modifiant le 4 dans "LIGNE(INDIRECT("1:4"))-1" pour
le nombre de colonnes du tableau que l'on a.
Par exemple, dans le cas d'un tableau à 5 colonnes, la dernière formule deviendrait :
=SOMME(SI(NB.SI(DECALER($A$1;1;LIGNE(INDIRECT("1:5"))-1;NBVAL($A:$A);1);A2)>0;1))=5




MichD
--------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : iuaq8l$nrf$

Faut-il révéler tous ses secrets ? ;-)

http://cjoint.com/?AFBwQXBo0Ty

A ) sélectionne tout le tableau : A1:D10
B ) Tu adaptes la formule un tant soit peu comme ceci:
=SOMME(SI(NB.SI(DECALER($A$1;0;LIGNE(INDIRECT("1:4"))-1;NBVAL($A:$A);1);A1)>0;1))=4
C ) Tu choisis le format de cellule à appliquer lorsque la formule renvoie "Vrai"
D ) Et surprise, ça marche !
;-)




MichD
--------------------------------------------
"Jacky" a écrit dans le message de groupe de discussion : iuaju6$6q5$

Re...

Comment fais-tu pour peinturlurer tous les doublons dans ton exemple ?

--
Salutations
JJ


"MichD" a écrit dans le message de news: iuafn2$rh7$
La formule proposée répond à cette question originale :

---------------------
j'aimerais avoir un résultat positif uniquement si
la valeur est présente dans les 4 colonnes
---------------------

La valeur recherchée est dans la cellule A3

=SOMME(SI(NB.SI(DECALER(A1;0;LIGNE(INDIRECT("1:4"))-1;NBVAL(A:A);1);A3)>0;1))=4

Voir l'exemple : http://cjoint.com/?AFBtTITLO7v

N.B. Il faut oublier les premières formules que j'ai présentées,
Il me semble avoir fait amende honorable à leur sujet.

--------------------------------------------
MichD





Avatar
Maude Este
Bonsour®

Schnockle a écrit
Mais il a déjà trouvé son bonheur, et comme dirait "Modeste"
Tout le reste n'est que............


;o)))
http://www.cijoint.fr/cjlink.php?file=cj201106/cijZa4Rxzm.xls
Avatar
pierre
Bonsoir

merci que du bonheur toutes ses formules

Pierre

"Maude Este" a écrit dans le message de news:
iuc3k0$d0u$
Bonsour®

Schnockle a écrit
Mais il a déjà trouvé son bonheur, et comme dirait "Modeste"
Tout le reste n'est que............


;o)))
http://www.cijoint.fr/cjlink.php?file=cj201106/cijZa4Rxzm.xls
Avatar
Jacky
Re...
merci que du bonheur toutes ses formules


Certes, mais présentent un inconvénient et non des moindres,
toutes les cellules de la plage doivent être renseignées (pas de cellule vide)
Ce qui n'est pas le cas de celle que j'ai proposé.

--
Salutations
JJ


"pierre" a écrit dans le message de news: 4e0a30ef$0$14657$
Bonsoir

merci que du bonheur toutes ses formules

Pierre

"Maude Este" a écrit dans le message de news: iuc3k0$d0u$
Bonsour®

Schnockle a écrit
Mais il a déjà trouvé son bonheur, et comme dirait "Modeste"
Tout le reste n'est que............


;o)))
http://www.cijoint.fr/cjlink.php?file=cj201106/cijZa4Rxzm.xls




Avatar
MichD
Bonjour,

Il y a diverses façons de contourner le problème que tu énonces.

Dans la feuille module de la feuille où l'action se déroule, on peut utiliser
ce bout de code pour définir la plage. Ce code peut être adaptable selon
la disposition des données dans la feuille. Ce code crée une plage nommée "Plg"
du tableau des données.

Il ne reste plus qu'à modifier un tout petit peu la formule comme ceci :
=SOMME(SI(NB.SI(DECALER($A$1;1;LIGNE(INDIRECT("1:"&COLONNES(Plg)))-1;LIGNES(Plg);1);A2)>0;1))=COLONNES(Plg)

Sans VBA, on pourrait modifier la formule comme ceci :
=SOMME(SI(NB.SI(DECALER($A$1;1;LIGNE(INDIRECT("1:4"))-1;MAX(SI(A:A<>"";LIGNE(A:A)));1);A2)>0;1))=4
Sous une version Excel antérieure à 2007, on ne peut pas utiliser une colonne entière dans cette
section de la formule : MAX(SI(A:A<>"";LIGNE(A:A))) (c'est une formule matricielle), mais pour
rendre la formule plus appropriée et pour rapide à l'exécution, il est préférable à délimiter
une plage suffisamment grande pour s'assurer d'inclure celle dont on a besoin. Moi, je
préfère l'approche VBA que les formules à rallonge...

P.S- Si on ajoute des données, le nom de la plage va se mettre à jour selon l'étendue, mais
la mise en forme conditionnelle demeurera fonctionnelle que pour les cellules où elle a
été définie. Elle ne s'appliquera pas aux lignes ajoutées...il faudra modifier la procédure
pour l'ajouter à toute la plage si nécessaire. Tu peux t'amuser à l'inclure dans la procédure...

'------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Range("A1:A" & Range("A65536").End(xlUp).Row).CurrentRegion.Name = "Plg"
End If
End Sub
'------------------------------------------


MichD
--------------------------------------------
"Jacky" a écrit dans le message de groupe de discussion : iudg89$1v1$

Re...
merci que du bonheur toutes ses formules


Certes, mais présentent un inconvénient et non des moindres,
toutes les cellules de la plage doivent être renseignées (pas de cellule vide)
Ce qui n'est pas le cas de celle que j'ai proposé.

--
Salutations
JJ


"pierre" a écrit dans le message de news: 4e0a30ef$0$14657$
Bonsoir

merci que du bonheur toutes ses formules

Pierre

"Maude Este" a écrit dans le message de news: iuc3k0$d0u$
Bonsour®

Schnockle a écrit
Mais il a déjà trouvé son bonheur, et comme dirait "Modeste"
Tout le reste n'est que............


;o)))
http://www.cijoint.fr/cjlink.php?file=cj201106/cijZa4Rxzm.xls




Avatar
Jacky
Re...
Moi, je préfère l'approche VBA que les formules à rallonge...


Là, je suis entièrement en accord avec toi.

--
Salutations
JJ


"MichD" a écrit dans le message de news: iuf6od$jqs$
Bonjour,

Il y a diverses façons de contourner le problème que tu énonces.

Dans la feuille module de la feuille où l'action se déroule, on peut utiliser
ce bout de code pour définir la plage. Ce code peut être adaptable selon
la disposition des données dans la feuille. Ce code crée une plage nommée "Plg"
du tableau des données.

Il ne reste plus qu'à modifier un tout petit peu la formule comme ceci :
=SOMME(SI(NB.SI(DECALER($A$1;1;LIGNE(INDIRECT("1:"&COLONNES(Plg)))-1;LIGNES(Plg);1);A2)>0;1))=COLONNES(Plg)

Sans VBA, on pourrait modifier la formule comme ceci :
=SOMME(SI(NB.SI(DECALER($A$1;1;LIGNE(INDIRECT("1:4"))-1;MAX(SI(A:A<>"";LIGNE(A:A)));1);A2)>0;1))=4
Sous une version Excel antérieure à 2007, on ne peut pas utiliser une colonne entière dans cette
section de la formule : MAX(SI(A:A<>"";LIGNE(A:A))) (c'est une formule matricielle), mais pour
rendre la formule plus appropriée et pour rapide à l'exécution, il est préférable à délimiter
une plage suffisamment grande pour s'assurer d'inclure celle dont on a besoin. Moi, je
préfère l'approche VBA que les formules à rallonge...

P.S- Si on ajoute des données, le nom de la plage va se mettre à jour selon l'étendue, mais
la mise en forme conditionnelle demeurera fonctionnelle que pour les cellules où elle a
été définie. Elle ne s'appliquera pas aux lignes ajoutées...il faudra modifier la procédure
pour l'ajouter à toute la plage si nécessaire. Tu peux t'amuser à l'inclure dans la procédure...

'------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Range("A1:A" & Range("A65536").End(xlUp).Row).CurrentRegion.Name = "Plg"
End If
End Sub
'------------------------------------------


MichD
--------------------------------------------
"Jacky" a écrit dans le message de groupe de discussion : iudg89$1v1$

Re...
merci que du bonheur toutes ses formules


Certes, mais présentent un inconvénient et non des moindres,
toutes les cellules de la plage doivent être renseignées (pas de cellule vide)
Ce qui n'est pas le cas de celle que j'ai proposé.

--
Salutations
JJ


"pierre" a écrit dans le message de news:
4e0a30ef$0$14657$
Bonsoir

merci que du bonheur toutes ses formules

Pierre

"Maude Este" a écrit dans le message de news: iuc3k0$d0u$
Bonsour®

Schnockle a écrit
Mais il a déjà trouvé son bonheur, et comme dirait "Modeste"
Tout le reste n'est que............


;o)))
http://www.cijoint.fr/cjlink.php?file=cj201106/cijZa4Rxzm.xls







1 2 3