Selection d'une cellule par rapport à son contenu

Résolu
Bonjour,

Je débute sur se site ainsi que dans VBA. Je souhaiterais sélectionner des cellules contenant un texte du style "A34" afin de les regrouper dans un autre tableau.
J'en suis actuellement à la sélection des cellules contenant le texte. J'ai trouver comment sélectionner des cellules ayant une certaine couleur mais pas contenant un texte.
Par exemple, j'ai un tableau qui contient plusieurs donnée et je veux sélectionner les cellules contenant seulement "A34".

J'ai ce début mais cela ne fonctionne pas:

" Sub recherche()
Application.Goto Reference:="ma_liste"
For Each cel In selection
If cel.Interior.Contains = "A34" Then
liste = liste & cel.Address & ","
End If
Next
liste = Left(liste, Len(liste) - 1)
Range(liste).Select
End Sub"

pouvez vous m'aidez???
Merci

1 réponse

  1. Bonjour,

    Voici une procédure qui permet de sélectionner parmi les cellules de la plage "ma_liste" celles qui ont la valeur "A34", puis appliquer une couleur de remplissage jaune à cette sélection.
    Sub recherche()
    Dim Cel As Range, MaPlage As Range
    Application.Goto Reference:="ma_liste"
    For Each Cel In Selection
    If Cel.Value = "A34" Then
    If Not MaPlage Is Nothing Then
    Set MaPlage = Application.Union(Cel, MaPlage)
    Else
    Set MaPlage = Cel
    End If
    End If
    Next
    MaPlage.Select
    Selection.Interior.ColorIndex = 6
    End Sub

    A+
    0
    1. Ta réponse m'aide vraiment.

      Cependant, avec ton code, les cases contenants "A34" ne sont pas sélectionnées. c'est l'ensemble de la plage "ma_liste" qui l'est.
      Et j'ai encore une petite interrogation, si la cellule contient "A34-EGHTFG-34", sera t'elle sélectionné? car ma demande concerne plus ce cas de figure-ci.

      merci pour ta réponse :)
      0
    2. @DyarguySi l'ensemble de la plage "ma_liste" est sélectionnée, tu dois voir toutes les cellules de cette plage en jaune. Si c'est le cas, je suis très étonné car pour être sélectionnée, une cellule doit contenir A34....

      L'autre possibilité, c'est que aucune cellule ne contienne la valeur exacte "A34". La plage sélectionnée reste alors la plage initiale, à savoir "ma_liste".
      Mais dans ce cas, tu aurais dû avoir une erreur à la ligne
      MaPlage.Select

      Voici le code modifié pour que la procédure accepte un texte partiel.
      Sub recherche()
      Dim Cel As Range, MaPlage As Range
      Application.Goto Reference:="ma_liste"
      For Each Cel In Selection
      If Cel.Value Like "*A34*" Then
      If Not MaPlage Is Nothing Then
      Set MaPlage = Application.Union(Cel, MaPlage)
      Else
      Set MaPlage = Cel
      End If
      End If
      Next
      If Not MaPlage Is Nothing Then
      MaPlage.Select
      Selection.Interior.ColorIndex = 6
      Else
      MsgBox "Aucune cellule ne contient la valeur A34"
      End If
      End Sub

      Si tu n'obtiens pas le résultat attendu, c'est que ton fichier a une particularité que je ne connais pas.
      Tu devras alors joindre une copie anonymisée de ton classeur.
      Pour cela, tu peux utiliser https://www.cjoint.com/

      A+
      0
    3. C'est juste parfait!!!

      Je te remercie mille fois car tu m'enlève une sacrée épine du pied.

      Bonne journée à toi et bonne continuation.
      A+
      0