Supprimez ligne Blanche VBA Excel

Fermé
Clément - 31 mai 2010 à 09:45
 Clément - 31 mai 2010 à 11:19
Bonjour,

Je suis débutant en Visula Basic et je rencontre un problème.
J'ai une feuille de données EXCEL dans laquelle se trouve 5751 données espacées sur les colonnes "A" et AD"
A l'intérieur de ces colonnes j'ai énormément de cellules blanches et d'autres ou se trouve des données.

Le but étant de supprimez des lignes blanches à partir de la colonne E car les colonne A , B , C et D comporte la date, l'heure etc ce qui veux dire que toute la colonne est remplis donc impossible de supprimez des lignes a partir de la colonne A.
De plus la suppression de ligne blanche s'effectue que lorsqu'aucune donnée est rencontré de la colonne "E" a la colonne "AD"

Exemple:

Rappel:En partant de la colonne "E"

Si la ligne 2454 comporte une donnée dans la colonne "G"
Ne pas supprimer la ligne.

Si la ligne 2879 ne comporte aucune données
Alors supprimer la ligne.

Je dois faire ceci sous forme de Macro et je vous avouerai que sa fais 3 jours que je ne trouve pas le code a cela.

Merci de votre aide
Clément.
A voir également:

2 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
31 mai 2010 à 11:09
Bonjour,

Voilà un exemple :

Sub effaceLigne()
Dim ws As Worksheet
Dim lig As Long
Dim plage As Range

    'déclaration de l'objet feuille - mettre ici le numéro de la feuille à traiter.
    Set ws = Worksheets(1)
    'numéro de la première ligne à traiter
    lig = 2
    
    With ws
        'Tant que la cellule A est vide faire
        While .Range("A" & lig).Value <> ""
            'Déclaration de la plage à controler
            Set plage = .Range("E" & lig & ":AD" & lig)
            'Appel de la fonction qui contrôle la plage
            If ctrlPlage(plage) = True Then
                'Si le retour de la fonction est Vrai alors
                'on supprime la ligne
                .Rows(lig).Delete
                lig = lig - 1
            End If
            'On libère l'objet et la mémoire
            Set plage = Nothing
        'Pour passer à la ligne suivante
        lig = lig + 1
        Wend
    End With
    
    
End Sub

Function ctrlPlage(ByRef pTarget As Range) As Boolean
Dim cel

    'Pour toutes les cellules de la plage
    For Each cel In pTarget
        'Si le contenu de la cellule est différent de vide
        If cel.Value <> "" Then
            'On retourne Faux
            ctrlPlage = False
            'On sort de la fonction
            Exit Function
        End If
    Next cel
    
    ctrlPlage = True
    
End Function


;o)
0
Polux, tu m'excusera de t'appeler Dieu
mais sa marche alors un grand merci Dieu \o/
0