Plage de données variable dans formule Excel [Résolu/Fermé]

Signaler
Messages postés
4
Date d'inscription
vendredi 28 avril 2017
Statut
Membre
Dernière intervention
1 mai 2017
-
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
-
Bonjour à tous,

Je souhaite dans la formule ci-dessous, faire varier le nom de la colonne de la plage de données (A, B, C,...) en fonction d'une variable

"=NB.SI.ENS('Database SA'!A4:A1000;1)"

Ma variable est en chiffre (Colonne A = 1)

Je souhaite que si ma variable est 3, la plage de données de ma formule est la colonne C au lieu de la colonne A

Par exemple, je veux que ça donne "=NB.SI.ENS('Database SA'!C4:C1000;1)" de manière automatique

Je sais que mon problème est très simple en VBA mais s'il y a un moyen en formule, je suis preneur

Merci par avance

Julien

2 réponses

Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 463
Bonjour,

Regardes la fonction DECALER()
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60545 internautes nous ont dit merci ce mois-ci

Messages postés
52263
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
14 septembre 2020
14 043 >
Messages postés
4
Date d'inscription
vendredi 28 avril 2017
Statut
Membre
Dernière intervention
1 mai 2017

Ta colonne de base, c'est A (ou 1) !
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 463
Hein ????
Une colonne de base ?

Si ta variable est en B1 :
=NB.SI.ENS(DECALER('Database SA'!A4:A1000;0;$B$1-1);1)
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 463 >
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020

PS : plus simple :
=NB.SI(DECALER('Database SA'!A4:A1000;0;$B$1-1);1)
Messages postés
4
Date d'inscription
vendredi 28 avril 2017
Statut
Membre
Dernière intervention
1 mai 2017

Merci beaucoup. J'ai dû mal à comprendre le fonctionnement de cette formule mais elle marche à perfection
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 463 >
Messages postés
4
Date d'inscription
vendredi 28 avril 2017
Statut
Membre
Dernière intervention
1 mai 2017

Bonjour,

La fonction DECALER() est assez simple : comme son nom l'indique, elle permet de décaler une plage de cellules, d'un nombre de lignes et d'un nombre de colonnes définis dans les arguments de la fonction.
Dans ton cas c'est la plage 'Database SA'!A4:A1000 qui est décalée de 0 lignes (c'est-à-dire qu'elle n'est pas décalée dans ce sens) et de B1-1 colonnes.
Quand B1=1, B1-1 = 0 donc pas de décalage.
Quand B1=3, B1-1 = 2 donc décalage de 2 colonnes, la fonction DECALER renvoie donc la plage 'Database SA'!C4:C1000.
.
Messages postés
25266
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
13 septembre 2020
5 453
Bonjour

si vous tenez absolument à ne pas décaler (ce serait dommage, mais enfin:
avec votre variable en X1

=NB.SI.ENS(INDIRECT(ADRESSE(4;X1;;;"Data base")&":"&ADRESSE(1000;X1));1)

sélectionnera la colonne dans data base dont la position dans la feuille est en X1

attention aux signes, il y en a une poignée!!

par contre, pourquoi NB.SI.ENS si vous n'avez qu'un argument à détecter?


crdlmnt

La qualité de la réponse dépend surtout de la clarté de la question, merci!
Messages postés
4
Date d'inscription
vendredi 28 avril 2017
Statut
Membre
Dernière intervention
1 mai 2017

Merci. Ce n'est pas que je ne voulais pas utiliser la fonction "décaler", c'est que j'ai dû mal à comprendre son fonctionnement.
Et le N.SI.ENS, c'était justement parce que je pensais qu'il suffisait de rajouter un argument pour le choix de la colonne
La réponse de Patrice donne le bon résultat :)
Me voilà avec un tableau dynamique sans avoir besoin de passer par une macro :)