Formule

Afrosee Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
Afrosee Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour!
J'ai des données sur plusieurs lignes d'une feuille excel 2007, des lignes séparées par ci par là de lignes sans données. Je voudrais par formules faire apparaître sur une autre feuille, les mêmes lignes de données qui se suivent dans l'ordre, en éliminant les lignes vides.
A voir également:

4 réponses

Raymond PENTIER Messages postés 58988 Date d'inscription   Statut Contributeur Dernière intervention   17 353
 
Pourquoi forcément "par formule", alors qu'il est si simple de lancer un tri et de copier-coller les lignes non vides ?
0
Afrosee Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   37
 
@Raymond:
Merci d'avoir répondu; mais mon problème n'est pas de circonstance, il s'agit d'un transfert systématique de données sur une autre feuille. La plage concerne 2500 lignes.
0
Raymond PENTIER Messages postés 58988 Date d'inscription   Statut Contributeur Dernière intervention   17 353
 
Alors il faut le préciser dès le départ ...
Au lieu de dire
"J'ai des données sur plusieurs lignes ... des lignes séparées par ci par là de lignes sans données. Je voudrais par formules faire apparaître sur une autre feuille, les mêmes lignes ... qui se suivent dans l'ordre, en éliminant les lignes vides"
ça aurait été aussi rapide et bien plus parlant de dire
"J'ai des données sur des milliers de lignes ... des lignes séparées par ci par là de lignes sans données. Je voudrais par formules faire apparaître automatiquement sur une autre feuille, les mêmes lignes ... qui se suivent dans l'ordre, en éliminant les lignes vides".
Penses-y pour ta prochaine question ...

Cordialement.
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Bonjour voyez ici, ce modèle
A noter que si votre tableaux d'origine comporte beaucoup de données, ce type, de formule risque d'être assez gourmand en capacité et en temps de réponse
dans tous les cas limiter bien les champs aux strictes limites lignes et colonnes nécessaires, car les formule matricielles calculent tout les champ, même vide), avant de renvoyer un résultat!

Notez aussi:
__ que le code SIERREUR utilisé, qui évite les affichages d'erreurs en fion de tableaux, ne fonctionne qu'à, partir d'Excel 2007 (si ce n'est pas le cas revenez)
__ que le code SOMMEPROD...ligne) renvoie toujours le n° de ligne de la feuille où se trouve la donnée, et non pas le N° du champ sélectionné. D'où la nécessité de débuter les champs en ligne 1 (ou d'employer une correction -xx sinon)

crdlmnt

0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
......je relis et je constate que j'ai du oublier de coller le lien!!
https://www.cjoint.com/c/FFphcoJXHx5
avec mes excuses
0
Afrosee Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   37 > Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention  
 
Merci beaucoup!
Je pense que votre méthode est bonne, mais j'arrive pas à la comprendre.
Je communique en REPONSE AU SUJET, la réponse de Mike-31
Une fois de plus, merci!
Afrosee
0
Afrosee Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   37
 
@Tous:
Merci pour toutes les contributions!
J'ai trouvé la bonne réponse communiquée par Mike-31 suite à une autre question posée par une autre personne. Je communique les coordonnées pour tous:

https://forums.commentcamarche.net/forum/affich-28264797-recuperer-dans-une-colonne-valeur-cellule-non-vide

Bonjour,

tu peux faire par formule, commence par nommer ta plage de données exemple de la cellule A2 à A3000 nommée List

sur ta deuxième feuille colle cette formule matricielle qu'il faudra valider après l'avoir collée en cliquant en même temps sur les 3 touches du clavier Ctrl, Shift (touche Shift est la touche majuscule) et la touche Entrée

=INDEX(List;PETITE.VALEUR(SI(List<>"";LIGNE(INDIRECT("1:"&LIGNES(List))));LIGNES($1:1)))

si tu fais bien la formule se mettra entre {}

ensuite incrémente vers le bas

Si tu as Excel 2007 ou 2010, complète la formule matricielle avec une gestion d'erreur avant de l'incrémenter vers le bas

=SIERREUR(INDEX(List;PETITE.VALEUR(SI(List<>"";LIGNE(INDIRECT("1:"&LIGNES(List))));LIGNES($1:1)));"")

A+
Mike-31

Afrosee
0