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 :

Fonction Indirect et SI


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Septembre 2020
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2020
    Messages : 29
    Points : 20
    Points
    20
    Par défaut Fonction Indirect et SI
    Bonsoir.

    Je planche depuis un petit moment sur un problème avec une formule INDIRECT() en D6 et comment faire une interdiction d'afficher la liste renvoyer en D11 et H10 et J11, si certaines valeurs ne doivent s'afficher que dans certaine cellules.

    J'ai aussi fait une capture d'écran pour que se sois, à mon humble avis plus parlant, la 1er et 2ème partie montre ce qui devrait être juste, alors que sur la 3ème on vois bien que toute les cellules affiche les valeurs renvoyer par la fonction INDIRECT.

    N'étant pas un professionnel d'Excel, veuillez m'en excuser.

    J'ai joins le fichier excel, ainsi que la capture d'écran.

    Merci d'avance de votre soutien et de votre clémence.

    Bonne soirée.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut

    Je ne suis pas sûr d'avoir compris grand chose.

    Ce que je pense avoir compris : Tu souhaites qu'en fonction du contenu de la cellule D6, les listes déroulante qui se trouvent en dessous soient ou non accessibles.
    Si c'est ça, mis à part avoir un contenu vide dans la liste, je doute qu'il soit possible de faire mieux.

    Peux-tu expliquer comment savoir quelle liste doit être présente ou absente, quel paramètre te permet de le savoir?

    J'ai modifié ton fichier comme suit (il est en PJ)

    • Ajouté une colonne au tableau t_TypeAntenne
    • Dans la seconde colonne tu mets le nom du tableau correspondant à la liste déroulante que tu souhaites voir afficher pour chaque type d'antenne
    • supprimé toutes les étiquettes qui étaient utilisées pour pointer vers t_Ret ou t_Flex
    • utilisé la formule suivante dans les listes de validation
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      =INDIRECT(INDEX(Tab_TypeAntenne;EQUIV(INDIRECT(ADRESSE(6;COLONNE()-MOD(COLONNE()-3;10)+1));Liste_TypeAntenne;0);2))
    • il y a la partie Index(....) de la formule qui est placée dans certain case juste au dessus des listes déroulante, elles ne sont là que pour te montrer leur fonctionnement, tu pourras les supprimer


    ++
    Qwaz
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Septembre 2020
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2020
    Messages : 29
    Points : 20
    Points
    20
    Par défaut Fonction Indirect et SI
    Bonjour.

    Oui, vous avez Parfaitement bien compris et vous m'avez superbement aider, encore mille merci.

    quand vous dite:

    -supprimé toutes les étiquettes qui étaient utilisées pour pointer vers t_Ret ou t_Flex, c'est la liste d'antenne qui était séparée ou une par une ?

    Excel n’étant pas une partie intégrante de mon travail, mais plutôt pour me facilité la vie au travail, pourriez-vous m'expliquez un peu plus en détail votre formule, comme cela au lieu de la recopier bêtement, même si je vais potasser la chose de mon côté, Google est ton ami

    Dans tout les cas, merci infiniment pour votre temps.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Septembre 2020
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2020
    Messages : 29
    Points : 20
    Points
    20
    Par défaut Fonction Indirect et SI
    Bonjour.

    Suite à laisser de votre solution, lors que je sélectionne une antenne qui devrait avoir comme retour la liste "Flex" elle n'apparait pas.

    Comme je n'ai pas encore compris comment fonctionne exactement votre formule, de plus je ne sais pas comment faire apparaitre que liste "Flex" seulement sur la cellule du milieu.

    Cela doit surement être du à mon incompétence en Excel, désolé d'user de votre temps.

    Une belle journée.

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut

    Citation Envoyé par Savat2 Voir le message
    -supprimé toutes les étiquettes qui étaient utilisées pour pointer vers t_Ret ou t_Flex, c'est la liste d'antenne qui était séparée ou une par une ?
    Nom, je parle des cellules nommées que vous utilisiez pour pointer les tableaux, vous trouverez le gestionnaire de noms dans le menu Formule. Toutes les étiquettes qui portent le nom d'une antenne peuvent être supprimées (c'es fait dans le fichier que je vous ai transmis)

    Citation Envoyé par Savat2 Voir le message
    Excel n’étant pas une partie intégrante de mon travail, mais plutôt pour me facilité la vie au travail, pourriez-vous m'expliquez un peu plus en détail votre formule, comme cela au lieu de la recopier bêtement, même si je vais potasser la chose de mon côté, Google est ton ami
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    =INDIRECT( 'permet de pointer une cellule en fonctio de son nom au format text Indirect("A1") pointe la cellule A1
       INDEX( 'Retourne la valeur située dans une plage, au croisement de la ligne et la colonne
          Tab_TypeAntenne; 'La plage (elle comporte ici 2 colonne). C'est un nom de cellule qui pointe l'ensemble du tabelau t_typeAntenne (il n'est pas possible de pointer directement le tableau dans une formule utilisée dans une validation...)
          EQUIV( 'Retourne la position d'une valeur dans une plage (utilisé pour indiquer la ligne)
             INDIRECT( 'Utilisé pour pointer la cellule contenant la valeur à rechercher
               ADRESSE( 'Retourne le nom d'une cellule, on lui fourni la ligne et la colonne
                  6; 'La ligne
                  COLONNE()-MOD(COLONNE()-3;10)+1 'calcule permettant de trouver la colonne (détaillée à la suite)
               )
             ); 
             Liste_TypeAntenne; 'Plage dans la quelle on recherche la valeur
             0 'Paramètre indiquant que la correspondance doit être exact
          );
          2 'Index de la colonne d'où sera issue la valeur retournée (ici la deuxième colonne de Tab_TypeAntenne
       )
    )
    En plus clair
    Le but est de prendre le type d'antenne choisi et d'aller la rechercher dans le tableau tab_TypeAntenne (t_typeAntenne).
    On trouve sur la même ligne mais dans la seconde colonne le nom du tableau qui doit être utiliser pour nourrir les listes déroulantes en cascades.
    On pointe ensuite vers ce tableau pour créer la liste de valeur au sein de la validation.

    Concernant la fonction Adresse.
    On aurait pu directement mettre D$6 à la place mais... si on utilise la même validation pour toutes les liste déroulantes, on voit que ça va merder. En effet la 1ère liste est sur la colonne D, donc elle va aller chercher en D6... La seconde liste déroulante se trouve en colonne H, elle va donc modifier D$6 et a lire H6... sauf que H6 est vide (seule la 1ère cellule d'un groupe fusionné à le contenu de celui-ci). En procédant comme ça seule les 1ère des trois listes déroulantes fonctionnent.
    On pourrait alors mettre $D$6 pour bloquer la ligne ET la colonne. Dans ce cas là, les 3 liste déroulante rouge fonctionne comme attendu mais les 3 verts et les 3 violettes pointent également vers D6... Ce qui obligerait à faire une validation par groupe (une formule pour les rouge, une pour les vertes, une pour les violettes... c'est moyen, surtout si le nombre de groupe devait être plus importants.
    D'où l'utilisation de adresse() avec la formule dans le paramètre Colonne...
    Adresse(Ligne, Colonne)
    On lui indique la ligne 6 pas de soucis, c'est la ligne où se trouve les type d'antenne.
    Pour la colonne, COLONNE()-MOD(COLONNE()-3;10)+1
    Colonne() retourne le numéro de colonne où se situe la formule (ici la validation)
    Mod, c'est l'opérateur mathématique Modulo, il indique le reste d'une division
    On fait colonne()-3, ça permet de décaler l'index pour ramener la colonne D à 1
    On regarde le reste une fois divisé par 10 (10 parce que la groupe de colonne contenant l'antenne suivante se trouve en colonne 11 (toujours avec le décalage de 3). Sans décalage le groupe va de D à M donc de 4 à 13... -3 = 1 à 10.
    Modulo nous retourne le décalage par rapport à le 1ère colonne de chaque groupe. La colonne D renvoie 0, M renvoie 0 aussi, N ->1, O->3, P->4,...
    On va ensuite retrancher cette valeur à l'index de la colonne où la validation est en train de se construire. donc à chaque fois qu'on s'éloigne d'une colonne on se retrouve toujours avec l'index de la 1ère colonne du groupe.

    J'espère que le explications ne sont pas trop nébuleuse.
    Vous pouvez regarder ce qui se passe dans une formule contenu dans une cellule (celles que j'ai mis au dessus de certaine listes déroulante). Pour ça vous cliquez sur la cellule et dans le menu Formule vous allez dans le groupe "vérification des formules" et vous cliquez sur "Évaluation d'une formule". Vous pourrez regarder pas à pas comment Excel interprète les différente section de la formule


    Citation Envoyé par Savat2 Voir le message
    lors que je sélectionne une antenne qui devrait avoir comme retour la liste "Flex" elle n'apparait pas.
    Je n'ai pas renseigné toutes les correspondances dans le tableau "t_Type_Antenne" (onglet Antenne), c'est ce tableau qui défini le tableau qui doit être utilisé pour nourrir les liste déroulantes suivantes.

    Citation Envoyé par Savat2 Voir le message
    de plus je ne sais pas comment faire apparaitre que liste "Flex" seulement sur la cellule du milieu. Cela doit surement être du à mon incompétence
    Pas du tout. En fait je n'ai tout simplement pas su comment vous souhaitiez déterminer quelle liste devait ou non être renseigné.
    Si je comprend bien si le tableau pointé pour faire la liste déroulante est t_Flex_Master_Cell, il faut que seule la ligne du milieu retourne une validation liste correct, c'est bien ça?
    Je vous souhaite une bonne soirée
    ++
    Qwaz

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Septembre 2020
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2020
    Messages : 29
    Points : 20
    Points
    20
    Par défaut Fonction Indirect et SI
    Bonsoir.

    En tout premier lieu, je tiens à vous remercie infiniment pour le temps que vous devez avoir pris pour répondre de façon aussi détaillé.

    En deuxième lieu, c'est tout sauf nébuleux, si on avait eu des profs comme vous, il y aurait beaucoup moins de cran-que des les rues .

    Les explications de la fonction adresse sont juste parfaite et très clair.

    Pour le Tab_TypeAntenne et Liste_TypeAntenne, c'est de ma faute la prochaine fois je retournerai 7 fois ma langue avant de parler.

    "Si je comprend bien si le tableau pointé pour faire la liste déroulante est t_Flex_Master_Cell, il faut que seule la ligne du milieu retourne une validation liste correct, c'est bien ça?"
    C'est tout à fait exact, et les cellules externes (si je peux m’exprimai ainsi) seulement renvoyer t_Ret_Master_Cell.

    Petit éclaircissement de ma part, que j'aurai du préciser depuis le départ, les couleurs c'est une simple MFC d'après la première cellule ex:"D1" qui renvoi le "S1" ou "S2" etc, pour une lecture plus rapide ou plus simple sur le terrain, puisque les étiquettes apposé sur les câbles ou les appareils sont en couleurs, pour un repérage plus efficace.


    Je ne sais comment vous exprimez ma gratitude, plus pour les explications parfaitement limpide, que pour le travail en lui même, sans pour au temps le dénigrer.

    Merci et bonne soirée.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Septembre 2020
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2020
    Messages : 29
    Points : 20
    Points
    20
    Par défaut Fonction Indirect
    Bonjour.

    Suite à toute vos aide, mes fichiers ont bien progressé, encore merci.

    Suite à tout cela, j'ai un souci avec une formule pour limité le choix du menu déroulant, la ou je coince c'est pourquoi sur une cellule cela fonctionne, mais pas dans le menu déroulant ? La ca devient trop complexe pour mes petites connaissances. J'ai mis le fichier en pièce joint ets on peut voir en "D13" que cela fonctionne, mais dès qu'il s'agit de l'introduire dans les données de validation, excel n'accepte pas ?

    Merci d'avance pour toute vos aide.

    Bonne journée.
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut

    Si j'ai bien compris le besoin, une solution:

    en D13 et J13, tu implantes la formule
    =SI(INDEX(Tab_Type_Antenne;EQUIV(INDIRECT(ADRESSE(6;COLONNE()-MOD(COLONNE()-3;10)+1));Liste_Type_Antenne;0);2)<>"t_Ret_Master_Cell";INDEX(Tab_Type_Antenne;EQUIV(INDIRECT(ADRESSE(6;COLONNE()-MOD(COLONNE()-3;10)+1));Liste_Type_Antenne;0);2);"")

    Elle regarde dans le tableau si la valeur est différente de "t_Ret_Master" pour le type d'antenne sélectionné, elle retourne le contenu du tableau (soit "t_Flex_Master", soit "Not_Ret"). Dans le cas contraire, elle retourne "", la liste ne contiendra rien.

    En H13
    =SI(INDEX(Tab_Type_Antenne;EQUIV(INDIRECT(ADRESSE(6;COLONNE()-MOD(COLONNE()-3;10)+1));Liste_Type_Antenne;0);2)<> "t_Flex_Master_Cell";INDEX(Tab_Type_Antenne;EQUIV(INDIRECT(ADRESSE(6;COLONNE()-MOD(COLONNE()-3;10)+1));Liste_Type_Antenne;0);2);"")

    Elle teste si le type est différent de "t_Flex_Master_Cell" cette fois et retrournera donc "t_Ret_Master" ou "Not_Ret". Sinon "".

    Tu peux copier les cellules de D13 à H13, puis les coller en N13, X13,....

    Ensuite tu modifies la validation de D11 (penses à cocher la petite case en bas de la fenêtre pour que toutes les validation identiques soient modifiées.
    =INDIRECT(D$13)

    Si l'antenne est de type Flex, les deux validations extérieures sont remplies. Si type Ret, seule la validation centrale est remplie. Et si Not_Ret, les trois sont renseignées.

    Pour gagner en esthétisme, il suffira de masquer la ligne 13.

    Le groupe complet peut-être copier coller pour créer une nouvelle étiquette, les formules et validations suivront.

    ++
    Qwaz

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Septembre 2020
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2020
    Messages : 29
    Points : 20
    Points
    20
    Par défaut Fonction Indirect et SI
    Bonsoir.

    Bien ben à part Merci et Vous êtes vraiment trop fort, je n'ai pas d'autres mots.
    Ah si merci pour votre temps accordé, vraiment très appréciable.

    Bien, il ne me reste plus qu'à fermer ce sujet.
    Encore merci.

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

Discussions similaires

  1. [XL-2003] Fonction INDIRECT sur plusieurs feuilles
    Par Sécateur dans le forum Excel
    Réponses: 3
    Dernier message: 12/06/2009, 08h03
  2. Fonction Indirect nom de feuille variable
    Par cazimiro33 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/09/2008, 16h17
  3. Réponses: 1
    Dernier message: 27/05/2008, 20h48
  4. je ne sais pas utiliser la fonction "indirect"
    Par kingtang dans le forum Excel
    Réponses: 5
    Dernier message: 30/09/2007, 21h33
  5. Fonction INDIRECT avec variable sur n° de colonne
    Par mat.guillaume dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/08/2006, 18h04

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