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

supprimer des lignes vides

10 réponses
Avatar
Olivier
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le classeur
suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom, prenom, ....
avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces lignes mais
uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et entre nom4
et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier

10 réponses

Avatar
isabelle
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter une
colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille, et
appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le classeur
suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom, prenom, ....
avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces lignes mais
uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et entre nom4
et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier





Avatar
Olivier
Merci pour l'idée mais...
J'affine un peu plus ma question :
le nombre en question est la différence entre le numéro du jour
d'aujourd'hui et du jour de naissance.
Ainsi aujourd'hui on est le 5.
Si on est né le 3, le nombre est 3-5 = -2 négatif
Si on est né le 6, le nombre est 6-5 = 1 positif.
Si on est né le 12, le nombre est 12-5 = 7 positif.
Je ne veux afficher que ceux qui ont un nombre positif. Ta technique marche
mais le problème est que les nombres ne restent pas toujours positifs ou
négatifs suivant le jour qu'on ouvre le classeur.
par exemple, dans deux jours (on est le 7) le nombre 1 sera devenu -1 et ne
devra plus être affiché.
J'aurais souhaité que tout se fasse automatiquement sans devoir réutiliser
le filtre à chaque ouverture du classeur.
Merci
Olivier



"isabelle" a écrit dans le message de news:
%
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter une
colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille, et
appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le
classeur suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom, prenom,
.... avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces lignes
mais uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et entre
nom4 et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier






Avatar
Daniel.C
Bonjour.
La formule matricielle (à valider avec CTRL+Maj+Entrée) fait le travail
sur la même feuille à partir de la ligne 1 :
=SI(ESTERR(PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()));"";PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()))
Cordialement.
Daniel

Merci pour l'idée mais...
J'affine un peu plus ma question :
le nombre en question est la différence entre le numéro du jour d'aujourd'hui
et du jour de naissance.
Ainsi aujourd'hui on est le 5.
Si on est né le 3, le nombre est 3-5 = -2 négatif
Si on est né le 6, le nombre est 6-5 = 1 positif.
Si on est né le 12, le nombre est 12-5 = 7 positif.
Je ne veux afficher que ceux qui ont un nombre positif. Ta technique marche
mais le problème est que les nombres ne restent pas toujours positifs ou
négatifs suivant le jour qu'on ouvre le classeur.
par exemple, dans deux jours (on est le 7) le nombre 1 sera devenu -1 et ne
devra plus être affiché.
J'aurais souhaité que tout se fasse automatiquement sans devoir réutiliser le
filtre à chaque ouverture du classeur.
Merci
Olivier



"isabelle" a écrit dans le message de news:
%
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter une
colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille, et
appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le
classeur suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom, prenom, ....
avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces lignes
mais uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et entre
nom4 et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier








Avatar
Daniel.C
Annule, c'est à côté de la plaque
Daniel

Bonjour.
La formule matricielle (à valider avec CTRL+Maj+Entrée) fait le travail sur
la même feuille à partir de la ligne 1 :
=SI(ESTERR(PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()));"";PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()))
Cordialement.
Daniel

Merci pour l'idée mais...
J'affine un peu plus ma question :
le nombre en question est la différence entre le numéro du jour
d'aujourd'hui et du jour de naissance.
Ainsi aujourd'hui on est le 5.
Si on est né le 3, le nombre est 3-5 = -2 négatif
Si on est né le 6, le nombre est 6-5 = 1 positif.
Si on est né le 12, le nombre est 12-5 = 7 positif.
Je ne veux afficher que ceux qui ont un nombre positif. Ta technique marche
mais le problème est que les nombres ne restent pas toujours positifs ou
négatifs suivant le jour qu'on ouvre le classeur.
par exemple, dans deux jours (on est le 7) le nombre 1 sera devenu -1 et ne
devra plus être affiché.
J'aurais souhaité que tout se fasse automatiquement sans devoir réutiliser
le filtre à chaque ouverture du classeur.
Merci
Olivier



"isabelle" a écrit dans le message de news:
%
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter une
colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille, et
appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le
classeur suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom, prenom,
.... avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces lignes
mais uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et entre
nom4 et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier








Avatar
Daniel.C
Regarde ton classeur modifié :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijmSjSafZ.xls
Daniel

Bonjour.
La formule matricielle (à valider avec CTRL+Maj+Entrée) fait le travail sur
la même feuille à partir de la ligne 1 :
=SI(ESTERR(PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()));"";PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()))
Cordialement.
Daniel

Merci pour l'idée mais...
J'affine un peu plus ma question :
le nombre en question est la différence entre le numéro du jour
d'aujourd'hui et du jour de naissance.
Ainsi aujourd'hui on est le 5.
Si on est né le 3, le nombre est 3-5 = -2 négatif
Si on est né le 6, le nombre est 6-5 = 1 positif.
Si on est né le 12, le nombre est 12-5 = 7 positif.
Je ne veux afficher que ceux qui ont un nombre positif. Ta technique marche
mais le problème est que les nombres ne restent pas toujours positifs ou
négatifs suivant le jour qu'on ouvre le classeur.
par exemple, dans deux jours (on est le 7) le nombre 1 sera devenu -1 et ne
devra plus être affiché.
J'aurais souhaité que tout se fasse automatiquement sans devoir réutiliser
le filtre à chaque ouverture du classeur.
Merci
Olivier



"isabelle" a écrit dans le message de news:
%
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter une
colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille, et
appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le
classeur suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom, prenom,
.... avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces lignes
mais uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et entre
nom4 et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier








Avatar
Olivier
Merci Daniel
Ca marche, je vois pas comment mais ca fonctionne !
Tu peux expliquer ce qui se passe exactement ?
SI(
ESTERR(PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()));
"";
INDEX($A$1:$A$7;PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE())))
Je n'arrive pas à comprendre la signification du ESTERR et de PETITE.VALEUR
Merci encore
Olivier

"Daniel.C" a écrit dans le message de news:

Regarde ton classeur modifié :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijmSjSafZ.xls
Daniel

Bonjour.
La formule matricielle (à valider avec CTRL+Maj+Entrée) fait le travail
sur la même feuille à partir de la ligne 1 :
=SI(ESTERR(PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()));"";PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()))
Cordialement.
Daniel

Merci pour l'idée mais...
J'affine un peu plus ma question :
le nombre en question est la différence entre le numéro du jour
d'aujourd'hui et du jour de naissance.
Ainsi aujourd'hui on est le 5.
Si on est né le 3, le nombre est 3-5 = -2 négatif
Si on est né le 6, le nombre est 6-5 = 1 positif.
Si on est né le 12, le nombre est 12-5 = 7 positif.
Je ne veux afficher que ceux qui ont un nombre positif. Ta technique
marche mais le problème est que les nombres ne restent pas toujours
positifs ou négatifs suivant le jour qu'on ouvre le classeur.
par exemple, dans deux jours (on est le 7) le nombre 1 sera devenu -1 et
ne devra plus être affiché.
J'aurais souhaité que tout se fasse automatiquement sans devoir
réutiliser le filtre à chaque ouverture du classeur.
Merci
Olivier



"isabelle" a écrit dans le message de news:
%
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter une
colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille, et
appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le
classeur suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom, prenom,
.... avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces lignes
mais uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et entre
nom4 et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier












Avatar
Daniel.C
Pour simplifier. Avec
PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()))
Je récupère les n° de ligne des valeurs positives. Je me sers ensuite
de cette valeur dans la fonction INDEX pour récupérer les données dans
les colonnes A, B et C.
LIGNE() me donne le numéro de ligne ou se trouve la formule et
indirectement le numéro d'ordre de la fonction PETITE.VALEUR.
SI($C$1:$C$7>0;LIGNE($C$1:$C$7)) renvoie une matrice des lignes des
cellules de la colonne C ayant une valeur positive.
PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()))
renvoie pour la ligne 1 la première ligne etc.
Comme il n'y a, dans l'exemple que 4 valeurs positives, la formule de
la 5e ligne renvoie une erreur. Je teste donc pour savoir si la formule
est en erreur, et si oui, je n'affiche rien.
D'ailleurs, je viens d'y penser, pour faire plus simple, j'aurais pu
écrire :
=SI(NB.SI($C$1:$C$7;">=0")<LIGNE();"";INDEX($A$1:$A$7;PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE())))
A ta disposition pour toute explication complémentaire.
Daniel
Merci Daniel
Ca marche, je vois pas comment mais ca fonctionne !
Tu peux expliquer ce qui se passe exactement ?
SI(
ESTERR(PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()));
"";
INDEX($A$1:$A$7;PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE())))
Je n'arrive pas à comprendre la signification du ESTERR et de PETITE.VALEUR
Merci encore
Olivier

"Daniel.C" a écrit dans le message de news:

Regarde ton classeur modifié :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijmSjSafZ.xls
Daniel

Bonjour.
La formule matricielle (à valider avec CTRL+Maj+Entrée) fait le travail
sur la même feuille à partir de la ligne 1 :
=SI(ESTERR(PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()));"";PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()))
Cordialement.
Daniel

Merci pour l'idée mais...
J'affine un peu plus ma question :
le nombre en question est la différence entre le numéro du jour
d'aujourd'hui et du jour de naissance.
Ainsi aujourd'hui on est le 5.
Si on est né le 3, le nombre est 3-5 = -2 négatif
Si on est né le 6, le nombre est 6-5 = 1 positif.
Si on est né le 12, le nombre est 12-5 = 7 positif.
Je ne veux afficher que ceux qui ont un nombre positif. Ta technique
marche mais le problème est que les nombres ne restent pas toujours
positifs ou négatifs suivant le jour qu'on ouvre le classeur.
par exemple, dans deux jours (on est le 7) le nombre 1 sera devenu -1 et
ne devra plus être affiché.
J'aurais souhaité que tout se fasse automatiquement sans devoir
réutiliser le filtre à chaque ouverture du classeur.
Merci
Olivier



"isabelle" a écrit dans le message de news:
%
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter une
colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille, et
appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le
classeur suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom, prenom,
.... avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces lignes
mais uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et entre
nom4 et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier














Avatar
Olivier
Bonjour,
je reviens poser une question car ca ne marche plus !!
Mes données se trouvent à partir de la ligne 4 et je veux afficher sur une
autre feuille.
J'arrive à faire le changement de feuille en rajoutant devant les $C$1:$C$7
le nom de la feuille où sont les données.
Ca ca marche.
Mais là où ca ne fonctionne plus, c'est lorsque mes données ne débutent pas
en ligne 1. je fais bien une formule matricielle en changeant les $C$1:$C$7
en $C$4$C$11 et pareil pour $A$1:$A$7 mais rien ne s'affiche.
Vois tu quel est le problème ?
Olivier


"Daniel.C" a écrit dans le message de news:

Pour simplifier. Avec
PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()))
Je récupère les n° de ligne des valeurs positives. Je me sers ensuite de
cette valeur dans la fonction INDEX pour récupérer les données dans les
colonnes A, B et C.
LIGNE() me donne le numéro de ligne ou se trouve la formule et
indirectement le numéro d'ordre de la fonction PETITE.VALEUR.
SI($C$1:$C$7>0;LIGNE($C$1:$C$7)) renvoie une matrice des lignes des
cellules de la colonne C ayant une valeur positive.
PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()))
renvoie pour la ligne 1 la première ligne etc.
Comme il n'y a, dans l'exemple que 4 valeurs positives, la formule de la
5e ligne renvoie une erreur. Je teste donc pour savoir si la formule est
en erreur, et si oui, je n'affiche rien.
D'ailleurs, je viens d'y penser, pour faire plus simple, j'aurais pu
écrire :
=SI(NB.SI($C$1:$C$7;">=0")<LIGNE();"";INDEX($A$1:$A$7;PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE())))
A ta disposition pour toute explication complémentaire.
Daniel
Merci Daniel
Ca marche, je vois pas comment mais ca fonctionne !
Tu peux expliquer ce qui se passe exactement ?
SI(
ESTERR(PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()));
"";
INDEX($A$1:$A$7;PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE())))
Je n'arrive pas à comprendre la signification du ESTERR et de
PETITE.VALEUR
Merci encore
Olivier

"Daniel.C" a écrit dans le message de news:

Regarde ton classeur modifié :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijmSjSafZ.xls
Daniel

Bonjour.
La formule matricielle (à valider avec CTRL+Maj+Entrée) fait le travail
sur la même feuille à partir de la ligne 1 :
=SI(ESTERR(PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()));"";PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()))
Cordialement.
Daniel

Merci pour l'idée mais...
J'affine un peu plus ma question :
le nombre en question est la différence entre le numéro du jour
d'aujourd'hui et du jour de naissance.
Ainsi aujourd'hui on est le 5.
Si on est né le 3, le nombre est 3-5 = -2 négatif
Si on est né le 6, le nombre est 6-5 = 1 positif.
Si on est né le 12, le nombre est 12-5 = 7 positif.
Je ne veux afficher que ceux qui ont un nombre positif. Ta technique
marche mais le problème est que les nombres ne restent pas toujours
positifs ou négatifs suivant le jour qu'on ouvre le classeur.
par exemple, dans deux jours (on est le 7) le nombre 1 sera devenu -1
et ne devra plus être affiché.
J'aurais souhaité que tout se fasse automatiquement sans devoir
réutiliser le filtre à chaque ouverture du classeur.
Merci
Olivier



"isabelle" a écrit dans le message de news:
%
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter
une colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille, et
appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le
classeur suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom,
prenom, .... avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces
lignes mais uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et
entre nom4 et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier


















Avatar
Daniel.C
Bonjour.
Etant donné que je me sers du numéro de ligne pour la fonction INDEX,
il faut conserver les plages $A$1:$A$7 etc. Par exemple :
=SI(NB.SI(Feuil2!$C$4:$C$10;">0")<LIGNE();"";INDEX(Feuil2!$A$1:$A$10;PETITE.VALEUR(SI(Feuil2!$C$4:$C$10>0;LIGNE(Feuil2!$C$4:$C$10));LIGNE())))
Regarde l'exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijbBir2X0.xls
Daniel

Bonjour,
je reviens poser une question car ca ne marche plus !!
Mes données se trouvent à partir de la ligne 4 et je veux afficher sur une
autre feuille.
J'arrive à faire le changement de feuille en rajoutant devant les $C$1:$C$7
le nom de la feuille où sont les données.
Ca ca marche.
Mais là où ca ne fonctionne plus, c'est lorsque mes données ne débutent pas
en ligne 1. je fais bien une formule matricielle en changeant les $C$1:$C$7
en $C$4$C$11 et pareil pour $A$1:$A$7 mais rien ne s'affiche.
Vois tu quel est le problème ?
Olivier


"Daniel.C" a écrit dans le message de news:

Pour simplifier. Avec
PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()))
Je récupère les n° de ligne des valeurs positives. Je me sers ensuite de
cette valeur dans la fonction INDEX pour récupérer les données dans les
colonnes A, B et C.
LIGNE() me donne le numéro de ligne ou se trouve la formule et
indirectement le numéro d'ordre de la fonction PETITE.VALEUR.
SI($C$1:$C$7>0;LIGNE($C$1:$C$7)) renvoie une matrice des lignes des
cellules de la colonne C ayant une valeur positive.
PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()))
renvoie pour la ligne 1 la première ligne etc.
Comme il n'y a, dans l'exemple que 4 valeurs positives, la formule de la 5e
ligne renvoie une erreur. Je teste donc pour savoir si la formule est en
erreur, et si oui, je n'affiche rien.
D'ailleurs, je viens d'y penser, pour faire plus simple, j'aurais pu écrire
:
=SI(NB.SI($C$1:$C$7;">=0")<LIGNE();"";INDEX($A$1:$A$7;PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE())))
A ta disposition pour toute explication complémentaire.
Daniel
Merci Daniel
Ca marche, je vois pas comment mais ca fonctionne !
Tu peux expliquer ce qui se passe exactement ?
SI(
ESTERR(PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()));
"";
INDEX($A$1:$A$7;PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE())))
Je n'arrive pas à comprendre la signification du ESTERR et de
PETITE.VALEUR
Merci encore
Olivier

"Daniel.C" a écrit dans le message de news:

Regarde ton classeur modifié :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijmSjSafZ.xls
Daniel

Bonjour.
La formule matricielle (à valider avec CTRL+Maj+Entrée) fait le travail
sur la même feuille à partir de la ligne 1 :
=SI(ESTERR(PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()));"";PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()))
Cordialement.
Daniel

Merci pour l'idée mais...
J'affine un peu plus ma question :
le nombre en question est la différence entre le numéro du jour
d'aujourd'hui et du jour de naissance.
Ainsi aujourd'hui on est le 5.
Si on est né le 3, le nombre est 3-5 = -2 négatif
Si on est né le 6, le nombre est 6-5 = 1 positif.
Si on est né le 12, le nombre est 12-5 = 7 positif.
Je ne veux afficher que ceux qui ont un nombre positif. Ta technique
marche mais le problème est que les nombres ne restent pas toujours
positifs ou négatifs suivant le jour qu'on ouvre le classeur.
par exemple, dans deux jours (on est le 7) le nombre 1 sera devenu -1
et ne devra plus être affiché.
J'aurais souhaité que tout se fasse automatiquement sans devoir
réutiliser le filtre à chaque ouverture du classeur.
Merci
Olivier



"isabelle" a écrit dans le message de news:
%
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter une
colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille, et
appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir le
classeur suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom, prenom,
.... avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces
lignes mais uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et
entre nom4 et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier




















Avatar
Olivier
Merci j'y suis arrivé !
Olivier

"Daniel.C" a écrit dans le message de news:
e%
Bonjour.
Etant donné que je me sers du numéro de ligne pour la fonction INDEX, il
faut conserver les plages $A$1:$A$7 etc. Par exemple :
=SI(NB.SI(Feuil2!$C$4:$C$10;">0")<LIGNE();"";INDEX(Feuil2!$A$1:$A$10;PETITE.VALEUR(SI(Feuil2!$C$4:$C$10>0;LIGNE(Feuil2!$C$4:$C$10));LIGNE())))
Regarde l'exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijbBir2X0.xls
Daniel

Bonjour,
je reviens poser une question car ca ne marche plus !!
Mes données se trouvent à partir de la ligne 4 et je veux afficher sur
une autre feuille.
J'arrive à faire le changement de feuille en rajoutant devant les
$C$1:$C$7 le nom de la feuille où sont les données.
Ca ca marche.
Mais là où ca ne fonctionne plus, c'est lorsque mes données ne débutent
pas en ligne 1. je fais bien une formule matricielle en changeant les
$C$1:$C$7 en $C$4$C$11 et pareil pour $A$1:$A$7 mais rien ne s'affiche.
Vois tu quel est le problème ?
Olivier


"Daniel.C" a écrit dans le message de news:

Pour simplifier. Avec
PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()))
Je récupère les n° de ligne des valeurs positives. Je me sers ensuite de
cette valeur dans la fonction INDEX pour récupérer les données dans les
colonnes A, B et C.
LIGNE() me donne le numéro de ligne ou se trouve la formule et
indirectement le numéro d'ordre de la fonction PETITE.VALEUR.
SI($C$1:$C$7>0;LIGNE($C$1:$C$7)) renvoie une matrice des lignes des
cellules de la colonne C ayant une valeur positive.
PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()))
renvoie pour la ligne 1 la première ligne etc.
Comme il n'y a, dans l'exemple que 4 valeurs positives, la formule de la
5e ligne renvoie une erreur. Je teste donc pour savoir si la formule est
en erreur, et si oui, je n'affiche rien.
D'ailleurs, je viens d'y penser, pour faire plus simple, j'aurais pu
écrire :
=SI(NB.SI($C$1:$C$7;">=0")<LIGNE();"";INDEX($A$1:$A$7;PETITE.VALEUR(SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE())))
A ta disposition pour toute explication complémentaire.
Daniel
Merci Daniel
Ca marche, je vois pas comment mais ca fonctionne !
Tu peux expliquer ce qui se passe exactement ?
SI(
ESTERR(PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE()));
"";
INDEX($A$1:$A$7;PETITE.VALEUR(
SI($C$1:$C$7>0;LIGNE($C$1:$C$7));LIGNE())))
Je n'arrive pas à comprendre la signification du ESTERR et de
PETITE.VALEUR
Merci encore
Olivier

"Daniel.C" a écrit dans le message de news:

Regarde ton classeur modifié :
http://www.cijoint.fr/cjlink.php?file=cj200906/cijmSjSafZ.xls
Daniel

Bonjour.
La formule matricielle (à valider avec CTRL+Maj+Entrée) fait le
travail sur la même feuille à partir de la ligne 1 :
=SI(ESTERR(PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()));"";PETITE.VALEUR(SI($C$1:$C$7>0;$C$1:$C$7*LIGNE($C$1:$C$7));LIGNE()))
Cordialement.
Daniel

Merci pour l'idée mais...
J'affine un peu plus ma question :
le nombre en question est la différence entre le numéro du jour
d'aujourd'hui et du jour de naissance.
Ainsi aujourd'hui on est le 5.
Si on est né le 3, le nombre est 3-5 = -2 négatif
Si on est né le 6, le nombre est 6-5 = 1 positif.
Si on est né le 12, le nombre est 12-5 = 7 positif.
Je ne veux afficher que ceux qui ont un nombre positif. Ta technique
marche mais le problème est que les nombres ne restent pas toujours
positifs ou négatifs suivant le jour qu'on ouvre le classeur.
par exemple, dans deux jours (on est le 7) le nombre 1 sera
devenu -1 et ne devra plus être affiché.
J'aurais souhaité que tout se fasse automatiquement sans devoir
réutiliser le filtre à chaque ouverture du classeur.
Merci
Olivier



"isabelle" a écrit dans le message de news:
%
bonjour Olovier,

comme il n'y a pas de liens entre les données, tu pourrais ajouter
une colonne sur laquel tu pourrais mettre des 1
vis-à-vis les données que tu veut transférer sur l'autre feuille,
et appliquer un filtre automatique.

isabelle

Olivier a écrit :
Bonjour,
je voudrais SANS utiliser VBA donc uniquement avec Excel obtenir
le classeur suivant.
J'ai en feuille2, plusieurs lignes contenant des données Nom,
prenom, .... avec en colonne C des nombres.
Je voudrais que s'affiche en Feuille 1, un récapitulatif de ces
lignes mais uniquement celle qui contiennent des nombres positifs.
Exemple
Feuille 2
Nom1, prenom1,18
Nom2, prenom2,113
Nom3, prenom3,-5
Nom4, prenom4,6
Nom5, prenom5,-7
Nom6, prenom6,-79
Nom7, prenom7,42
En feuille 1 je veux obtenir
Nom1, prenom1,18
Nom2, prenom2,113
Nom4, prenom4,6
Nom7, prenom7,42

Bien sur, je ne veux pas de ligne vide entre les nom2 et nom4 et
entre nom4 et nom7 (sinon je sais faire)
Est-ce possible sans VBA ?
Merci à tous
Olivier