Sélection de colonnes contenant un caractère

  • Initiateur de la discussion Initiateur de la discussion Charles
  • 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 !

C

Charles

Guest
Cher forum,

J'aimerai sélectionner, dans une macro, toutes les colonnes d'une feuille dont l'en-tête contient une chaîne de caractères particuliers, p. ex. ###, et n'y arrive pas...

Merci infiniment pour votre aide.
 
Bonjour,

Je suppose que le contenu des entêtes dont tu parles sont dans une cellule particulière choisie par toi même, l'ensemble de ces cellules étant sur une unique ligne ?
Si c'est le cas, il te suffit de faire une boucle qui analysera chacune de ces cellules (gestion de caractères correspondant à ton critère) et de retenir ou refuser la colonne correspondante.
Léa
 
Merci Léa, tu supposes juste...

En fait je veux effacer les colonnes (dont l'en-tête contient le critère) selon le code ci-dessous, mais j'obtiens une erreur "Impossible d'obtenir la propriété FindNext de la classe Range". J'imagine que le problème est le shift qui modifie les références...

'------------
Critere = "TEST"
With Range("A1:Z1")
Set Cell = .Find(Critere)
If Not Cell Is Nothing Then
CellDepart = Cell.Address
Do
Cell.EntireColumn.Select
Selection.Delete Shift:=xlToLeft

Set Cell = .FindNext(Cell)
Loop While Not Cell Is Nothing And Cell.Address <> CellDepart
End If

End With
'---------------

Une suggestion ?

Merci bcp
 
Bonjour à vous deux et au forum

Sans avoir trop cherché pourquoi ta macro ne fonctionne pas.

Je sais que lorsque que l'on veut supprimer des lignes ou des colonnes d'une feuille, il vaut mieux commencer par la fin et remonter la plage :

Option Compare Text '--------------> permet de s'affranchir des minuscule/majuscule

Public Sub vev2()
Dim critere As String
Dim i As Integer

critere = "TEST"
For i = 26 To 1 Step -1
If Cells(1, i) = critere Then
Columns(i).Delete
End If
Next i
End Sub

Salut
Hervé
 
Merci Hervé, j'ai essayé d'inverser la plage (Range("Z1:A1")) mais le message d'erreur subsiste. C'est vraiment bloquant comme problème...

Je reformule ma question:
Comment par VBA supprimer toutes les colonnes d'une feuille dont la première cellule (en ligne 1) contient une chaîne de caractère particulière ?

Merci d'avance.
 
Salut

Ceci devrait répondre à ta question :

Option Compare Text
Public Sub vev2()
Dim critere As String
Dim i As Integer

critere = "TEST"
For i = 26 To 1 Step -1
If Cells(1, i) Like "*" + critere + "*" Then
Columns(i).Delete
End If
Next i
End Sub

Salut
Hervé
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
78
Affichages
2 K
Réponses
2
Affichages
569
Retour