Problème suppression lignes via macro

manzono -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai créé une macro permettant de supprimer des lignes dans lesquelles se trouvent des cellules vides.
Celle-ci fonctionne très bien sur des fichiers Excel "simples", mais dans le fichiers sur laquelle je l'exécute, la macro ne supprime pas toutes les lignes dans lesquelles il y a des cellules vides!

Quelqu'un aurait il une idée pour ce qui pourrait empêcher la suppression d'une ligne ?
J'ai vérifié le format des lignes qui ne se supprimaient pas, mais je n'ai rien pu trouver...

le code que j'ai utilisé est le suivant :

Sub supp()
Dim Cel_vide As Range
Dim ad_cel As Integer

For Each Cel_vide In Range('A1:F1000')
If Cel_vide.Value = '' Then
ad_cel = Cel_vide.Row
Rows(ad_cel).Delete
End If
Next Cel_vide
End Sub

Merci d'avance!
Configuration: Windows Vista / Firefox 3.5.4

4 réponses

  1. touf
     
    ton programme ne fonctionne pas bien car lorsque tu supprime ta ligne, tu te retrouve sur la ligne en dessous.
    si jamais la cellule est vide, elle n'est pas analyser.
    il faut que tu dise à ton programme de remonter d'une ligne à chaque fois qu'elle supprime une ligne. ainsi, ton programme de supprimer toute les lignes.

    moi j'utilise le programme suivant:

    dim i as integer
    dim abc as string

    'ensuite je vais à la fin du doc et je met le mot "FIN"
    'je selectionne la première ligne : imaginon "A1"

    range("A1").select
    i=0

    do
    abc =activecell.offset(i,0)

    if abc ="" then
    activecell.entirerow.delete
    i=i-1
    else
    end if
    i=i+1

    loop while abc <> "FIN"
    0
  2. touf
     
    je fais la plupart de mes macros au boulo.
    je t'ai filé le script que j'utilise d'habitude. mais j'ai l'impression que ça n'est pas exactement ça (car je l'ai fais de memoire, et honte pour moi, je n'ai pas excel sur mon pc)

    demain je regarderai au boulo. ensuite je te filerai le bon script.

    Mais sache qu'il y a encore d'autre façon de proceder.
    par exemple,
    tu peux appliquer un filtre excel.
    avec le filtre, tu dit a excel de ne faire apparaitre que les lignes vides
    tu selectionne tout et tu supprime toutes les lignes vides.
    0
  3. manzono
     
    ok merci bcp ...

    moi aussi c'est au boulot et aujourd'hui j'ai utilisé les filtres au lieu de me compliquer avec plusieurs boucles, c'est plus pratiques.

    par contre je cherchais à supprimer les lignes dans lesquelles dans la colonne A apparaîtrait une cellule ayant un nombre de caractère différent de 15.
    j'ai utilisé des boucles If en gros en mettant : si une cellule dans la colonne A a un nombre de caractère différent de 15 alors on supprime la ligne entière ou est cette cellule. Mais bon ca ne marche pas :-)

    Si quelqu'un a une solution c'est bienvenue ^^

    Merci à tous
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    C'est toujours pareil, pour une boucle qui supprime des lignes il faut partir de la dernière et remonter vers haut.
    Ex:
        For lig = [A65536].End(xlUp).Row To 1 Step -1
            If Cells(lig, 1) <> ... Then
                ...
            End If
        Next lig

    eric
    0