Suppression de colonne

Bonjour

Je désire supprimer des colonnes qui sont "vides"

Suite à une extraction d'un autre logiciel, je récupère un fichier TXT que j'importe dans excel

Dans ce nouveau fichier, j'ai plusieurs colonnes qui sont vides, et que je veux supprimer.

Le piège, c'est que ces colonnes vides contiennent en réalité des espaces.

Et le 2eme piège, c'est qu'il ne faut pas supprimer les espaces dans tout le fichier parce que j'ai d'autres colonnes avec du texte (et des espaces).

Voici le code que Julien35000 a déjà fait, mais malheureusement je ne savais pas qu'il y avait des espaces et que le code ne fonctionnerait pas

Sub Bouton1_Clic()

Dim c

For c = 256 To 1 Step -1

If Cells(65536, c).End(xlUp).Row = 1 Then Cells(1, c).EntireColumn.Delete

Next c

End Sub

Merci pour votre aide

Christophe

Salut,

Je te propose ci-dessous un code qui passe en revue toutes les cellules de la plage utilisée et qui supprime les espaces dans les cellules qui ne comportent que des espaces.

Tu pourrais l'appeler depuis ton autre macro ou l'y intéger.

Sub Suprimer_certains_espaces()
Dim i As Byte, Cellule As Range, Longueur As Byte, Compteur As Byte

For Each Cellule In ActiveSheet.UsedRange
    Longueur = (Len(Cellule))
    For i = 1 To Longueur
        If Mid(Cellule, i, 1) = " " Then Compteur = Compteur + 1
    Next i

    If Compteur = Longueur Then Cellule = ""

    Compteur = 0

Next

End Sub

Cordialement.

EDIT : Je te propose également une petite modification de la macro de base afin d’accélérer un peu le code, en ne passant pas systématiquement les 256 colonnes en revue.

Dans le fichier ci-joint, les deux macros liées.

3test-16.xlsm (17.92 Ko)

Bonsoir,

Sans fichier c'est plus de la déduction mais bon, voilà un code qui teste si toutes les cellules de la colonne ont un (1) espace et un seul et que le nombre d'espaces est identique au nombre de cellules, la colonne est supprimée mais il suffit que dans une cellule de la colonne il y ai deux espaces ou une lettre ou chiffre pour qu'elle soit ignorée. Donc, si le nombre d'espaces par cellule est anarchique ça ne fonctionnera pas :

Sub Test()

    Dim Plage As Range
    Dim Cel As Range

    'défini la plage sur toute la zone utilisée de la feuille à partir de A1
    Set Plage = DefPlage(ActiveSheet, 1, 1)

    For Each Cel In Plage.Rows(1).Cells

        If Application.CountIf(Plage.Columns(Cel.Column), " ") = Plage.Columns(Cel.Column).Cells.Count Then

            Cel.EntireColumn.Delete

        End If

    Next Cel

End Sub

Function DefPlage(Fe As Worksheet, L As Long, C As Long) As Range

    On Error GoTo Fin

    With Fe

        Set DefPlage = .Range(.Cells(L, C), _
                       .Cells(.Cells.Find("*", .[A1], -4123, , _
                       1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                       2, 2).Column))

    End With

    Exit Function

Fin:

    Set DefPlage = Nothing

End Function

Bonjour,

Yvouille, merci pour ton aide.

J'ai utilisé ton code qui va très bien.

C'est exactement ce qu'il me fallait.

Grâce à toi j'ai pu bien avancé et gagné du temps.

Christophe

Rechercher des sujets similaires à "suppression colonne"