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 :

Recherche d'une formule pour dire "Si une valeur de cette case apparait dans cette liste, alors écrire "ça" " [XL-2010]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut Recherche d'une formule pour dire "Si une valeur de cette case apparait dans cette liste, alors écrire "ça" "
    Bonjour à tout le monde.

    Je me prend la tête depuis 2 jours pour trouver une formule afin de dégager certaines données.

    Alors voilà : sur mon premier onglet on trouve ceci:
    A1 294
    A2 BZ+294
    A3 294 + 704
    A4 720+DT


    Sur mon deuxième onglet j'ai créé une liste "engins" qui référence toutes les dénominations des engins que je souhaite faire ressortir
    A1 294
    A2 295
    .
    .
    .
    A30 310
    A31 312
    .
    .
    .
    .
    A100 720

    Ce que j'aurais besoin de faire en essayant de le traduire au mieux c'est ceci: "si dans A1 premier onglet tu trouves une donnée de la liste "engins" alors tu m'écris "engins" en B1".
    ça fonctionne très bien avec la formule =SI(NB.SI();"engins";"pasça") mais uniquement s'il n'y a qu'une donnée en A1, quand on arrive en A2, A3 ou A4 la formule ne sait pas extraire une des données qui est visée et me m'écrit "pasça".
    Dans ce cas précis: 294 et 720 font parties de la liste "engins". Les textes saisis ci-dessus sont des cas concrets: aucune nomenclature, espaces ou non, symbole + ou non, texte ou non ......

    Donc est-ce qu'il existe une formule capable de détecter une donnée précise dans une cellule et de voir si elle se trouve dans une liste ?

    D'avance merci pour votre aide. Je suis en train de perdre le peu de cheveux qu'il me reste.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Fooxy Voir le message
    ça fonctionne très bien avec la formule =SI(NB.SI();"engins";"pasça")
    Tu devrais montrer cette formule qui fonctionne.

    mais uniquement s'il n'y a qu'une donnée en A1, quand on arrive en A2, A3 ou A4 la formule ne sait pas extraire une des données qui est visée et me m'écrit "pasça".
    Tu as pensé à mettre la zone de recherche de ta fonction NB.SI() en références absolues (mettre des $ devant les n° de ligne) ?
    C'est une erreur classique.

    Donc est-ce qu'il existe une formule capable de détecter une donnée précise dans une cellule et de voir si elle se trouve dans une liste ?
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI(MaFeuille!A$1:A$4;"*"&A1&"*")
    En remplaçant "MaFeuille" par le nom d'onglet de ta liste.

    Attention parce que si dans ta liste d'engins tu as "1234", ça sera compté aussi bien pour "123" que pour "234".
    Donc, il faut être sûr que dans te liste source, il n'y ait pas de chiffre accolé au numéro d'engin.

  3. #3
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Bonjour.

    Merci pour la réponse, mais ça ne fonctionne pas. Est-ce qu'il faut définir un format de cellule ?

    Voici un exemple concret de mon tableau: =NB.SI(RamesTLG;"*"&E17438&"*") où E17438 correspond à 747. Or la rame 747 apparaît bien dans ma zone de critères RamesTLG.

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    J'ai testé la formule que je t'ai proposé avec les exemples que tu as donnés dans ta demande et ça fonctionnait.
    Si ça ne fonctionne pas chez toi, c'est qu'il y a une information que tu ne donnes pas.

  5. #5
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Ah mince.
    Je ne cache rien, du moins volontairement. Peut être que ça vient des cases qui sont au format standard ? Je ne peux pas partager mon fichier.

    Quand j'utilise la formule que tu m'as donnée il décompte 0 alors qu'il devrait y avoir 1.

    Voilà un exemple de mon premier onglet, le format est standard

    294 nsg + 820
    4720
    610 nsg + 241
    237
    781+780
    807 + 619
    605+
    601 nsg + 814 nsg
    747


    Voilà ma liste "RamesTLG", format Standard également.

    764
    765
    766
    773
    774
    775
    706
    707
    708
    709
    710
    711
    712
    713
    714
    715
    716
    717
    718
    719
    720
    745
    746
    747
    748
    254
    256

    Je ne retiens pas d'info (ou alors contre ma volonté) mais la formule ne fonctionne vraiment pas....

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Fooxy Voir le message
    Je ne cache rien, du moins volontairement.
    Je n'en doute pas (tu n'aurais aucun intérêt à le faire).
    Mais je pense qu'il y a des informations que tu omets.

    Voilà un exemple de mon premier onglet, le format est standard
    Avec cette série et la fonction que j'ai donné, j'obtiens le résultat suivant :

    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    1
    0
    0
    1
    0
    0
    0

    Ce qui me semble correct.

    Peut être que ça vient des cases qui sont au format standard ?
    Essaye de passer tes données au format texte (Format de cellule > Onglet Nombre > Texte) et de revalider les cellule ne contenant qu'un nombre.

    Je ne peux pas partager mon fichier.
    Et de mon côté je n'ouvre pas les fichiers joints.

  7. #7
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Alors j'ai ouvert un nouveau fichier copié/collé ta formule et ça ne va pas, c'est peutêtre juste que je ne l'ai pas comprise et pas bien utilisée:
    Nom : Capture.PNG
Affichages : 1764
Taille : 8,6 Ko

    Une question ça sert à quoi les symboles suivants : & "*" ?

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Tu n'as pas lu la fin de mon message précédent.
    Essaye de passer tes données au format texte (Format de cellule > Onglet Nombre > Texte) et de revalider les cellule ne contenant qu'un nombre.
    Tes lignes 2, 4 et 9 ne sont pas au format texte.

  9. #9
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Désolé, je l'avait fait dans mon tableau principal. Là je l'ai refait et ça ne va toujours pas.

    Nom : Capture.PNG
Affichages : 1731
Taille : 8,6 Ko

    ça sert à quoi alors le "*" ?
    pour le & j'ai compris que ça servait à concaténer.

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Fooxy Voir le message
    Désolé, je l'avait fait dans mon tableau principal. Là je l'ai refait et ça ne va toujours pas.
    Est-ce que tu as revalidé les cellules qui étaient avant des nombres, comme je l'ai dit dans mon message.

    ça sert à quoi alors le "*" ?
    C'est ce qu'on appelle des "alias".
    Voir la chapitre "Utilisez des caractères génériques." dans https://support.office.com/fr-FR/art...4-1f464816df34

  11. #11
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Si par revalidé il faut comprendre : aller sur la case et appuyer sur entrée: alors oui.

    merci pour le lien.

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866

  13. #13
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Ok j'ai du mal m'exprimer.

    Ce que je cherche à faire ressortir dans mon fichier c'est: Si en A1 tu trouves un élément de la colonne B (B1 à B5) alors en C1 tu m'écris "TLG".

    Là avec ta formule c'est l'inverse. C'est B1 qui est recherché dans A1:A9.


    Aussi: une fois que tu passes des cellules dans lesquelles un texte est déjà saisi au format standard: comment tu valide le fait de passer les cellules au format texte ?

  14. #14
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    le problème c'est que les éléments de ta liste A sont composé de plusieurs éléments de la liste B donc il est plus simple de cherché si l'élément de B est présent dans liste des éléments de A et non l'inverse

  15. #15
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Oui c'est plus simple mais le soucis c'est que je cherche à savoir si dans chaque cellule de la colonne A il y un élément de la colonne B. C'est pour ça que je galère

  16. #16
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Dans mon fichier test, tu mets en C1 la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(NB.SI(A1;"*"&B$1:B$5&"*"))
    A valider avec Ctrm+Shift+Entrée comme formule matricielle.

    Copier C1 sur C1:C9.

  17. #17
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 368
    Points : 23 840
    Points
    23 840
    Par défaut
    Bonjour.

    Si tu veux utiliser du VBA, voici une fonction qui fait cela pour toi.

    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
    Public Function CompterElement(prmZone As Range, prmZoneListe as range) As Long
        Dim result As Long
        Dim valeurZone As String
        valeurZone = cstr(prmZone.value)
        valeurZone = Replace(valeurZone, "nsg", "") 'Supprime les nsg
        valeurZone = Replace(valeurZone, " ", "") 'Supprime les espaces
        Dim t() As String
        t = Split(valeurZone, "+") 'Découpe sur les +, ce qui reste sont les numéros de rames.
     
        Dim v As Variant
     
        For Each v In t
            result = result + WorksheetFunction.CountIf(prmZoneListe, v)
        Next v
     
        CompterElement = result
    End Function
    Peut s'utiliser comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CompterElement(A1; 'TaFeuilleListe"!A:A)

    • A1 est a remplacer par la cellule qui contient la valeur à analyser (ex : 294 nsg + 820).
    • 'TaFeuilleListe"!A:A est a remplacer par ta liste de référence.


    A+

  18. #18
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Dans mon fichier test, tu mets en C1 la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(NB.SI(A1;"*"&B$1:B$5&"*"))
    A valider avec Ctrm+Shift+Entrée comme formule matricielle.

    Copier C1 sur C1:C9.
    Merci Menhir !!!!!!! C'est la solution !!! Il ne me reste plus qu'à faire une mise en forme conditionnelle et c'est bon.
    Merci beaucoup

  19. #19
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2018
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Après essai: ça fonctionne uniquement s'il y a plus d'une donnée, par exemple s'il n'y a qu'un seul nombre dans la cellule en A et même si ce nombre fait partie de la liste de B: excel ne le compte pas comme 1 mais comme 0

  20. #20
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Chez moi ça fonctionne.
    La preuve en image :
    Nom : test_img.jpg
Affichages : 1665
Taille : 82,8 Ko

    On en revient sans doute à ce que j'ai déjà expliqué de transformation des nombres en texte.

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

Discussions similaires

  1. Recherche d'une valeur minimale pour un critère
    Par PhilemonCub dans le forum QlikView
    Réponses: 7
    Dernier message: 30/05/2016, 12h47
  2. Réponses: 5
    Dernier message: 02/10/2015, 00h29
  3. Réponses: 4
    Dernier message: 04/11/2008, 23h46
  4. Réponses: 40
    Dernier message: 24/02/2006, 15h19
  5. [D6] Recherche d'une valeur dans un fichier
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 09h26

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