Présence d'une chaîne et calculs

Rebonjour,

Dans le même thème que ma question précédente...
J'ai un tableau composé en colonne A de textes et en colonne B de nombres :

chaine valeur
chaine1 1
gnagnagnaid1 2
chaine2 4
gnignigniid2 8
chaine3 16
gnagnaid1 32

En C, j'ai des identifiants :

Identifiants
id1
id2
id3

Je cherche une formule qui me donne la somme des valeurs figurant à droite d'une chaîne où apparaît un identifiant.
Si je ne dis pas trop de sottise, dans notre cas, ça devrait donner 42 (Douglas Adams rules).

Merci,

D.

11 réponses

  1. Bonjour,

    l'idéal serait que tu crées un exemple de fichier anonymisé et que tu le joignes à la discussion
    pour joindre ton fichier
    1) Tu vas dans https://www.cjoint.com/
    2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
    3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
    4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
    5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
    =>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers

    dans le même style tu as https://mon-partage.fr/
    0
    1. Bonjour

      Une possibilité
      En D1 mettre =SOMME.SI(A:A;"*" & C1 &"*";B:B) puis étirer vers le pas
      Ensuite la somme de la colonne C te donnera le résultat attendu

      Cdlmt
      Via

      0
      1. Merci de ton retour.
        En revanche, je souhaite une formule dans une seule cellule si c'est possible.

        Cordialement,

        D.
        0
    2. Pas possible sauf avec une fonction personnalisée en VBA
      Tu connais le VBA ?
      0
      1. Pas trop, non.
        Même les formules matricielles ne s'appliquent pas ?

        D.
        0
        1. Peut être mais je ne vois quelle matricielle bâtir là

          0
          1. En ce qui concerne la fonction personnalisée
            Onglet Developpeur - VisualBasic
            Insertion puis Module
            Copier coller la macro suivante dans la page blanche et fermer l'éditeurVBA
            Function identif(plage1 As Range, plage2 As Range)
            For Each cell In plage2
            For Each cell2 In plage1
            On Error Resume Next
            If Application.WorksheetFunction.Search(cell2, cell) > 0 Then Total = Total + Range("B" & cell2.Row)
            Next
            Next
            identif = Total
            End Function

            S'utilise comme une fonction selon la syntaxe =identif(plage des identifiants;plage des chaînes)
            ex : =identif(C2:C4;A2:A7)

            Cdlmnt
            Via
            0
            1. Merci beaucoup, je vais tester dès que possible.

              D.
              0
          2. Re,

            Pour ma part je ne comprends pas comment tu devrais avoir 42
            et à quoi correspond (Douglas Adams rules)
            0
            1. Donc.
              On retrouve deux des identifiants recherchés en A2, A5 et A7.
              B2 = 2, B5 = 8 et B7 =32, la somme vaut 42.
              Et dans le Guide du Voyageur Galactique, du regretté Douglas Adams, on apprend avec sidération que la réponse à la question fondamentale de la vie, de l'univers et du reste est 42.

              Aloa,

              D.
              0
          3. Re,
            je m'excuse mais je ne comprends pas "On retrouve deux des identifiants recherchés en A2, A5 et A7"
            suit le fil de Via que je salue voir s'il est sur la voie

            0
            1. Il est plus que sur la voie, sa fonction que je vient de tester donne les 42 attendus.
              Pour préciser : je cherche dans la colonne A les occurrences de id1, id2 et id3.
              Id1 apparaît en A2 (gnagnagnaid1) et en A7 (gnagnaid1), id2 apparaît en A5 (gnignigniid2).

              Donc Via55, merci beaucoup !
              Puis-je en revanche attendre un peu avant de déclarer la question résolue ?
              Des fois qu'on puisse trouver une formule...
              0
              1. Ah oui la c'est plus clair et il faut bien passer par du VBA ou ajouter une colonne pour passer par une formule
                je suis la discussion voir si on se lance dans cette voie

                mais sur le fichier que tu as mis en ligne en A2 chaine1 et non gnagnagnaid1 qui est en A3 etc ... enfin le principal est que tu sois sur la voie de la solution

                0