Etendre une plage de données "automatiquement"

Fermé
Lionel - Modifié par Lionel le 27/06/2015 à 08:26
 Lionel - 29 juin 2015 à 19:40
Bonjour,

je vous explique ce que je cherche à faire:
dans un tableau, je cherche à savoir si j'ai des cellules vides. Donc j'utilise la formule NB.VIDE sur la plage de données correspondant à mon tableau.

Le problème c'est que ce tableau est constamment modifié, par ajout ou suppression de lignes / de colonnes et du coup la plage de données définie dans ma formule n'évolue pas en fonction du nombre de lignes ou de colonnes qu varient.

est-il possible de faire variée cette plage sans avoir à le faire manuellement?

En résumé : J'ai NB.VIDE(A2:T275) et je voudrai que si j'ajoute une ligne excel comprenne et modifie tout seul la formule en NB.VIDE(A2:T276)

PS: c'est surtout les lignes qui varient et la colonne A est toujours remplie lorsqu'une ligne est ajoutée (au cas ou ça puisse aider)

merci d'avance


5 réponses

Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 27/06/2015 à 08:32
Bonjour,

tu peux donner les bornes de ta plage, exemple A2:X20
ensuite quel type de formule utilises tu en fonction de ta plage

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Bonjour,
J'ai NB.VIDE(A2:T275) et je voudrai que si j'ajoute une ligne excel comprenne et modifie tout seul la formule en NB.VIDE(A2:T276)
(désolé je viens juste de le rajouter dans le corps de ma question :-))
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
27 juin 2015 à 08:31
Re,
quel type de données sont as tu dans tes colonnes, le mieux serait d'avoir un exemple de fichier que tu peux joindre à partir de ce lien
https://www.cjoint.com/
0
je n'ai pas le fichier avec avec moi (c'est pour le boulot :-)) et je peux pas te faire de "copie" car je n'ai pas excel sur mon PC perso.
En bref, les colonnes contiennent soit des données inscrites manuellement (texte et chiffre) soit des formules qui permettent de coter ce qui a été inscrit manuellement.
c'est un fichier qui permet de faire une cotation des risques en fonction des données que l'on entre.
Du coup, le nombre de ligne varie en fonction de ce que j'évalue.

Mais si besoin je te ferais parvenir un fichier similaire en début de semaine prochaine.
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 27/06/2015 à 08:51
Re,

en attendant ton fichier, si colonne T tu as au moins une donnée numérique

=NB.VIDE(A2:INDIRECT(ADRESSE(MAX(EQUIV(9^9;T:T);EQUIV("z";T:T));20)))

si toutes tes cellules de la colonne T ne contiennent que du texte ou sont au format texte tu as ce type de formule matricielle à confirmer avec les trois touche Ctrl, Shift et Entrée, et si tu fais bien la formule se placera entre ces accolades {}
le problème avec les matricielles, c'est qu'elles sont gourmande en ressource ce qui ralenti les mises à jour
=NB.VIDE(A2:INDIRECT(ADRESSE(MAX(LIGNE(T:T)*NON(ESTVIDE(T:T)));20)))
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Cool merci,
j'essaierai ça.
sauf que ma dernière colonne contient une formule. Est-ce que c'est problématique?
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
27 juin 2015 à 08:53
Re,
reviens sur mon post 4 j'ai rajouté une formule, teste en priorité la première
0
Lionel > Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024
27 juin 2015 à 09:09
Merci,

Je teste ça lundi et je te tiens au courant si ça ne me convient pas.
Bon week end
0
Lionel > Lionel
29 juin 2015 à 19:36
Bonjour,
Merci Mike,
Je testé la 1ère formule aujourd'hui et ça marche nickel.
J'ai juste simplifier la formule en :
=NB.VIDE(A2:INDIRECT(ADRESSE(EQUIV(9^9;A:A);20)))
car je voulais que le remplissage de la colonne A soit le déclencheur pour ajouter une ligne.

PS : pour ma culture perso : j'ai décortiqué la formule que tu m'as donnée parce que je ne connaissais pas les fonctions ADRESSE, MAX, EQUIV et INDIRECT.
J'ai compris leur fonctionnement maintenant mais il reste une chose que je ne comprends pas.
Si je tape :
=ADRESSE(EQUIV(9^9;A:A);20)
le résultat renvoyé est T276 soit la dernière cellule de mon tableau (qui varie en fonction du remplissage de ma colonne A).
J'aurai donc pensé que la formule :
=NB.VIDE(A2:ADRESSE(EQUIV(9^9;A:A);20)) aurait suffit pour fonctionner surtout que la fonction INDIRECT renvoi simplement la valeur numérique de T276.
d'où ma question : à quoi sert exactement la fonction INDIRECT dans ce cas?
Son utilisation est visiblement essentiel puisque la formule ne fonctionne pas sans l'ajout de cette fonction.

Merci d'avance, bonne soirée.
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
27 juin 2015 à 22:55
Bonjour à tous,
Une autre possibilité en nommant la plage de manière dynamique :
Nom : maplage
Fait référence a :
=DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1;20)
Dans la formule de la feuille utiliser le nom :
= NB.VIDE(maplage)


0
Bonjour,

La solution de mike-31 me convient mais je ferai un test sur cette formule pour mieux comprendre la fonction DECALER.

Bonne soirée, merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Excel-worker Messages postés 589 Date d'inscription mardi 7 avril 2015 Statut Membre Dernière intervention 23 juillet 2015 58
29 juin 2015 à 09:44
Bonjour à tous,

Personnellement, je suis le raisonnement de Mike-31 (que je salue) en te conseillant de sélectionner ta plage, mettre sous forme de tableau puis de mettre le nom de ton tableau dans la formule.

Exemple : =NB.VIDE(Tableau1)

A chaque fois que tu rajouteras une ligne dans ton tableau, ta formule suivra.

Cordialement,
Excel-worker
0