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 :

Find et FindNext avec deux valeurs recherchées


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut Find et FindNext avec deux valeurs recherchées
    Bonjour à tous.

    J'aimerais savoir s'il existe quelque chose pour remplacer le Find et FindNext quand je dois faire une recherche avec deux valeurs.
    Est-ce possible?

    Pour l'instant, j'utilise le Find, s'il trouve quelque chose avec la première valeur alors je fais un IF pour vérifier si la deuxième colonne correspond à la valeur 2 sinon, il passe au FindNext.
    Je n'ai pas réellement besoin de savoir où se trouve cette ligne mais je dois avoir le nombre total. Un peu comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CountIf(Columns(1), MaValeur)
    mais avec plusieurs (2) valeurs de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CountIf(Colonne1 = Columns(1), Val1 = MaValeur1, Colonne2 = Columns(2), Val2 = MaValeur2)
    Merci à tous à l'avance!

    P.S. Je n'ai plus accès à la fonction "Recherche dans ce forum", pourquoi?
    Je l'ai souvent utilisé pourtant!

  2. #2
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonsoir drakkar le forum un exemple avec find 2 criteres

    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
    Sub es()
      cd1 = 3 'valeur cherche column a
      cd2 = 2 'valeur cherche column b
      Set champ = Range("a1:a1000")
      Set c = champ.Find(cd1, LookIn:=xlValues, LookAt:=xlWhole)
      If Not c Is Nothing Then
        premier = c.Address
        Range("b1:b1000")(c.Row - [a1:a1000].Row + 1).Select
        Do
           z = z + 1
          Union(Selection, Range("b1:b1000")(c.Row - [a1:a1000].Row + 1)).Select
          Set c = champ.FindNext(c)
        Loop While Not c Is Nothing And c.Address <> premier
         End If
         Set c = Selection.Find(cd2, LookIn:=xlValues, LookAt:=xlWhole)
       If Not c Is Nothing Then MsgBox z Else MsgBox "non trouvé"
    End Sub
    ou par sommeprod en vba

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox [SumProduct(1*(a1:a1000=3)*(b1:b1000=2))]

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir Laetitia, Drakkar
    Ce n'est pas cartésien ce que je propose comme variante, mais bon.
    Je prévois une colonne où je concatène les données de la colonne 1 et de la colonne 2 (séparées éventuellement avec un caractère spécifique "µ" par exemple pour éviter tout amalgame de données).
    Je ferai la recherche sur cette nouvelle colonne K
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CountIf(Columns(K), MaValeur1µMaValeur2)
    et après, j'efface la colonne

  4. #4
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour drakkar_agfa l'ami mercatog le forum

    avec la formule donne plus haut pas simple de faire passer des variables!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox [SumProduct(1*(a1:a1000=3)*(b1:b1000=2))]
    on peut utiliser Evaluate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro1()
    Dim x As Long, z As Long
    x = 3: z = 2
    MsgBox Evaluate("SUMPRODUCT(($A$1:$A$1000=" & x & ")*($B$1:$B$1000=" & z & "))")
    End Sub

Discussions similaires

  1. [XL-2013] Macro Find avec deux valeurs
    Par Yamiral dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/04/2015, 17h06
  2. Réponses: 5
    Dernier message: 24/11/2014, 09h27
  3. [XL-2007] RechercheV avec deux valeurs recherchées
    Par hollywoodsky dans le forum Excel
    Réponses: 6
    Dernier message: 31/10/2009, 13h51
  4. Combo avec deux valeurs identiques
    Par WidgetZorg dans le forum WinDev
    Réponses: 4
    Dernier message: 19/05/2009, 15h16

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