Extraire les voisins de chaque colonne.

bobylaroche

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Un nouveau problème que je ne peux résoudre.
Comme données, quatre colonnes ou sont répartis les chiffres 1à 8 au minimum et 1 à 20 au maximum.
Pour chacune des colonnes, je souhaiterai extraire les voisins formant une série de 2 chiffres ou plus.
Si l'une ou l'un d'entre vous a une idée !

Pour une meilleure compréhension, un classeur est fourni en pièce jointe.

Merci.
 

Pièces jointes

  • Exemple.xlsx
    15 KB · Affichages: 58

david84

XLDnaute Barbatruc
Bonjour,
si cela ne te gêne pas de récupérer les résultats dans une seule colonne, cela peut se faire par formule :
pour les voisins :
Code:
=PETITE.VALEUR(SI((E$8:H$27<>"")*(DECALER(E$8:H$27;1;;20;4)+DECALER(E$8:H$27;-1;;20;4));E$8:H$27);LIGNE(1:1))

Pour les isolés :
Code:
=PETITE.VALEUR(SI((E$8:H$27<>"")*(DECALER(E$8:H$27;1;;20;4)="")*(DECALER(E$8:H$27;-1;;20;4)="");E$8:H$27);LIGNE(1:1))

Formules à valider en matriciel et à tirer vers le bas.
A+
 

david84

XLDnaute Barbatruc
On peut éventuellement isoler les résultats de chaque colonne.
Pour les voisins :
Code:
=SIERREUR(PETITE.VALEUR(SI((E$8:E$27<>"")*(DECALER(E$8:E$27;1;;20)+DECALER(E$8:E$27;-1;;20));E$8:E$27);LIGNE(1:1));"")
Pour les isolés :
Code:
=SIERREUR(PETITE.VALEUR(SI((E$8:E$27<>"")*(DECALER(E$8:E$27;1;;20;)="")*(DECALER(E$8:E$27;-1;;20;)="");E$8:E$27);LIGNE(1:1));"")
Toujours validation en matriciel mais à tirer vers la droite et le bas.
A+
 

bobylaroche

XLDnaute Occasionnel
Merci David, sympas les formules :) C'est presque cela mais j'ai un souci.
Cela fonctionne sur la feuille donnée en exemple mais pas sur la feuille destinée à recevoir les formules.
Pourtant "l'adresse" des colonnes à bien été modifié. Je ne comprends pas !
J'ai ajouté la feuille au classeur Exemple.
Bon dimanche et encore merci pour l'aide et le temps passé.
 

Pièces jointes

  • Exemple.xlsx
    32.8 KB · Affichages: 54

david84

XLDnaute Barbatruc
C'est normal car dans ton exemple initial la plage ne comporte pas de formules alors que c'est le cas dans la plage BF$7:BF$26.
Donc dans ce cas la condition BF$7:BF$26<>"" n'est plus adaptée puisque ta cellule n'est pas vide...
Il te faut donc modifier ta condition, par exemple en testant si ta cellule contient une valeur numérique :
Code:
=SIERREUR(PETITE.VALEUR(SI(ESTNUM(BF$8:BF$27)*(ESTNUM(DECALER(BF$8:BF$27;1;;20))+ESTNUM(DECALER(BF$8:BF$27;-1;;20)));BF$8:BF$27);LIGNE(1:1));"")

Dans ton exemple tu peux éventuellement te passer de DECALER :
Code:
=SIERREUR(PETITE.VALEUR(SI(ESTNUM(BF$7:BF$26)*(ESTNUM(BF$8:BF$27)+ESTNUM(BF$6:BF$25));BF$7:BF$26);LIGNE(1:1));"")
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 884
Messages
2 093 244
Membres
105 658
dernier inscrit
Mario Richard