IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Sélectionner une colonne à partir d'un chiffre [XL-2003]


Sujet :

Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 67
    Points : 54
    Points
    54
    Par défaut Sélectionner une colonne à partir d'un chiffre
    Bonjour Bonjour,



    Je cherche à faire quelque chose d'assez particulier sous excel (pas de vba svp). Je souhaite sélectionner une colonne (pour faire un SUMPRODUCT à partir de cette colonne sélectionnée) à partir d'un chiffre qui m'est renvoyé par un MATCH. Le MATCH renvoie 56. Je souhaite donc sélectionner comme plage de données la colonne 56.

    Comment écrit-t-on cela sous EXCEL (pas de VBA svp)?


    Merci d'avance au maître qui trouvera.

    Coklin

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    est-ce que tu ne peux pas t'en tirer avec la fonction ADRESSE ? (sur le modele =ADRESSE (n° de ligne;n° de colonne;relatif ou absolu)

    Si tu figes le n° de ligne (a 1 par exemple) et que tu mets ton match en colonne et que tu mets 4 pour que ca soit relatif, tu hérites de la premiere cellule de la colonne matchée
    et apres, il reste a faire un gauche(; longueur -1) et tu as juste la colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(ADDRESS(1;MATCH();4);NBCAR(ADDRESS(1;MATCH();4))-1)
    Si ton match ne commence pas a la colonne A, il faut ajouter les colonnes manquantes dans la formule
    Si par exemple, tu matchs sur les colonnes D a M, il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(ADDRESS(1;MATCH()+3;4);NBCAR(ADDRESS(1;MATCH()+3;4))-1)
    Avec ca tu as ta lettre de colonne
    Et apres, tu fais un indirect pour recomposer la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT(GAUCHE(ADDRESS(1;MATCH()+3;4);NBCAR(ADDRESS(1;MATCH()+3;4))-1)&":"&GAUCHE(ADDRESS(1;MATCH()+3;4);NBCAR(ADDRESS(1;MATCH()+3;4))-1))

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    660
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 660
    Points : 782
    Points
    782
    Par défaut
    Bonjour,

    Cela peut aussi se faire avec la fonction DECALER.
    Vois l'exemple en pièce jointe.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 67
    Points : 54
    Points
    54
    Par défaut
    Bonjour,


    Merci pour vos réponses.

    Les problèmes que je rencontre :

    1) je suis sur des ordis protégés (travail) je ne peux donc pas ouvrir les pièces jointes.

    2) La plage de données que je veux sélectionner est sur une autre feuille. J'essaie donc de faire 'Sheet1'!&Address(...) mais ça ne marche pas. COmment faire dans ces cas là svp?

    Merci d'avance.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    660
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 660
    Points : 782
    Points
    782
    Par défaut
    Bonjour,

    Je te détaille mon exemple, ainsi tu pourras le reconstituer.

    En B2 tu saisis 3, c'est le nombre de colonnes qu'il faut décaler.
    En D2:F11 tu saisis des nombres quelconques, tu peux laisser des cellules vides.
    Dans la cellule où tu peux obtenir le résultat tu saisis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((DECALER(A2;;B2;10))*DECALER(A2;;B2+1;10))
    Pour tester la formule, modifie la valeur 3 en B2 par 4, et/ou modifie les valeurs dans le tableau D2:F11

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 67
    Points : 54
    Points
    54
    Par défaut
    Rebonjour,


    Merci à nouveau pour ta réponse rapide. Toutefois, un problème se pose dans ta réponse :

    1) Ma cellule de départ est variable et se situe dans une autre feuille que celle sur laquelle je fais mes calculs. Dès lors, je souhaite utiliser OFFSET(ADRESS,,,,) mais je ne parviens pas à trouver le moyen de lui faire comprendre qu'il doit partir de la feuille2 et pas celle des calculs.

    En résumé, je voudrais faire OFFSET('Feuille2'!Address(...),,,,) Sauf que ça ne marche pas.


    Any idea?

    Merci d'avance

    Coklin

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    Citation Envoyé par coklin Voir le message
    2) La plage de données que je veux sélectionner est sur une autre feuille. J'essaie donc de faire 'Sheet1'!&Address(...) mais ça ne marche pas. COmment faire dans ces cas là svp?
    C'est a mettre dans l'indirect

    Admettons qu'on met en A1 le code qui trouve la bonne lettre (pour aider a la lisibilité de la formule suivante)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(ADDRESS(1;MATCH()+3;4);NBCAR(ADDRESS(1;MATCH()+3;4))-1)
    le indirect, si c'est sur la meme page donne
    Et si c'est sur une autre page ca donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =indirect("Sheet1!"&A1&";"&A1)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 67
    Points : 54
    Points
    54
    Par défaut
    Bonjour emmanuelle,


    Avant tout, je tiens à te reMercier de m'aider,

    Mon problème est que je suis sur excel américain. La syntaxe ne doit pas être la même. J'ai essayé la tienne, mais sans succès.

    Il me semble que dans la version française, il faut aussi que les noms des feuilles soient entre cotes ('Feuil1'!), non?

    Voici ce que j'ai essayé :
    MATCH(C38,"'CCT Historique'!" & INDIRECT(C6) & ";" & INDIRECT(C6),0) mais il me renvoie #REF (ils m'énervent ces # machins!)


    Est-ce que tu as une idée pour procéder autrement?

    Merci d'avance

    Coklin

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 67
    Points : 54
    Points
    54
    Par défaut
    Salut Emmanuelle,


    J'ai fini par réussir ce que je voulais faire. Ton aide m'a été très utile car elle m'a permis d'essayer de nouvelles choses qui désormais fonctionnent.

    Merci encore.

    Je me mets en résolu.

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    lol et moi qui me fatiguais a traduire en fracais alors que j'ai un excel en anglais

    Formule qui donne la lettre de colonne (qu'on range en A1 par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =LEFT(ADDRESS(1;MATCH(...);4);LEN(ADDRESS(1;MATCH(...);4))-1)
    (ca présupose que tu as déja la formule de match qui te donne ne n° de la colonne)
    Ca va donner comme résultat une lettre de colonne, en format texte et en ajusucule (B par exemple)

    Formule pour recomposer ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT("Sheet1!"&A1&":"&A1)
    c'est équivalent a écrire la plage Sheet1!B:B
    Tout seul, ca donne 0 (parce qu'il ne sait pas afficher une palge dans une cellule) mais tu peux t'en servir dans une autre formule. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUM(INDIRECT("Sheet1!"&A1&":"&A1))
    [Edit] Ah ben tant mieux si tu as trouvé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtrer une colonne à partir d'une cellule
    Par D-D-Du-06 dans le forum Excel
    Réponses: 7
    Dernier message: 21/04/2016, 11h26
  2. Sélectionner une colonne selon valeur inexistante ?
    Par ctobini dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/02/2008, 15h49
  3. Réponses: 2
    Dernier message: 31/01/2008, 17h58
  4. [DOM] Comment sélectionner une option à partir de sa value
    Par CrazySeb dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/06/2007, 11h50
  5. Réponses: 24
    Dernier message: 08/05/2006, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo