Limiter une plage de valeurs indentiques dans un tableau en VBA
Le
Apitos

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 t=
rouvées dans une plage.
Mais pas code à l'instant !
Merci d'avance.
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 t=
rouvées dans une plage.
Mais pas code à l'instant !
Merci d'avance.
http://www.cjoint.com/c/EFrvPoie7au
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 :
....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"
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.
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.
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é...
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
'--------------------------
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!
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 !
'------------
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"
Bonjour,
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 !