Supprimer des colonnes entières si vides (avec conditions)
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
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
- Excel cellule couleur si condition texte - Guide
6 réponses
bonjour,
moi j'essaierais
Columns(iCounter).Delete
"ça saute", "ne va pas...": un message d'erreur?
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