Incrémenter les lignes en fonction des colonnes
Bonjour,
J'aimerais compter le nombre de cellules remplies dans mes colonnes. Pour cela, je sais qu'il faut utiliser la fonction NBVAL. Mon problème est le suivant :
Voici le cas de mon exemple (mis en pièce jointe) qui est évidemment avec très peu de données; mais mon document original est colossal!
j'ai deux feuilles : feuille1 et feuille2
Dans la feuille1 j'ai 6 colonnes, A, C et E sont celles qui m'intéressent pour ce cas précis. Ce sont les colonnes dans lesquelles j'aimerais compter le nombre de cellules remplies.
Dans la feuille 2 je n'ai qu'une colonne qui va stocker les comptes.
En A1 est stocké le nombre de cellules remplies dans la colonne A de la feuille 1 ; A1=NBVAL(Feuil1!A2:A14)
En A2 est stocké le nombre de cellules remplies dans la colonne C de la feuille 1 ; A2=NBVAL(Feuil1!C2:C14)
En A3 est stocké le nombre de cellules remplies dans la colonne E de la feuille 1 ; A3=NBVAL(Feuil1!E2:E14)
Donc en faisant cela j'ai le résultat final attendu mais le problème c'est que je n'ai pas que trois colonnes. Mais 600! Y aurait-il un moyen d'incrémenter sur les lignes (A1:A600 ; pour la feuille 2) en fonction des colonnes (A, C, E, G...etc ; de la feuille 1)? Vous avez remarqué que dans la feuille 1, les colonnes vont de deux en deux!
Merci
zazoo
Bonjour zazoo,
Essaie avec cette formule à mettre en A2 de la feuille2 :
=NBVAL(DECALER(Feuil1!$A$2;;2*LIGNE()-4;13;1))
La fonction DECALER te permet de sélectionner une plage dynamique.
La partie 2*LIGNE()-4 te permet ici de déplacer la plage où tu comptes les valeurs, de 2 colonnes vers la droite à chaque fois que tu passes à la ligne suivante dans la feuille2.
Le 13 est à adapter. C'est le nombre de lignes que contient ton tableau de la feuille1.
Merci beaucoup
Néanmoins, je ne comprends pas très bien pourquoi 2*LIGNE()-4 fait cela.
LIGNE() renvoie le numéro de la ligne, n'est-ce pas?
Donc si je suis en A2 LIGNE() = 2 et 2*LIGNE()-4 = 0
Donc si je suis en A3 LIGNE() = 3 et 2*LIGNE()-4 = 2 (je décale de 2)
Donc si je suis en A4 LIGNE() = 4 et 2*LIGNE()-4 = 4 (je décale de 2 par rapport à la précédent et donc 4 par rapport à la première?)
Donc si je suis en A5 LIGNE() = 5 et 2*LIGNE()-4 = 8 (et là qu'est-ce qui se passe?)
J'ai constaté que même si j'ajoute des colonnes votre formule fonctionne donc c'est bien moi qui n'est pas compris comment l'utiliser...
Merci de votre aide
zazoo
Bonjour
zazoo a écrit :Donc si je suis en A5 LIGNE() = 5 et 2*LIGNE()-4 = 8 (et là qu'est-ce qui se passe?)
Il se passe que tu dois réviser ta table de 5. (Je plaisante - C'est bien sûr une étourderie de ta part)
2*5 = 10
10-4 = 6
Amicalement
Nad
Merci beaucoup
Néanmoins, je ne comprends pas très bien pourquoi 2*LIGNE()-4 fait cela.
LIGNE() renvoie le numéro de la ligne, n'est-ce pas?
Donc si je suis en A2 LIGNE() = 2 et 2*LIGNE()-4 = 0
Donc si je suis en A3 LIGNE() = 3 et 2*LIGNE()-4 = 2 (je décale de 2)
Donc si je suis en A4 LIGNE() = 4 et 2*LIGNE()-4 = 4 (je décale de 2 par rapport à la précédent et donc 4 par rapport à la première?)
=NBVAL(DECALER('feuil1'!$A$2;;2*LIGNE()-4;13;1))
$A$2 (c'est la colonne A ou je commence à compter dans la feuille 1? Et 2 parce que en '1' il y a le nom de la colonne?)
Pourquoi deux ";"?
Ou se trouve l'information qui dit que c'est sur les colonnes qu'on va se déplacer de deux à chaque fois?
Et enfin pourquoi "1" à la fin?
J'ai constaté que même si j'ajoute des colonnes votre formule fonctionne donc c'est bien moi qui n'est pas compris comment l'utiliser...
Merci de votre aide
zazoo
-- 01 Avr 2011, 15:12 --
Désolé Nad, je viens de voir ta réponse...
Et oui, étourderie! Excusez moi...
Zazoo
Re,
J'attendais tes questions pour expliquer car pas facile d'expliquer sinon.
Alors :
C'est ça. Et les dollars c'est pour bloquer la cellule A2 lorsque tu étires ta formule.zazoo a écrit :$A$2 (c'est la colonne A ou je commence à compter dans la feuille 1? Et 2 parce que en '1' il y a le nom de la colonne?)
Voici ce que dit l'aide Excel concernant la fonction DECALER :zazoo a écrit :Pourquoi deux ";"?
DECALER(réf;lignes;colonnes;hauteur;largeur)
La "réf" est la cellule à laquelle tu vas décaler. (ici : A2)
"lignes" est le nombre de ligne que tu souhaites décaler par rapport à A2. Ex : si t'avais mis 5 ça aurait fait A7.
Ici cet argument est omis (d'où les deux ";") car on a pas besoin de décaler. On aurait pu mettre ";0;" au lieu de ";;"
"colonnes" est le nombre de colonnes que tu souhaites décaler. Ici 2*LIGNE()-4 te permet de décaler de 2 en 2 à chaque fois que tu passes à la ligne suivante.
C'est peut-être pas clair, alors n'hésite pas à demander des précisions ou consulter l'aide excel.
"hauteur" c'est le nombre de ligne que contient ton tableau (feuille1). ici : 13 lignes
"largeur" c'est le nombre de colonne du tableau dans lequel tu comptes tes valeurs. ici : 1 = 1 colonne.
Re
J'avais préparé un petit fichier sur ce lien :
https://forum.excel-pratique.com/cours-astuces/fonction-decaler-t17830.html
Ça peut t'aider à comprendre la fonction DECALER
Nad
Salut Nad,
Une illustration vaut effectivement mieux que 1000 mots ! Nickel ton fichier.
super nad!
merci
-- 01 Avr 2011, 16:06 --
Bonjour,
et oui je sais que j'ai déjà dit que le problème était résolu, mais un autre se pose...
première feuille : 1-10, mes données que je veux compter.
feuille 2 : le résultat des comptes (avec la formule que vous m'avez donnée et adaptée).
Ca marche puisque en C2 j'ai le bon compte. Mais après ce n'est plus le cas, que 576!
Le problème c'est le format de me cellules en J, L, N, P, R, T, V, X, Z
Les valeurs dans ces colonnes sont des copies d'une autre colonne (la colonne H). Mais en faisant cette copie, les cellules vides sont devenues des "0". Or ca ne vas pas pour que je puisse faire mes comptages. Du coup je suis passée en format de cellule standard;standard;;
J'ai bien récupéré des cases vides mais Excel me les compte comme si elles étaient pleines????
Que dois-je faire?
Merci
zazoo
Ps: J'ai aussi ouvert un autre message pour que d'autres jettent un oeil.