Recherche multicritère

Bonjour,

Encore une fois je me tourne vers vous pour m'aider à trouver une solution comme vous savez bien le faire.

Voilà, j'ai un classeurs avec plusieurs feuilles qui ont le même contenu (le même template), et je voudrais, dans une plage de cellules préalablement sélectionnée dans des feuilles de mon choix, trouver les cellules qui contiennent en même temps 2 chaines de caractères par exemple "OBM" et "WBM".

Y a t-il un moyen de récupérer le résultat dans une feuille à part.?

Merci de votre aide habituelle. 

Windows / Chrome 107.0.0.0

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Merci pour le temps que tu consacres pour m'aider.

    Dans l'immédiat je suis au travail et je ne peux pas accéder au site, je verrai ça ce soir.

    1. Bonjour Daniel

      Maintenant il ne se passe rien, je ne vois pas le défilement des feuilles lors de l'exécution et rien ne s'affiche dans la feuille résultat

      1. Oups, désolé, je me suis rarement loupé comme ça :

        Sub test()
          Dim Ligne As Long, C As Range, X As Range, ResAdr As String
          With Sheets("Résultat")
            For Each C In Selection
              If InStr(1, C.Value, "OBM") > 0 And InStr(1, C.Value, "WBM") > 0 Then
                Ligne = Ligne + 1
                .Cells(Ligne, 1) = C.Address(0, 0)
              End If
            Next C
          End With
        End Sub

        Daniel


        1. Bonjour,

          Merci de vos réponses.

          A l'exécution la macro n'affiche aucune erreursauf que rien ne s'affiche dans la feuille "Résultat" que j'ai créé au début du classeur. Le résultat réel est 5 occurrences. 

          1. Bonjour,

            Tu ne peux faire qu'une sélection sur une plage à la fois. Essaie :

            Sub test()
              Dim Ligne As Long, C As Range, X As Range, ResAdr As String
              With Sheets("Résultat")
                For Each C In Selection
                  Set X = Selection.Find("WBM", , , xlPart)
                  If Not X Is Nothing Then
                    If X.Address <> ResAdr Then
                      ResAdr = X.Address
                      If InStr(1, X.Value, "OBM") > 0 Then
                        Ligne = Ligne + 1
                        .Cells(Ligne, 1) = X.Address(0, 0)
                      End If
                    End If
                  Else
                    Exit Sub
                  End If
                Next C
              End With
            End Sub
            

            La recherche est sensible à la casse. Les adresses des cellules trouvées sont listées sur la feuille résultat.

            Daniel


            1. Bonjour,

              Peut-être qu'avec un fichier exemple, on pourrait savoir les cellules à rechercher