Sélection de colonnes contenant un caractère

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.
 
L

lea

Guest
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
 
C

Charles

Guest
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
 
H

Hervé

Guest
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é
 
C

Charles

Guest
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.
 
H

Hervé

Guest
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é
 

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 307
Membres
103 174
dernier inscrit
OBUTT