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

  1. #1
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    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 expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    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))]
    SALUTATIONS

  3. #3
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    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
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

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

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    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
    SALUTATIONS

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