Posez votre question Signaler

[Excel] Sélectionner des plages non vides [Résolu]

corgeon 422Messages postés lundi 3 avril 2006Date d'inscription 31 août 2012Dernière intervention - Dernière réponse le 25 nov. 2008 à 11:07
Bonjour,
Commençons par expliquer ce que j'aimerais faire :
J'ai une plage de données XY de longueur variable, dont je connais uniquement le nombre maximum de valeurs. De cette plage de données, je récupère les coefficients de la régression linéaire dans 2 cases grâces aux formules :
=INDEX(DROITEREG(J3:J66;I3:I66;;1);1;1) pour le coefficient directeur
et
=INDEX(DROITEREG(J3:J66;I3:I66;;1);1;2) pour l'ordonnée à l'origine
66 étant la ligne maximale, au-delà de laquelle je n'aurais jamais de valeurs.
Le problème est que si mes valeurs s'arrêtent avant la ligne 66, je n'obtiens pas le résultat mais l'indication #VALEUR!. Il faut donc, pour chaque série XY, que je modifie la sélection pour effectuer ce calcul.
Or, j'aimerais automatisé ce calcul, c'est-à-dire ouvrir mon classeur, coller ma série XY et obtenir directement les coefficients de la régression.
Est-ce que quelqu'un pourrait m'aider à réaliser ce que j'aimerais faire ?
Pour vous aider à m'aider, j'ai deux idées, mais je ne sais pas les mettre en oeuvre.
La première serait de sélectionner la plage tant que les cellules ne sont pas vides.
La seconde serait de ne sélectionner que les cellules non vides.
D'avance, je vous remercie pour votre aide.
Lire la suite 
Réponse
+1
moins plus
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.
corgeon 422Messages postés lundi 3 avril 2006Date d'inscription 31 août 2012Dernière intervention - 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 ?
Répondre
wilfried_42 908Messages postés mardi 19 août 2008Date d'inscription ContributeurStatut 8 décembre 2009Dernière intervention - 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
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 :-)
wilfried_42 908Messages postés mardi 19 août 2008Date d'inscription ContributeurStatut 8 décembre 2009Dernière intervention - 24 nov. 2008 à 18:32
re:

dans ce cas, tu remplaces nbval($I$3:$I$66) pare nb.si($I$3:$I$66;"> ")
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Ce document intitulé «  [Excel] Sélectionner des plages non vides  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.