[Résolu] supprimer colonne suivant condition

  • Initiateur de la discussion Initiateur de la discussion Profane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Profane

XLDnaute Occasionnel
Bonjour le forum

j'essaye de faire une boucle sur un tableau
l'idée est de supprimer la colonne si l'entete ne verifie pas la condition
une aide serai bienvenu ;-)

voici la macro :

Sub supcolColt()
Sheets("colt").Activate
Dim J As Integer
With Sheets("Colt")
For J = Range("A1").End(xlRight).Column To 30 Step -1 'on prend le numéro de la dernière colonne et on va jusqu'à 1
If Sheets("Colt").Cells(1, J) = "Hostname" Then J = J - 1

ElseIf Sheets("Colt").Cells(1, J) = "Testname" Then J = J - 1

ElseIf Sheets("Colt").Cells(1, J) = "24x7 green %" Then J = J - 1

ElseIf Sheets("Colt").Cells(1, J) = "24x7 yellow %" Then J = J - 1

ElseIf Sheets("Colt").Cells(1, J) = "24x7 red %" Then J = J - 1

Else: Column(J).Delete
End If
Next
End With
End Sub
 
Dernière édition:
Re : supprimer colonne suivant condition

Bonjour,

essaye ceci, à adapter à ton projet, agit sur la feuille active, à placer dans un module standard :
Code:
Option Explicit
Sub test()
Dim i As Long, t() As Variant
t = Array("Hostname", "Testname", "24x7 green %", "24x7 yellow %", "24x7 red %")
For i = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
    If IsError(Application.Match(Cells(1, i), t, 0)) Then Columns(i).Delete
Next i
End Sub

bonne journée
@+
 
Re : supprimer colonne suivant condition

Bonjour à tous,

Peut-être ceci

Code:
Option Explicit

Sub supcolColt()
Sheets("colt").Activate
Dim J As Integer
With Sheets("Colt")
For J = 30 To 1 Step -1 'on prend le numéro de la dernière colonne et on va jusqu'à 1
If Sheets("Colt").Cells(1, J) = "Hostname" Then
J = J
ElseIf Cells(1, J) = "Testname" Then
J = J
ElseIf Cells(1, J) = "24x7 green %" Then
 J = J
ElseIf Cells(1, J) = "24x7 yellow %" Then
J = J
ElseIf Cells(1, J) = "24x7 red %" Then
J = J
Else
Columns(J).Delete
End If
Next
End With
End Sub
 
Re : supprimer colonne suivant condition

Bonjour,
voici ma propostition, dis moi si tu ne comprends pas quelque chose
Code:
Sub supcolColt()
Sheets("Colt").Activate
Dim J As Integer
dim dercolonne as integer
With Sheets("Colt")
dercolonne = Range("XFD1").End(xlToLeft).Column
For J = dercolonne To 30 Step -1 'on prend le numéro de la dernière colonne et on va jusqu'à 1
If Sheets("Colt").Cells(1, J) = "Hostname" Then

ElseIf Sheets("Colt").Cells(1, J) = "Testname" Then

ElseIf Sheets("Colt").Cells(1, J) = "24x7 green %" Then

ElseIf Sheets("Colt").Cells(1, J) = "24x7 yellow %" Then

ElseIf Sheets("Colt").Cells(1, J) = "24x7 red %" Then

Else: Columns(J).Delete
End If
Next
End With
End Sub
(PS : Tu peux optimiser, car tu précises à chaque fois que tu es dans la feuille colt, alors que tu l'as précisé au tout début)
Bonne chance
 
Re : supprimer colonne suivant condition

Merci à tous pour votre aide,
j'ai compris où étais mon erreur ;-)
j'ai opté pour la solution de Pierrot, j'aime assez l'idée de déclarer tous les champs possibles en variable dès le dépat,ca optimise le code

question subsidiaire à Pierrot: a quoi correspond le 0 dans "If IsError(Application.Match(Cells(1, i), t, 0))"

@ tashiqi : oui c'est vrai j'aurai pu mettre uniquement .Cells(1, J) en début de condition ;-)
 
Re : supprimer colonne suivant condition

Aide windows
Arg3 Facultatif Variante Type - nombre -1, 0 ou 1. Type spécifie la manière dont Microsoft Excel recherche valeur_cherchée dans matrice_recherche.
Si type prend la valeur 0, la fonction MATCH recherche la première valeur qui est exactement égale à valeur_cherchée. Matrice_recherche peut se trouver dans un ordre quelconque.

Avec 1 et -1, ce sont des comparaisons
 
Re : supprimer colonne suivant condition

Re,

question subsidiaire à Pierrot: a quoi correspond le 0 dans "If IsError(Application.Match(Cells(1, i), t, 0))"

c'estl'argument "type" de la fonction de feuille de calcul EQUIV, ci-dessous extrait de l'aide Excel
Si la valeur de l'argument type est 0, la fonction EQUIV trouve la première valeur exactement équivalente à celle de l'argument valeur_cherchée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
15
Affichages
786
Réponses
4
Affichages
733
Réponses
5
Affichages
911
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
452
Réponses
8
Affichages
780
Réponses
2
Affichages
411
Retour