Langage vba

Résolu
bergnela Messages postés 3 Statut Membre -  
 néné -
Bonjour,
je ne suis pas très bon sur le langage vba de excel et j'ai besoin d'aide

j'aimerai creer une macro qui supprime toutes les lignes dont les cellules sont vides. Pour être plus clair, j'ai un tableau et il faut tester la 1ere cellulle de chaque ligne et si cette cellule est vide, alors il faut supprimer toutes la ligne
pouvez vous m'aider en me donnant 2 macro differente : une avec la formule "isempty" ou "isnull" et une avec un = "" ??
merci

voici la macro que j'ai fait et qui ne marche pas!

Sub suppr_ligne_si_cellule_vide()
'marche pas

For i = 100 To 1 Step -1

If (Cells(1, i).Value = "") Then
Rows(i).Select
Selection.Delete
End If
Next i

End Sub
Configuration: Windows XP
Internet Explorer 7.0

7 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    fais plutôt qcq chose comme Rows(i).EntireRow.Delete
    eric
    0
  2. bergnela Messages postés 3 Statut Membre
     
    euh... nan , cela ne marche pas nn +
    le pb ac ma macro c'est qu'elle suppr toute mes données sauf celles placées sur la 1ere ligne...
    c'est qq peu embetant!!
    merci quand mm
    0
  3. PBGunner Messages postés 64 Statut Membre 64
     
    A vue de nez, sans approfondir, il y a une inversion dans la coordonnées de la cellule:Cells(1, i)
    avec cette fonction ta variable i pointe la colonne et pas la ligne...
    Rappel de la syntaxe: Cells(ligne, colonne)

    en corrigeant par Cells(i,1) je ne vois pas pourquoi ca ne fonctionnerai pas...
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Ben oui, tu as inversé les parametre de cells(ligne,colonne)
    eric
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. filouM Messages postés 2 Statut Membre
     
    essaye cette macro
    Sub Macro1()

    Application.ScreenUpdating = False

    sup_de_ligne:
    Range("A65536").Select
    Selection.End(xlUp).Select
    l1 = Selection.Row()
    For l2 = 1 To 65536: If Range("A" & l2).Value = "" Then Exit For
    Next l2
    If l2 = l1 + 1 Then End

    Rows(l2).Delete Shift:=xlUp
    GoTo sup_de_ligne

    suite:

    End Sub
    0
  7. bergnela Messages postés 3 Statut Membre
     
    oups, la boulette!
    oui j'ai inversé les deux parametres, sa va mieux maintenant!
    merci bcp!!

    des oeils neufs sa aide!
    0
  8. néné
     
    Bonjour,
    Sub suppr_ligne_si_cellule_vide()
    For Each c In [b2:b500] 'plage a traitée par exemple
    Application.ScreenUpdating = False
    c.Select
    If c = "" Then
    Selection.Delete Shift:=xlUp
    End If
    Next
    Application.ScreenUpdating = True
    Range("a1").Select
    End Sub
    0