Chercher et supprimer une plage vide

  • Initiateur de la discussion Michèle
  • Date de début
M

Michèle

Guest
Bonjour le Forum,
Petite question : j'ai un code qui 'normalement' devrait me trouver les plages vides et me les éliminer, ce qui est encore loin de mon cas :S
Est-ce que quelqu'un pourrait me dire où est-ce que je me suis plantée sur mon code?


Sub elimplagvid()
Dim maplage As Range
Dim k, d, i As Integer
i = 1
Set maplage = Range(Cells(i, 1), Cells(i, 10))
d = Range('A65536').End(xlUp).Row
For k = 1 To Sheets.Count
For i = 1 To d
If maplage = '' Then
maplage.Delete
End If
Next i
Next k
End Sub

déja reconnaissante pour la réponse et l'aide que vous allez m'apporter!
 

porcinet82

XLDnaute Barbatruc
Salut Michèle,

Alors il me semble que plusieurs chose ne vont pas dans ton code. Tout d'abord, concernant les declarations des variables, si tu mets Dim k, d, i As Integer, seul i est déclaré en Integer, k et d sont déclarés en Variant.

Ensuite, tu mets Set maplage = Range(Cells(i, 1), Cells(i, 10)) qui concerne donc la plage A1:A10, puisque i est initialiser à 1.Cependant, tu boucle sur la colonne A, or si celle-ci est vide, ta boucle ne se lance pas, et si elle contient des valeurs, alors ta conditions n'estpas vérifier, et la plage de cellule n'est donc pas supprimer.

Enfin dernière chose, tu déclares ta plage hors de ta boucle For i=1 To d, et donc, le i de ta plage n'est donc pas incrémenter, ce qui fait que tu boucles sur la colonne A, mais que ta plage est toujours A1:A10.

J'avais oublié un petit point, tu boucles également sur les feuilles, mais tu ne dis nul part qu'il faut en changer (Sheets(k).select).

Plusieurs possibilité sont possible pour faire ce que tu veux, notament je pense en passant par un For Each, donc si tu avais un petit fichier exemple, ce serai pas mal.

@+

Message édité par: porcinet82, à: 13/04/2006 12:32
 

porcinet82

XLDnaute Barbatruc
re,

Je viens de te faire un petit bout de code qui devrait fonctionner, mais a bien tester tout de meme :
Code:
Sub elimplagvid()
Dim cel As Range
Dim k As Integer, i As Integer

For k = 1 To Sheets.Count
    Sheets(k).Select
    For i = 1 To 100 'A Adapter
        For Each cel In Range('A' & i & ':J' & i)
            If Not cel = '' Then
                Exit For
            Else
                Range('A' & i & ':J' & i).Delete Shift:=xlUp
            End If
        Next cel
    Next i
Next k
End Sub

Si tu as des questions, n'hesite pas, a faire signe.

@+

Edition : Les &nb sp; et ; sont bien entendu a enlever

Message édité par: porcinet82, à: 13/04/2006 12:39
 

Discussions similaires

Réponses
11
Affichages
297

Statistiques des forums

Discussions
312 280
Messages
2 086 743
Membres
103 384
dernier inscrit
bakhtibenabbey