[Excel] Sélectionner des plages non vides
Résolu/Fermé
corgeon
Messages postés
426
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
28 août 2017
-
24 nov. 2008 à 16:46
corgeon Messages postés 426 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 28 août 2017 - 25 nov. 2008 à 11:07
corgeon Messages postés 426 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 28 août 2017 - 25 nov. 2008 à 11:07
A voir également:
- Selectionner cellule non vide excel
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Liste déroulante excel - Guide
- Verrouiller cellule excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
4 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 705
24 nov. 2008 à 18:02
24 nov. 2008 à 18:02
bonjour
j'ai fait un essai afin de mieux comprendre ce que renvoie DECALER
DECALER renvoie une référence à une plage qui correspond à un nombre déterminé de lignes et de colonnes d'une cellule ou plage de cellules. La référence qui est renvoyée peut être une cellule unique ou une plage de cellules. Vous pouvez spécifier le nombre de lignes et de colonnes à renvoyer.
DECALER(J3;;;NBVAL(J3:J66);1)
Ainsi tu te positionne en J3 sans décale de ligne ni de colonne et tu prend une plage avec autant de lignes qu'il y a de valeurs dans (J3:J66) sur une colonne.
En fait si tu as 5 lignes remplies, ta plage devient J3:J7 ce qu'il me semble que tu cherchais.
j'ai fait un essai afin de mieux comprendre ce que renvoie DECALER
DECALER renvoie une référence à une plage qui correspond à un nombre déterminé de lignes et de colonnes d'une cellule ou plage de cellules. La référence qui est renvoyée peut être une cellule unique ou une plage de cellules. Vous pouvez spécifier le nombre de lignes et de colonnes à renvoyer.
DECALER(J3;;;NBVAL(J3:J66);1)
Ainsi tu te positionne en J3 sans décale de ligne ni de colonne et tu prend une plage avec autant de lignes qu'il y a de valeurs dans (J3:J66) sur une colonne.
En fait si tu as 5 lignes remplies, ta plage devient J3:J7 ce qu'il me semble que tu cherchais.
corgeon
Messages postés
426
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
28 août 2017
24
24 nov. 2008 à 18:28
24 nov. 2008 à 18:28
Bonjour wilfried_42 (t'es de Saint-Étienne ?) !
Merci à toi aussi pour ton aide !
En fait, rien a fonctionné, mais je pense savoir pourquoi. En fait, les cases vides ne sont pas comptées comme vides car pour les remplir j'avais utiliser une fonction SI afin de me rendre les dernières cases, dont je n'ai pas besoin, vide :
=SI(A59-$M$9>0;A59-$M$9;"")
Ainsi, je pense que le fait d'avoir insérer cette fonction SI fait que Excel ne la considère pas comme vide...
Je vais réfléchir à comment remédier à ce problème et je reviens vous donner des nouvelles.
Encore merci à vous deux !
PS : je viens de vérifier en supprimant les cases normalement vides et vos formules fonctionnent :-)
Merci à toi aussi pour ton aide !
En fait, rien a fonctionné, mais je pense savoir pourquoi. En fait, les cases vides ne sont pas comptées comme vides car pour les remplir j'avais utiliser une fonction SI afin de me rendre les dernières cases, dont je n'ai pas besoin, vide :
=SI(A59-$M$9>0;A59-$M$9;"")
Ainsi, je pense que le fait d'avoir insérer cette fonction SI fait que Excel ne la considère pas comme vide...
Je vais réfléchir à comment remédier à ce problème et je reviens vous donner des nouvelles.
Encore merci à vous deux !
PS : je viens de vérifier en supprimant les cases normalement vides et vos formules fonctionnent :-)
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
24 nov. 2008 à 18:32
24 nov. 2008 à 18:32
re:
dans ce cas, tu remplaces nbval($I$3:$I$66) pare nb.si($I$3:$I$66;"> ")
dans ce cas, tu remplaces nbval($I$3:$I$66) pare nb.si($I$3:$I$66;"> ")
corgeon
Messages postés
426
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
28 août 2017
24
25 nov. 2008 à 11:07
25 nov. 2008 à 11:07
Bonjour Wilfried_42 et gbinforme !
J'ai enfin réussi à faire ce que je voulais grâce à votre aide et en filoutant avec Excel. Je m'explique :
En fait, il y avait encore un problème avec la fonction NB.SI que Wilfried m'a indiqué (ça me renvoyait #REF!). J'ai alors contourné le problème en ajoutant une colonne calculant le logarithme de mes données, seulement si la case n'est pas vide, sinon renvoyer la valeur 0 (un log ne renvoie jamais 0) :
=SI(I3<>"";LN(I3);0)
Ensuite, j'ai modifier la formule de NB.SI que tu Wilfried m'a donnée en remplaçant le "> " en "<>0" et tout fonctionne nickel !
Encore merci à vous deux, cela me fera gagner un temps fou maintenant que ce calcul est automatisé.
@ bientôt peut-être !
J'ai enfin réussi à faire ce que je voulais grâce à votre aide et en filoutant avec Excel. Je m'explique :
En fait, il y avait encore un problème avec la fonction NB.SI que Wilfried m'a indiqué (ça me renvoyait #REF!). J'ai alors contourné le problème en ajoutant une colonne calculant le logarithme de mes données, seulement si la case n'est pas vide, sinon renvoyer la valeur 0 (un log ne renvoie jamais 0) :
=SI(I3<>"";LN(I3);0)
Ensuite, j'ai modifier la formule de NB.SI que tu Wilfried m'a donnée en remplaçant le "> " en "<>0" et tout fonctionne nickel !
Encore merci à vous deux, cela me fera gagner un temps fou maintenant que ce calcul est automatisé.
@ bientôt peut-être !
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 705
24 nov. 2008 à 16:58
24 nov. 2008 à 16:58
bonjour
Essaies peut-être comme ceci :
=INDEX(DROITEREG(DECALER(J3;;;NBVAL(J3:J66);1);DECALER(I3;;;NBVAL(I3:I66);1);;1);1;2)
Cette formule crée les plages renseignées en I et J mais les données présentes doivent être consécutives.
Je ne connais pas ton tableau et je te laisse essayer.
Essaies peut-être comme ceci :
=INDEX(DROITEREG(DECALER(J3;;;NBVAL(J3:J66);1);DECALER(I3;;;NBVAL(I3:I66);1);;1);1;2)
Cette formule crée les plages renseignées en I et J mais les données présentes doivent être consécutives.
Je ne connais pas ton tableau et je te laisse essayer.
corgeon
Messages postés
426
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
28 août 2017
24
24 nov. 2008 à 17:39
24 nov. 2008 à 17:39
Bonjour gbinforme,
Avant toute chose, j'aimerais te remercier pour t'être intéressé à mon problème.
Alors voici ce qu'il en est :
J'ai entré ta formule dans un case, et il m'a retourné l'indication #VALEUR!
J'ai alors fait des recherches sur les formules NBVAL et DECALER afin de savoir ce que je faisais. Autant j'ai compris ce que fait NBVAL, autant je n'ai pas compris ce que fait DECALER.
J'ai donc essayé, sans grande conviction, d'utiliser la fonction NBVAL comme ceci :
J3:J(NBVAL(J3:J66)+3)
Mais évidemment Excel ne comprend pas ce langage.
Enfin, j'ai fait un essai afin de mieux comprendre ce que renvoie DECALER, et quand je tape
=DECALER(J3;;;NBVAL(J3:J66);1)
dans une case (L22 par exemple), cela me renvoie la valeur de la case J de la même ligne que la case dans laquelle je l'ai tapé (J22 pour l'exemple).
J'espère être claire dans mes explications. Vois-tu ce qui ne va pas ?
Avant toute chose, j'aimerais te remercier pour t'être intéressé à mon problème.
Alors voici ce qu'il en est :
J'ai entré ta formule dans un case, et il m'a retourné l'indication #VALEUR!
J'ai alors fait des recherches sur les formules NBVAL et DECALER afin de savoir ce que je faisais. Autant j'ai compris ce que fait NBVAL, autant je n'ai pas compris ce que fait DECALER.
J'ai donc essayé, sans grande conviction, d'utiliser la fonction NBVAL comme ceci :
J3:J(NBVAL(J3:J66)+3)
Mais évidemment Excel ne comprend pas ce langage.
Enfin, j'ai fait un essai afin de mieux comprendre ce que renvoie DECALER, et quand je tape
=DECALER(J3;;;NBVAL(J3:J66);1)
dans une case (L22 par exemple), cela me renvoie la valeur de la case J de la même ligne que la case dans laquelle je l'ai tapé (J22 pour l'exemple).
J'espère être claire dans mes explications. Vois-tu ce qui ne va pas ?
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
>
corgeon
Messages postés
426
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
28 août 2017
24 nov. 2008 à 18:02
24 nov. 2008 à 18:02
Bonjour
on va faire au plus simple : si tes valeurs sont contigues c'est plus facile
Déjà une explication sur DECALER puisque l'on va encore s'en servir
entre [] indique que les valeurs sont optionnelles
=DECALER(Cellule,Lignes,Colonnes,[Nbligne], [nbcolonne])
Decaler comme son nom l'indique sert à DECALER Cellule ou une plage selon des parametres entier
DECALER(A1,1,1) ==> je Decale A1, d'une ligne et d'une colonne donc résultat est B2
Le 2 parametres entre [] permettent de definir un nombre de ligne ou de colonne pour en recupérer un plage
c'est principalement ce que l'on cherche, definir une plage
Personnellement, en Cellule de référence je n'utilise jamais la cellule de la plage à trouver, pour eviter, en cas de suppression de la ligne ou se trouve la cellue de reference, de perdre ma formule
Donc je vais partir de la ligne 1 : Cellule I1, pour avoir I3, je decale de 2 lignes, 0 colonnes
=DECALER($I$1;2;0)
ensuite je dois definir ma plage : mon nombre de ligne correspond au nombre de valeur dans ma plage I3:I66 et mon nombre de colonne = 1 : ce qui me donne :
=DECALER($I$1;2;0; nbval($I$3:$I$66);1)
Menu insertion / Nom / Definir
Le nom : coli
fait référence à : mettre la fomule ci-dessus
cliquer sur ajouter
faire pareil avec la colonne J
ensuite remplace tes plages dans ta formule par coli et colj
on va faire au plus simple : si tes valeurs sont contigues c'est plus facile
Déjà une explication sur DECALER puisque l'on va encore s'en servir
entre [] indique que les valeurs sont optionnelles
=DECALER(Cellule,Lignes,Colonnes,[Nbligne], [nbcolonne])
Decaler comme son nom l'indique sert à DECALER Cellule ou une plage selon des parametres entier
DECALER(A1,1,1) ==> je Decale A1, d'une ligne et d'une colonne donc résultat est B2
Le 2 parametres entre [] permettent de definir un nombre de ligne ou de colonne pour en recupérer un plage
c'est principalement ce que l'on cherche, definir une plage
Personnellement, en Cellule de référence je n'utilise jamais la cellule de la plage à trouver, pour eviter, en cas de suppression de la ligne ou se trouve la cellue de reference, de perdre ma formule
Donc je vais partir de la ligne 1 : Cellule I1, pour avoir I3, je decale de 2 lignes, 0 colonnes
=DECALER($I$1;2;0)
ensuite je dois definir ma plage : mon nombre de ligne correspond au nombre de valeur dans ma plage I3:I66 et mon nombre de colonne = 1 : ce qui me donne :
=DECALER($I$1;2;0; nbval($I$3:$I$66);1)
Menu insertion / Nom / Definir
Le nom : coli
fait référence à : mettre la fomule ci-dessus
cliquer sur ajouter
faire pareil avec la colonne J
ensuite remplace tes plages dans ta formule par coli et colj