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

Macros et VBA Excel Discussion :

Code pour vérifier la présence d'une valeur pour un nom spécifique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2014
    Messages : 18
    Par défaut Code pour vérifier la présence d'une valeur pour un nom spécifique
    Bonjour à tous,

    Désolé pour ce titre peu explicite. J'ai une demande qui me parait simple et je ne vois pas comment l'attaquer proprement sous VBA.

    En gros :

    J'ai une colonne qui contient des noms de marque et j'ai une colonne qui contient des produits.
    Chacune des colonnes peut contenir plusieurs fois la même marque et plusieurs fois le même produit.

    Je cherche à boucler sur la colonne "nom produit" et vérifier si UN nom de marque en particulier (nom fixe) à bien le produit en question

    Ex : Produit = Savon, est-ce que la marque "Ma Marque" à bien un ligne contenant Savon.

    Ensuite j'affiche "Oui" si c'est le cas ou rien si c'est faux.

    J'ai tenté l'IA mais j'ai pas réussi à lui faire comprendre ce que je voulais

    Je vous remercie par avance !
    Bonne journée
    Fab

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    avec un NB.SI.ENS supérieur à 0

    exemple très trivial à muscler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ExisteCouple()
    Dim Marque As String, Produit As String
    Marque = "Ma Marque"
    Produit = "Savon"
        MsgBox Application.WorksheetFunction.CountIfs(Columns(1), Marque, Columns(2), Produit) > 0
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Mai 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mai 2014
    Messages : 18
    Par défaut
    Hello!

    Ah oui pas bête du tout.. J'avais pensé aussi a un sumprod mais ta méthode est plus simple !

    Merci

    EDIT : Après test, ca prend beaucoup trop de temps (j'ai environ 150.000 ligne). Une autre idée ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Dans ce cas là, on peut se baser sur le filtre automatique : s'il n'y a que la ligne des titres visible, alors pas de résultat, sinon c'est ok


    exemple avec un tableau structure où les colonne ont pour en-tête "PRODUIT" et "MARQUE"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub toto()
    Dim Produit As String
    Dim Marque As String
    Produit = "Savon"
    Marque = "Ma Marque"
        With ActiveSheet.ListObjects(1)
            .Range.AutoFilter .ListColumns("PRODUIT").Index, Produit
            .Range.AutoFilter .ListColumns("MARQUE").Index, Marque
     
                MsgBox .Range.SpecialCells(xlCellTypeVisible).Rows.Count > 1
            Range.AutoFilter
        End With
    End Sub

  5. #5
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Proposition
    Bonjour
    en alternative à ce que propose Joe,

    personnellement, je ne m'embêterais pas avec du VBA pour cela
    je mettrais 2 pauvres cellules où inscrire la marque (ex F2) et le produit (ex G2) et je demanderais le calcul suivant à coté
    =NB.SI.ENS(Tableau1[MARQUE];F2;Tableau1[Produit];G2)
    Qu'il y ait 10 ou 150 000 lignes ca ne serait jamais trop long...

    De plus, on pourrait mettre en valeur le couple par mise en forme conditionnelle au cas où l'affichage de ce qu'on a demandé serait nécessaire à la place du OUI demandé
    ma MEFC serait alors =ET($A2=$F$2;$B2=$G$2) (filtre possible par couleur)



    Maintenant si le VBA est vraiment nécessaire pour des raisons X ou Y
    je passerais par un userform pour choisir la marque et le produit + un bouton de recherche pour afficher OUI ou NON

    Exemple sur le cas demandé en PJ (j'ai mis le bouton vers le formulaire par dessus mes cellules pour vous montrer qu'elles pourraient être cachées)
    Pour tester sachez qu'il y a bien des "savons" "ma marque", par contre j'ai enlevé tous les produits "A" de "Ma marque"
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. donner une valeur a un nom
    Par Ricardovieira dans le forum Excel
    Réponses: 7
    Dernier message: 11/07/2023, 07h56
  2. [AC-2013] Vérification de l'existence d'une valeur dans le nom d'un dossier
    Par infr1700 dans le forum VBA Access
    Réponses: 8
    Dernier message: 09/01/2017, 17h29
  3. Recuperer la valeur d'une cellule en code pour vba
    Par djoumusic dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/10/2009, 00h52
  4. Code pour insérer plusieurs valeurs dans une cellule
    Par azerty1956 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/03/2009, 13h09
  5. Réponses: 4
    Dernier message: 12/12/2006, 08h14

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