Bonjour,

Je suis actuellement en train de créer un tableau de suivi des prospects clients sociétés pour les commerciaux de ma boîte.

En partant d'une extraction Excel d'un logiciel, j'ai besoin de supprimer toutes les lignes selon un critère à 4 variables possibles.
Jusqu'à présent tout ce que j'ai fait a échoué, je pourrais rentrer dans le détail si nécessaire mais voici les différentes méthodes utilisées :

1- Enregistreur de Macro:
En appliquant un filtre auto, je désélectionne les 4 noms à conserver, je supprime le reste et je réaffiche le tout. Pb : ne tient pas compte de la taille du tableau pour chaque nouvelle extraction et si un nouveau commercial apparaît, c'est mort.

2- Boucle + If + Gestionnaire de Nom :
Dans le gestionnaire, j'ai créé la variable listeESA qui représente la formule =OR(nom1;nom2;nom3;nom4)
en utilisant un For Each x in y
if cellule <> [listeESA] then cellule.entireRow.Delete

3- Boucle + If + Or

4- Select Case

J'en suis a tester celà :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Sub supprimerCCX()
 
 
    Dim Ws As Worksheet
    Dim Form As Worksheet
    Set Formulaires = Worksheets("Formulaires")
    Dim ccx As Range
    Dim tab_prem As Range
    Dim tab_der As Range
    Dim supp As Range
    Const X2 As String = "X2"
    Const X1 As String = "X1"
    Const X3 As String = "X3"
    Const X4 As String = "X4"
 
 
 
    Set Ws = Worksheets("ExtractionCB")
    Set tab_prem = Ws.Range("E1")
    Set tab_der = tab_prem.End(xlDown).Offset(0, 0)
 
    For Each ccx In Ws.Range(tab_prem, tab_der)
    'Si une cellule ne contient pas le nom d'un des ESA, on la supprime entièrement
        If Not ccx.Value Like X2 Then ccx.Offset(0, 8) = "DEL"
            Else: ccx.Offset(0, 8) = ""
        End If
 
        If Not ccx.Value Like X1 Then ccx.Offset(0, 8) = "DEL"
            Else: ccx.Offset(0, 8) = ""
        End If
 
        If Not ccx.Value Like X3 Then ccx.Offset(0, 8) = "DEL"
            Else: ccx.Offset(0, 8) = ""
        End If
 
        If Not ccx.Value Like X4 Then ccx.Offset(0, 8) = "DEL"
            Else: ccx.Offset(0, 8) = ""
        End If
 
    Next ccx
 
    For Each ccx In Ws.Range(tab_prem, tab_der)
 
        If ccx.Offset(0, 8).Value Like "*DEL*" Then ccx.EntireRow.Delete
        End If
    Next ccx
 
 
End Sub
Mais là, j'ai une erreur sur une mauvaise utilisation du Else If.
Plutôt qu'une solution, est-ce qu'un expert peu m'aiguiller sur la piste à suivre? Vais-je trop loin ou est-ce que j'oublie une étape dans cet enchaînement de méthodes?

PS : je n'en suis qu'à mes débuts sur Excel, désolé si c'est mal expliqué ou complètement raté.