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à :
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é.
Partager