Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Limiter une plage de valeurs indentiques dans un tableau en VBA

20 réponses
Avatar
Apitos
Bonjour =E0 tous,

J'aimerais, dans un tableau de donn=E9es tri=E9 sur plusieurs colonnes, d=
=E9terminer une plage de valeurs identiques situ=E9es dans la colonne B de =
ce tableau.

L'id=E9e qui m'est venu et de d=E9terminer la premi=E8re ligne et la derni=
=E8re ligne contenant la valeur recherch=E9e, ensuite nomm=E9e les lignes t=
rouv=E9es dans une plage.

Mais pas code =E0 l'instant !

Merci d'avance.

10 réponses

1 2
Avatar
Apitos
Un exemple :


http://www.cjoint.com/c/EFrvPoie7au
Avatar
isabelle
bonjour Apitos,

voici un exemple avec la fonction EQUIV

TexteChercher = "Secondaire"
debut = Application.Match(TexteChercher, Range("B:B"), 0)
fin = Application.Match(TexteChercher, Range("B:B"), 1)
Set plage = Range("A" & debut & ":B" & fin)

isabelle

Le 2015-06-17 17:41, Apitos a écrit :
Un exemple :


http://www.cjoint.com/c/EFrvPoie7au

Avatar
Jacky
Bonjour,

....ensuite nommée les lignes trouvées dans une plage
'--------------------------
Sub test()
With ActiveSheet.Range("A6:B" & Cells(Rows.Count, 1).End(xlUp).Row)
Range("A5:B5").AutoFilter Field:=2, Criteria1:="Secondaire"
ActiveWorkbook.Names.Add Name:="plage", RefersTo:="=" & .SpecialCells(xlCellTypeVisible).Address
.AutoFilter
End With
End Sub
'---------------------------
--
Salutations
JJ


"Apitos" a écrit dans le message de news:

Bonjour à tous,

J'aimerais, dans un tableau de données trié sur plusieurs colonnes, déterminer une plage de valeurs identiques
situées dans la colonne B de ce tableau.

L'idée qui m'est venu et de déterminer la première ligne et la dernière ligne contenant la valeur recherchée,
ensuite nommée les lignes trouvées dans une plage.

Mais pas code à l'instant !

Merci d'avance.
Avatar
MichD
Bonjour,

Si tu veux obtenir toutes les données dont l'occurrence est plus grande que 1,
utilise le filtre élaboré (avancé) et comme critère, emploie ce type de formule :

=NB.SI($A$1:$A$10;A2)>1

A1:A10 est la base de données, la cellule A1 est l'étiquette de colonne
A2 est la première cellule de la plage contenant les données.

Pour utiliser une formule comme critère dans un filtre avancé, tu dois définir une plage
de cellules de 2 cellules

Exemple :

G1 : Totalement vide ou une étiquette que tu NE retrouves PAS dans la plage de données.
G2 : La formule : =NB.SI($A$1:$A$10;A2)>1

Si tu utilises l'enregistreur de code, ce dernier te donnera l'essentiel du code. Si tu as par la
suite de la difficulté à le peaufiner, publie ce code ici, on pourra certainement t'aider.
Avatar
Apitos
Bonjour Isabelle, Jacky, MichD,

Merci pour vos réponses respectives.

MichD :: Déterminer et nommer la plage des cellules qui répondent aux c ritères de la recherche et nécessaire pour boucler sur toutes les ligne s de cette plage, afin d'extraire les données des autres colonnes dans un nouvelle feuille.

Je vais essayé ce que tu m'as demandé...
Avatar
Apitos
Je vais essayé ce que tu m'as demandé...



Voila le code, mais sans uncun résultat :

'---------------------------
Sub Macro1()
'
' Macro1 Macro
'

'
Range("A5:B14").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange := _
Range("G1:G2"), Unique:úlse
End Sub
'--------------------------
Avatar
MichD
'---------------------------
Sub Macro1()
'
' Macro1 Macro
'

'
Range("A5:B14").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("G1:G2"), Unique:úlse
End Sub
'--------------------------

****** Dans l'exemple que je t'ai expliqué, la plage où il y a des doublons n'a QU'UNE COLONNE!
Avatar
MichD
****** Dans l'exemple que je t'ai expliqué, la plage où il y a des doublons n'a QU'UNE COLONNE!

Je veux dire que le filtre s'effectue que sur une colonne de la plage de données.
Avatar
Apitos
Bonjour,

****** Dans l'exemple que je t'ai expliqué, la plage où il y a des do ublons n'a QU'UNE COLONNE!

Je veux dire que le filtre s'effectue que sur une colonne de la plage de données.



Même en appliquant un filtre élaboré sur une seule colonne, ça ne d onne rien !

Jacky :: Quand je voulais avoir l'adresse de la plage résultante avec la ligne :

Debug.Print "plage Jacky = " & plage.Address

ça me déclenche une erreur :

Erreur d'exécution 424 . Objet requis !
Avatar
Jacky
Re...
Debug.Print "plage Jacky = " & plage.Address
ça me déclenche une erreur :








'------------
Debug.Print "plage Jacky = " & [plage].Address
'Ou
MsgBox "plage Jacky = " & [plage].Address'
'--------------

Nb:Tu peux aussi vérifier dans le gestionnaire des noms que celui-ci est bien créé
--
Salutations
JJ


"Apitos" a écrit dans le message de news:

Bonjour,

****** Dans l'exemple que je t'ai expliqué, la plage où il y a des doublons n'a QU'UNE COLONNE!

Je veux dire que le filtre s'effectue que sur une colonne de la plage de données.



Même en appliquant un filtre élaboré sur une seule colonne, ça ne donne rien !

Jacky :: Quand je voulais avoir l'adresse de la plage résultante avec la ligne :

Debug.Print "plage Jacky = " & plage.Address

ça me déclenche une erreur :

Erreur d'exécution 424 . Objet requis !
1 2