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
8532
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
6 avril 2021
-
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
8532
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
6 avril 2021
1 644
Bonjour,

Regardes la fonction DECALER()
2
Merci

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

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
53576
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
7 avril 2021
15 623 >
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
8532
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
6 avril 2021
1 644
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
8532
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
6 avril 2021
1 644 >
Messages postés
8532
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
6 avril 2021

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
8532
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
6 avril 2021
1 644 >
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
25947
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
7 avril 2021
5 863
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 :)