Verifier si une cellule appartient a une plage

Bonjour a tous,

Je cherche a savoir comment détecter si la valeur d'une cellule appartient a une plage,

Si celle-ci existe ben on la laisse, par contre si elle n'appartient pas on la supprime.

Ex: En colonne A j'ai une liste des membres et en Colonne I j'ai la liste des participants de A une activité cette année.

Si la personne a participer, elle reste dans la liste et si pas elle est supprimé de la liste de membres.

Je trouve des solutions, mais cela ne fonctionne pas.

SI quelqu'un peut m'aiguiller cela serait sympa.

Merci

Bonjour,

Merci de joindre un fichier représentatif à ta demande.

Cdlt.

J'ai un fichier, mais qui n'est pas anonymiser,

Et je crains que le fait de l'anonymiser ne donne pas tout ce que je cherche

Bonjour, salut Jean-Eric,

Une piste :

Concrètement, j'ai ajouté une MFC pour identifier les noms présents dans mon premier onglet à partir d'une liste définie dans le second onglet. Tu peux ensuite faire un filtre (à partir de l'en-tête) sur les cellules selon leur couleur, pour ne supprimer que celles qui ne sont pas colorées.

Bonjour le fil, bonjour le forum,

Anonymiser un fichier m'a pris moins de temps que toi pour écrire cette ineptie, Damsa !...

Essaie comme ça :

Sub Macro1()
Dim DLA As Integer 'déclare la variable DLA (Dernière Ligne de la colonne A)
Dim DLI As Integer 'déclare la variable DLI (Dernière Ligne de la colonne I)
Dim LP As Range 'déclare la variable LP (Liste des Participants)
Dim PA As Range 'déclare la variable PA (Participants  à une Activité)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R As Range 'déclare la variable R (Recherche)

DLA = Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la derniere ligne édité DLA de la colonne A
Set LP = Range("A2:A" & DLA) 'définit la liste des participants LP (remplacer 2 par 1 si la liste ne contient pas d'étiquette)
DLI = Cells(Application.Rows.Count, "I").End(xlUp).Row 'définit la derniere ligne édité DLI de la colonne I
Set PA = Range("I2:I" & DLI) 'définit la plage des participants à une activité PA (remplacer 2 par 1 si la liste ne contient pas d'étiquette)
For I = DLA To 2 Step -1 'boucle inversée sur toutes les lignes I de la liste des participants (remplacer 2 par 1 si la liste ne contient pas d'étiquette)
    Set R = PA.Find(Cells(I, "A").Value, , xlValues, xlWhole) 'définit la recherche R (recherche la valeur entière de la cellule de la boucle dans la plage PA)
    If R Is Nothing Then Cells(I, "A").Delete Shift:=xlUp Else Set R = Nothing 'si aucune occurrence n'est trouvée, suprimme la cellule de la boucle
Next I 'prochaine ligne de la boucle
End Sub

[Édition]

Bonjour Pedro, nos posts se sont croisés...

Bonjour le fil, bonjour le forum,

Anonymiser un fichier m'a pris moins de temps que toi pour écrire cette ineptie, Damsa !...

Essaie comme ça :

Sub Macro1()
Dim DLA As Integer 'déclare la variable DLA (Dernière Ligne de la colonne A)
Dim DLI As Integer 'déclare la variable DLI (Dernière Ligne de la colonne I)
Dim LP As Range 'déclare la variable LP (Liste des Participants)
Dim PA As Range 'déclare la variable PA (Participants  à une Activité)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R As Range 'déclare la variable R (Recherche)

DLA = Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la derniere ligne édité DLA de la colonne A
Set LP = Range("A2:A" & DLA) 'définit la liste des participants LP (remplacer 2 par 1 si la liste ne contient pas d'étiquette)
DLI = Cells(Application.Rows.Count, "I").End(xlUp).Row 'définit la derniere ligne édité DLI de la colonne I
Set PA = Range("I2:I" & DLI) 'définit la plage des participants à une activité PA (remplacer 2 par 1 si la liste ne contient pas d'étiquette)
For I = DLA To 2 Step -1 'boucle inversée sur toutes les lignes I de la liste des participants (remplacer 2 par 1 si la liste ne contient pas d'étiquette)
    Set R = PA.Find(Cells(I, "A").Value, , xlValues, xlWhole) 'définit la recherche R (recherche la valeur entière de la cellule de la boucle dans la plage PA)
    If R Is Nothing Then Cells(I, "A").Delete Shift:=xlUp Else Set R = Nothing 'si aucune occurrence n'est trouvée, suprimme la cellule de la boucle
Next I 'prochaine ligne de la boucle
End Sub

[Édition]

Bonjour Pedro, nos posts se sont croisés...

Merci c'est ca que je souhaitais.

Sub retrait()
Dim DLA As Integer 'déclare la variable DLA (Dernière Ligne de la colonne A)
Dim DC As Integer
Dim DLC As Integer 'déclare la variable DLI (Dernière Ligne de la colonne I)
Dim LP As Range 'déclare la variable LP (Liste des Participants)
Dim PA As Range 'déclare la variable PA (Participants  à une Activité)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R As Range 'déclare la variable R (Recherche)
DC = Sheets("Médailles").Cells(2, Cells.Columns.Count).End(xlToLeft).Column
DLA = Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la derniere ligne édité DLA de la colonne A
Set LP = Range("A2:A" & DLA) 'définit la liste des participants LP (remplacer 2 par 1 si la liste ne contient pas d'étiquette)
DLC = Cells(Application.Rows.Count, DC).End(xlUp).Row 'définit la derniere ligne édité DLI de la colonne I
Set PA = Range(Cells(2, DC), Cells(DLC, DC)) 'définit la plage des participants à une activité PA (remplacer 2 par 1 si la liste ne contient pas d'étiquette)
For I = DLA To 2 Step -1 'boucle inversée sur toutes les lignes I de la liste des participants (remplacer 2 par 1 si la liste ne contient pas d'étiquette)
    Set R = PA.Find(Cells(I, "A").Value, , xlValues, xlWhole) 'définit la recherche R (recherche la valeur entière de la cellule de la boucle dans la plage PA)
    If R Is Nothing Then Range(Cells(I, "A"), Cells(I, "B")).Delete Shift:=xlUp Else Set R = Nothing 'si aucune occurrence n'est trouvée, suprimme la cellule de la boucle
Next I 'prochaine ligne de la boucle
End Sub

J'ai modifié un peu le code, après quelques modifications de mon tableau, ca met un peu de temps pour l'exécution, y a t il un moyen que l'exécution soit un peu plus rapide?

Rechercher des sujets similaires à "verifier appartient plage"