Supprimez ligne Blanche VBA Excel

Clément -  
 Clément -
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.

2 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  2. Clément
     
    Polux, tu m'excusera de t'appeler Dieu
    mais sa marche alors un grand merci Dieu \o/
    0