Renvoyer une colonne (plage) par le contenu de la 1ere cell

Bonjour à tous,

j'aurais besoin d'aide pour récupérer une colonne en tant que plage (genre A:A) mais par l'intermédiaire du contenu de la première cellule de cette colonne.

En fait, j'utilise une formule du style: " =SOMME.SI.ENS(INDIRECT("'"&MoisCourant2&"'!CV5:CV350"); ... " et au lieu de désigner la colonne par CV5:CV350, j'aimerais la désigner par l'intermédiaire du contenu de la première cellule de cette colonne:

"real_ytd2017_caext".

Quelqu'un pourrait-il m'aider sur ce sujet ?

Je vous remercie et vous souhaite une bonne journée !

SkillzZ

Bonjour,

Essaie d'être un peu plus clair sur le comment la plage doit être désignée. S'agit-il de la nommer ?

Et illustre ton propos avec un modèle, ce ne sera pas de trop !

Cordialement.

Merci pour ta réponse MFerrand.

Il m'est malheureusement impossible de poster mon fichier ici. En revanche je peux rendre mon explication plus claire, d'autant que mon problème n'est pas compliqué.

Dans une formule SOMME.SI.ENS du style SOMME.SI.ENS(INDIRECT("'"&MoisCourant2&"'!CV5:CV350");...;...), j'aimerais désigner la colonne CV d'une autre manière. Le contenu de la première cellule de la colonne CV est "real_ytd2017_caext". C'est par ce contenu que j'aimerais désigner la colonne CV. Car la colonne qui m'intéresse contiendra toujours "real_ytd2017_caext" dans sa première cellule, en revanche, ce ne sera pas tout le temps la colonne CV.

Il y a peut-être quelque chose à faire avec la fonction DECALER, en renvoyant la colonne qui m'intéresse (en tant que plage donc). Mais dans le cas où c'est possible, je ne sais pas si je pourrais placer un DECALER(...) à l'intérieur d'un INDIRECT..

Voici un fichier exemple que j'ai créé rapidement, il est simplifié mais le principe est le même. J'aimerais remplacer la désignation de la colonne E1:E14 (et non pas CV), par le contenu de la première cellule de la colonne E.

12exemple.xlsx (9.53 Ko)

Ah ! Pas encore vu ton exemple...

J'avais produit à essayer :

Sub NommerCol()
    Dim plg As Range, nom$, i%
    nom = "real_ytd2017_caext": i = 1
    With Worksheets("NomFeuille") 'Remplacer par nom de la feuille
        Do
            If .Cells(1, i) = nom Then Set plg = .Cells(1, i): Exit Do
            i = i + 1
        Loop While .Cells(1, i) <> ""
        If Not plg Is Nothing Then
            ThisWorkbook.Names.Add nom, .Name & "!" & plg.Offset(4).Resize(346).Address
        End If
    End With
End Sub

Procédure pour nommer la plage : nommée avec contenu de ta cellule tête, mais on la la nommer comme on veut.

Le nom prend alors place dans la formule, sans utilisation de INDIRECT.

Cordialement.


Par contre, ton Exemple ne m'inspire pas !

Merci pour ta réponse et le temps passé à écrire la macro !

Malheureusement, j'utilisais le système des noms de cellules avant, mais je me suis rendu compte qu'il ne résout pas mon problème. En effet, on ne peut pas affecter deux noms identiques sur deux feuille différentes en raison de l'unicité des noms d'un classeur. du coup, ma formule se référera toujours à la colonne CV de la feuille 1 (mois de janvier) par exemple (l'accès à cette feuille est donné par MoisCourant2) et ne pourra pas se référer à ma feuille 2 par exemple en changeant la valeur de la cellule nommée MoisCourant2.

Du coup je ne crois pas que ça résout mon problème :/

Je ne parviendrai pas à expliquer mon problème mieux qu'avec le fichier excel que je t'ai joins malheureusement . Je ne vois pas comment faire . Quand tu dis que mon exmple ne t'inspire pas, c'est que tu ne comprends pas quel est mon souci, ou que tu ne vois pas comment le régler ?

j'ai dit que cela ne m'inspirait pas parce que tu présentes une feuille censée être la feuille de données, avec principalement des vides. Ce qui ne permet pas un vision de la structure réelle des données... Si la zone occupée par les données n'occupent pas toute la feuille, elle doit tout au moins remplir (pleinement) la zone qu'elle occupe... Là on est proprement déboussolé !

Je vois bien le problème que tu essaies de surmonter, variation de la plage test dans une formule...

Si comme il semble ta plage additionnable est fixe, il serait bon de nommer celle-là et formuler avec DECALER par rapport à la plage fixe (décalage défini avec EQUIV).

Autre possibilité, basculer tout le calcul en VBA...

Cordialement.

Dans mon fichier original, la situation est exactement la même, sauf que les données (dans la colonne C et E dans la feuille "1" de mon exemple) s'étalent dans une colonne de la ligne 5 à 300 . C'est dans la feuille "2" que je récupère la somme des données de la colonne E, colonne que j'identifie d'une manière que j'aimerais changer

Les solutions qui passent par l'utilisation de noms définis (plages ou cellules) ne me conviennent pas car on ne peut pas donner des noms identiques sur deux feuilles différentes.

Je te remercie beaucoup pour ton aide MFerrand, je vais voir ce que je peux faire, peut-être bien que VBA est la seule solution !

Passe une bonne journée !

SkillzZ

Rechercher des sujets similaires à "renvoyer colonne plage contenu 1ere"