Supprimer des colonnes vba

Fermé
floker820 Messages postés 5 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 27 février 2014 - 18 févr. 2014 à 10:41
floker820 Messages postés 5 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 27 février 2014 - 18 févr. 2014 à 14:07
Bonjour,

Je m'excuse par avance, je ne programme jamais.
Je souhaite écrire une macro qui scanne un fichier excel et supprime les colonnes ne comportant qu'une seule cellule non vide.


J'ai pour le moment écrit ce début de code:

Sub Suppcolvide()
Dim nbcol As String
Dim curseur As String
Dim nbcellnonvide As String
nbcol = NBVAL(Lines(1))
For curseur = nbcol To 1
nbcellnonvide = NBVAL(Columns(curseur))
If nbcellnonvide = 1 Then
Columns(curseur).Select
Selection.Delete Shift:=xlToLeft
End If
curseur = curseur - 1
Next curseur
End Sub



Sans surprise, ca ne fonctionne pas.
Je pense que mon problème vient de l'utilisation de la fonction qui s'utilise comme suit : NBVAL(A1:A100). Seulement, je ne connais pas a posteriori les colonnes à supprimer. Il faut donc que je les repères par une boucle. Si quelqu'un a une idée ou pourrais me dire comment passer une colonne en chiffre et vice versa.

Merci d'avance

2 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
18 févr. 2014 à 13:37
Bonjour,

un exemple de code:

Sub Suppcolvide()
Dim nbcol
Dim curseur

With Worksheets("feuil1")
'derniere colonne utilise ligne 1
nbcol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
'boucle colonne de max a 1
For curseur = nbcol To 1 Step -1
'test cellules non vide par colonne
If Application.WorksheetFunction.CountA(.Columns(curseur)) = 1 Then
'delete colonne
.Columns(curseur).Delete Shift:=xlToLeft
End If
Next curseur
End With
End Sub
1
floker820 Messages postés 5 Date d'inscription mardi 18 février 2014 Statut Membre Dernière intervention 27 février 2014
18 févr. 2014 à 14:07
Merci beaucoup.
Cette macro réalise exactement ce que je souhaite et j'ai de plus compris mon problème.
0