XL 2019 Récupérer le premier nombre d'une ligne selon entreprise puis retrouver date

Loïc DUBOIS

XLDnaute Occasionnel
Bonjour à tous,

J'espère que vous allez bien ?

J'ai une petite interrogation.
En effet sur mon fichier, j'ai enormement de lignes (chaque ligne concerne une entreprise), les colonnes sont des dates. Mon soucis est que j'ai beaucoup de colonnes et j'ai des résultats apparaissant comme "NULL", des nombres sont noyés dans ces "NULL". Je cherche donc à savoir si je peux avoir une formule excel qui me permette d'avoir le premier nombre de la ligne apparaissant. Une fois cela fait, j'aimerais trouver la date correspondant (sur la ligne 1) à l'entreprise et le nombre trouvé précèdemment.

Je vous joint un fichier excel avec le fichier de base et ce que je veux retrouver.

Nb : Si aucun nombre n'est présent sur la ligne, on écrit NULL.
Nb 2 : Je n'ai pas accès à la fonction recherchex.

Merci d'avance,

N'hésitez pas si vous avez des questions.
 

Pièces jointes

  • test forum 2.xlsx
    102.3 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Loïc,
Un essai en PJ avec :
VB:
=SIERREUR(SI(MIN(SI(ESTNUM('Fichier de base'!C2:ZZ2);COLONNE('Fichier de base'!C2:ZZ2)))<>0;INDEX('Fichier de base'!2:2;MIN(SI(ESTNUM('Fichier de base'!C2:ZZ2);COLONNE('Fichier de base'!C2:ZZ2))));"");"")
Validation par Maj+Ctrl+Entrée car formule matricielle.
Pour 4295902756 le premier nombre est 0, et non 14150, 14150 est le premier nombre non nul.

Si la prochaine question est rechercher le premier nombre non nul, perso je ne sais pas faire en formules.
par contre en VBA. Oui.
 

Pièces jointes

  • test forum 2.xlsx
    105 KB · Affichages: 2

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Loïc DUBOIS :),

Pour ce genre de cas, j'ajoute une colonne auxiliaire dont le but est de simplifier considérablement la longueur des formules.

Feuille "Fichier de base" :
On insère une colonne en A et on y met la formule matricielle (à valider par Ctrl+Maj+Entrée) suivante en A2 à recopier vers le bas :
VB:
=PETITE.VALEUR(SI(((D2:XP2<>"NULL")*(D2:XP2>0));COLONNE(D2:XP2));1)
Cette formule donne le numéro de colonne de la ligne qui contient le premier nombre supérieur à 0.

Feuille "Fichier voulu" :
Dans la cellule B2, on saisit la formule suivante à recopier vers le bas :
VB:
=SIERREUR(INDEX('Fichier de base'!$1:$1048576;EQUIV(A2;'Fichier de base'!$C:$C;0);INDEX('Fichier de base'!$A:$A;EQUIV(A2;'Fichier de base'!$C:$C;0)));"NULL")

Dans la cellule C2, on saisit la formule suivante à recopier vers le bas :
VB:
=SIERREUR(INDEX('Fichier de base'!$1:$1;INDEX('Fichier de base'!$A:$A;EQUIV(A2;'Fichier de base'!$C:$C;0)));"")

edit : bonsoir @sylvanu ;)
 

Pièces jointes

  • Loïc DUBOIS- rechercher 1er nombre- v1.xlsx
    106.9 KB · Affichages: 2
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Quitte à insérer une colonne, on peut en insérer deux sur la feuille "Fichier de base" :
En A2, on place la formule matricielle à recopier vers le bas :
VB:
=SIERREUR(INDEX(A2:XQ2;PETITE.VALEUR(SI(((E2:XQ2<>"NULL")*(E2:XQ2>0));COLONNE(E2:XQ2));1));"NULL")
En B2, on place la formule matricielle à recopier vers le bas :
VB:
=SIERREUR(INDEX(A$1:XQ$1;PETITE.VALEUR(SI(((E2:XQ2<>"NULL")*(E2:XQ2>0));COLONNE(E2:XQ2));1));"")

et sur la feuille "Fichier voulu", on a les deux formules très simples en B2 et C2 à recopier vers le bas :
VB:
=INDEX('Fichier de base'!A:A;EQUIV(A2;'Fichier de base'!D:D;0))
et
VB:
=INDEX('Fichier de base'!B:B;EQUIV(A2;'Fichier de base'!D:D;0))
 

Pièces jointes

  • Loïc DUBOIS- rechercher 1er nombre- v2.xlsx
    108.2 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG