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 :

si.multiple avec plusieurs retour vrai concaténés dans une seule cellule [XL-365]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mai 2020
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2020
    Messages : 50
    Points : 20
    Points
    20
    Par défaut si.multiple avec plusieurs retour vrai concaténés dans une seule cellule
    Bonjour à tous,

    Je viens vous pour une piste avec ce type de problème:

    Soient les lignes des colonnes BE, BF, BG et BH qui comprennent des montants qui peuvent être nul (cellule vide) ou non nul.

    Dans la colonne BI d'une ligne (ligne 100 par exemple), je souhaite renvoyer en cellule BI:100 une combinaison de lettre dont chaque lettre est le résultat du test des colonnes BE:100, BF: 100, BG:100, BH:100, BG:100;BH:100.

    Ce test est:

    si BE:100 différent de 0 alors renvoie "A" sinon "rien"
    si BF:100 différent de 0 alors renvoie "B" sinon "rien"
    si BG:100 différent de 0 alors renvoie "C" sinon "rien"
    si BH:100 différent de 0 alors renvoie "D" sinon "rien"

    Comment organiser une suite de test sur BE:100, BF:100, BG:100, BH:100 de telle sorte qu'en BI:100 j'ai le renvoi de ces 4 tests. Je suis censé pouvoir avoir comme retour A, mais aussi BCD par exemple.
    J'ai pensé à la fonction SI.MULTIPLE mais je ne vois pas comment l'organiser pour avoir un résultat qui synthétise le résultat des 4 tests.
    Une idée? je ne trouve pas sur la toile de réponse à un problème de ce type.

    Merci de votre attention,

  2. #2
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mai 2020
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2020
    Messages : 50
    Points : 20
    Points
    20
    Par défaut
    En combinant si.multiple avec la fonction concaténer... ce serait possible?

  3. #3
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =JOINDRE.TEXTE(;;SI(BE100:BH100<>0;CAR(COLONNE(BE100:BH100)+8);""))
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mai 2020
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2020
    Messages : 50
    Points : 20
    Points
    20
    Par défaut
    Merci 78 Chris,
    Je veux bien une explication car je ne vous suis pas. Je ne suis pas assez expérimenté.
    Je comprend que vous renvoyez la numéro des colonnes qui sont l'objet du test mais après je ne comprends l'emploi de la fonction CAR affecté d'un +8.
    Je vais tester mais je risque d'avoir à apporter des modifications, et j'ai besoin de comprendre pour faire ça.
    En tout cas merci de l'attention

  5. #5
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 410
    Points : 2 871
    Points
    2 871
    Par défaut
    Bonjour

    Voici une autre solution peut-être plus simple à comprendre (mais moins subtile) avec la formule : =SI(BE100<>0;"A";"") & SI(BF100<>0;"B";"") & SI(BG100<>0;"C";"") & SI(BH100<>0;"D";"")

    Il s'agit tout simplement de quatre SI mis bout à bout (on dit se concaténer).

    En espérant que cela aide.

    Bon après-midi

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Salut.

    Le +8 vient du fait que la colonne BE est la colonne 57 et que le code de A est égal à 65. La matricielle va boucler sur BE:BH et reprendre l'une des 4 première lettres de l'alphabet.

    Perso, j'aurais variabilisé le 8 car ici, la formule fonctionne si tu ne modifies pas tes colonnes. Si tu décales tes colonnes vers la gauche ou la droite, tu devras ajuster la constante. Je ferais ceci:
    Code excel : Sélectionner tout - Visualiser dans une fenêtre à part
    =JOINDRE.TEXTE(;;SI(BE1:BH1<>0;CAR(COLONNE(BE1:BH1)+65-COLONNE(BE1));""))


    Perso, je préfère la solution de Pierre Dumas qui lie moins la formule à la situation particulière des colonnes et de la feuille.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 415
    Points : 16 257
    Points
    16 257
    Par défaut
    Bonjour

    D'accord avec la variabilisation proposée par Pierre F (j'ai eu une arrière pensée en postant mais pas allé au bout )

    Petit avantage si on ajoute des colonnes on continue automatiquement avec E, F, etc, de même si on en enlève, on ne touche pas à la formule (en dehors de la plage à adapter et dans la limite des 26 lettres de l'alphabet)

    Le nombre de colonnes étant limité à 4, la solution de Pierre D est plus simple à assimiler si tu débutes
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mai 2020
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2020
    Messages : 50
    Points : 20
    Points
    20
    Par défaut
    Merci à tous pour cet éventail de réponse. J'ai compris la méthode avec CAR et COLONNE et je trouve ça très beau.
    J'essaierai de faire un retour plus complet.

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

Discussions similaires

  1. [XL-2016] Multiples valeurs dans une seule cellule à dispatcher dans plusieurs cellules
    Par pimpom81 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/05/2019, 14h24
  2. Réponses: 1
    Dernier message: 14/11/2017, 10h59
  3. [XL-2010] Concaténer plusieurs cellules d'une table dans une seule cellule
    Par fguillonnet dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 19/08/2016, 00h13
  4. [XL-2010] concaténation dans une seule cellule
    Par sirine_ dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/10/2014, 09h38
  5. Réponses: 3
    Dernier message: 20/02/2008, 17h13

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