Supprimer des colonnes entières si vides (avec conditions)
f894009 Messages postés 17413 Statut Membre -
Bonjour,
J'ai trouvé 1000 explications pour supprimer les colonnes mais comme j'y rajoute plusieurs variables rien n'y fait ça ne va pas...
Donc j'ai un tableau de la ligne 11 à 700
J'aimerais une macro qui va regarder les colonnes de U12 à BM700 et si la colonne est vide : supprimer la colonne entière (titre ligne 11 compris)
J'ai actuellement ce code :
Sub SupprimerColonnesVides()
'Étape 1: Déclaration des variables
Dim MyRange As Range
Dim iCounter As Long
'Étape 2: Définir la plage de cellules
Set MyRange = ActiveSheet.Range("U12:BM700")
'Étape 3: Commencez la boucle avec le compte à rebours
For iCounter = MyRange.Columns.Count To 1 Step -1
'Étape 4: Si la colonne entière est vide, supprimez-la
If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then
Columns(iCounter).Select
'Le problème est ici avec la ligne ci dessous qui coince...
Columns(iCounter).EntireColumn.Delete
End If
'Étape 5: Réduisez la valeur du compteur
Next iCounter
End Sub
Donc c'est au moment de supprimer que ça saute, "Columns(iCounter).EntireColumn.Delete" ne va pas...
Auriez-vous une solution ?
Merci beaucoup d'avance :)
Aurélie
Windows / Edge 108.0.1462.54
- Supprimer des colonnes entières si vides (avec conditions)
- Supprimer rond bleu whatsapp - Guide
- Comment faire des colonnes sur word - Guide
- Comment supprimer une page vide sur word - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Supprimer pub youtube - Accueil - Streaming
6 réponses
Bonjour,
En réalité le code comprend bien que le titre ne doit pas être pris en considération car je défini la plage sur
ActiveSheet.Range("U12:BM700")
Le soucis c'est que le code fonctionne pour 3-4 colonnes puis s'arrête, et ça me souligne en jaune dans vba la ligne
Columns(iCounter).EntireColumn.Delete
En faite je réalise qu'il s'arrête quand il trouve une colonne avec des données entre la ligne 12 et 700. Mais j'aimerais qu'il continue jusque la colonne BM...
Merci pour votre aide :)
Re,
Aurélie:
Votre code ne peut pas faire ce que vous voulez.
Le contrôle colonne vide est pour une colonne partant de la ligne 1 pas 12 ou vous ne nous dites pas tout.
Mettez votre fichier à dispo sur ci-joint
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJe suis étonné de voir, dans le code, d'abord
For iCounter = MyRange.Columns.Count To 1 Step -1
ensuite, plusieurs fois, "Columns(iCounter)"
Je pense qu'il est nécessaire, chaque fois, d'écrire "MyRange.Columns(iCounter)".
Bonjour,
Il faut coder par rapport aux colonnes de la Plage:
Sub SupprimerColonnesVides()
Dim MyRange As Range
Dim iCounter As Long
Set MyRange = ActiveSheet.Range("U12:BM700")
With MyRange
NbC = .Columns.Count 'nombre de colonnes de la Plage
'Boucle inverse sur les colonnes Plage
For iCounter = NbC To 1 Step -1
If Application.CountA(.Columns(iCounter)) = 0 Then 'test colonne Plage
.Columns(iCounter).EntireColumn.Delete 'Delete colonne entiere feuille
End If
Next iCounter
End With
Set MyPlage = Nothing
End Sub