Sélection multiple dans une seule colonne

Bonjour à tous,

Je dois sélectionner plusieurs nombres dans une seule colonne. Existe-t-il un moyen de filtrer cette colonne en saisissant, par exemple, 100; 115; 321; 450; 600 afin d’afficher uniquement ces valeurs, sachant que c’est un Excel avec plus de 1000 lignes?

Ou bien la seule solution consiste-t-elle à rechercher chaque nombre un par un (rechercher 100, sélectionner, puis rechercher 115, sélectionner, etc.) ?

Merci d’avance !

Hello,

Manière simple, tu crées une colonne à part dans laquelle tu rentreras ta liste de nombre les uns sous les autres.

Dans ta table de données tu rajoutes une colonne de recherchev basique avec un si erreur. Si t’as une correspondance tu laisses sinon tu mets 0. Et ensuite tu fais un filtre sur cette colonne en enlevant les 0. 3 minutes à mettre en place et résultat assuré.

@+

Merci ! Pour l’idée. Sachant que j’ai 15 colonnes, je dois faire une recherche V sur les 15 colonnes j’imagine afin d’avoir la ligne complète ?

Hello,

Comment ça 15 colonnes ? De ce que je comprends, tu as 15 colonnes et il faut que tu en rajoutes une 16eme où tu fais la recherchev avec le critère contenu dans la colonne numéro (100,115,321) et hop.

Après sans fichier c’est plus compliqué de t’aider. Tu peux fournir un fichier anonymisé ?

@+

Bonjour à tous !

Une approche possible : tableau structuré et segment.

----> Pour une aide adaptée de la communauté, merci de préciser, dans votre profil, la nature de votre Excel ( 2019 ? 2021 ? 365 ? ...)

(La langue est une information de très faible importance.)

Bonjour Markaev et bienvenue sur XLP , bonjour aux autres ,

Dans le classeur, indiquez les valeurs à chercher en colonne M ainsi que les deux options en colonne P. Puis cliquez sur le bouton en orange.

version v1b : prend en compte les cellules affichant des valeurs d'erreurs (on peut donc aussi rechercher des cellules avec erreur)

...

La méthode via VBA est basée sur une fonction générique. cette fonction s'appelle :

RangePlageValeurs(rgPlageRecherche , rgPlageValeur , MajusMinus , InclureVide )

Elle renvoie l'ensemble des cellules (type range) dont la valeur est égale à une des valeurs à trouver (renvoie Nothing si aucune cellule ne répond à la condition).

Elle a quatre paramètres obligatoires (dans l'ordre) :

  • rgPlageRecherche de type range qui est la plage de recherche
  • rgPlageValeur de type range qui est la plage des valeurs à chercher
  • MajusMinus de type Boolean (True ou False) qui indique la prise en compte ou non de la casse
  • InclureVide de type Boolean (True ou False) qui indique si on inclut ou exclut dans le résultat les cellules vides

Le texte de la fonction générique dans Module1 :

Function RangePlageValeurs(rgPlageRecherche As Range, rgPlageValeur As Range, MajusMinus As Boolean, InclureVide As Boolean) As Range
'  rgPlageRecherche  : la plage de recherche
'  rgPlageValeur     : la plage des valeurs  (pas forcément sur la même feuille ou classeur que rgPlageRecherche)
'  MajusMinus        : si True on tient compte de la casse  - si False on ne tient pas compte de la casse
'  InclureVide       : si True on inclut les cellules vides - si False on exclut les cellules vides
Dim tRech, tval, dlig&, dcol&, i&, j&, k&, ok As Boolean, rgSel As Range, typeCompar, aux
   typeCompar = IIf(MajusMinus, vbBinaryCompare, vbTextCompare)
   tRech = rgPlageRecherche.Value2: tval = rgPlageValeur.Value2
   If Not IsArray(tRech) Then aux = tRech: ReDim tRech(1 To 1, 1 To 1): tRech(1, 1) = aux
   If Not IsArray(tval) Then aux = tval: ReDim tval(1 To 1, 1 To 1): tval(1, 1) = aux
   For i = 1 To UBound(tval)
      If IsError(tval(i, 1)) Then tval(i, 1) = CStr(tval(i, 1))
   Next i
   dlig = rgPlageRecherche.Row - 1: dcol = rgPlageRecherche.Column - 1
   With rgPlageRecherche.Parent
      For i = 1 To UBound(tRech): For j = 1 To UBound(tRech, 2)
         If IsError(tRech(i, j)) Then tRech(i, j) = CStr(tRech(i, j))
         ok = False
         For k = 1 To UBound(tval)
            If InclureVide And tRech(i, j) = "" Then ok = True: Exit For
            If tval(k, 1) <> "" Then
               If TypeName(tval(k, 1)) = "String" And TypeName(tRech(i, j)) = "String" Then
                  If StrComp(tval(k, 1), tRech(i, j), typeCompar) = 0 Then ok = True: Exit For
               Else
                  If tval(k, 1) = tRech(i, j) Then ok = True: Exit For
               End If
            End If
         Next k
         If ok Then
            If rgSel Is Nothing Then Set rgSel = .Cells(i + dlig, j + dcol) Else Set rgSel = Union(rgSel, .Cells(i + dlig, j + dcol))
         End If
      Next j, i
   End With
   If Not rgSel Is Nothing Then Set RangePlageValeurs = rgSel
End Function

Le code associé au bouton orange est dans le module de Feuil1 :

Sub SelectionnerValeur()
Dim rgRech As Range, derlig&, rgVal As Range, rgCellsOk As Range
   Set rgRech = Intersect(Columns("a:g"), Me.UsedRange)
   If Me.FilterMode Then Me.ShowAllData
   derlig = Cells(Rows.Count, "m").End(xlUp).Row
   Set rgVal = Cells(1, "m").Resize(derlig)
   Set rgCellsOk = RangePlageValeurs(rgRech, rgVal, [p4] = "Oui", [p1] = "Oui")
   rgRech.Cells(1, rgRech.Columns.Count + 1).Select
   If Not rgCellsOk Is Nothing Then rgCellsOk.Select
End Sub
Rechercher des sujets similaires à "selection multiple seule colonne"