> Tous les forums > Forum Bureautique
 Excel 2003 : macro pour supprimer une ligneSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Rainier
  Posté le 13/10/2008 @ 16:50 
Aller en bas de la page 
Petit astucien

Bonjour

Ma macro doit, à un moment donné, supprimer une ligne dont la valeur d'une cellule est "(vide)"

pour cela je lance l'enregistrement automatique de macro, puis je fais un filtre en ne selectionnant que les lignes ayant la valeur "(vide)" et je les supprime.

mais le code VB donne cela :

Columns("A:A").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="(vide)"
Rows("358:358").Select
Selection.Delete Shift:=xlUp

ce qui fait que je vais toujours supprimer la ligne 358 ...que la valeur soit "(vide)" ou non !

Comment faire pour que cette valeur soit variable ?

Merci d'avance

David

PS je débute dans les macros, alors soyez indulgents ...

Publicité
g
 Posté le 13/10/2008 à 17:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Avec ce code tu supprimes toutes les rangées vides d'une feuille:

Sub SupRanVid()
With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub

A copier dans un module standard.

Bonne soirée.

Rainier
 Posté le 14/10/2008 à 12:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci beaucoup g

il y a une erreur de compilation "End Sub attendu"

comme le end Sub est bien présent dans ton code, je pense qu'il doit y avoir une autre boucle mal terminée qq part.

de plus, il ne faut pas definir "derli" ?

Merci

Bérylion
 Posté le 14/10/2008 à 12:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Rainier a écrit :

Merci beaucoup g

il y a une erreur de compilation "End Sub attendu"

comme le end Sub est bien présent dans ton code, je pense qu'il doit y avoir une autre boucle mal terminée qq part.

de plus, il ne faut pas definir "derli" ?

Merci

Salut

nan, le code est nickel, vérifie ton module entier (t'as ptet fait un copier/coller de trop)

la déclaration des variables n'est obligatoire que si tu le spécifies en début de module ("Option Explicit")

sinon, c'est conseillé pour éviter les erreurs, mais pas forcément obligatoire.

Rainier
 Posté le 14/10/2008 à 14:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Effectivement si je crée une macro uniquement avec ce code ça marche bien

mais dans mon cas j'ai une erreur de compile car c'est déjà à l'intérieur d'une sub - end sub

Sub Macro-principale

.../...

Sub SupRanVid()
With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub

.../...

End Sub

==> erreur de compil "End Sub attendu"

Maintenant si j'enléve le Sub SupRanVid() / End Sub pour uniquement inserér le code à l'interieur :

Sub Macro-principale

.../...

With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r


.../...

End Sub

==> Erreur de compilation Projet ou bibliotheque introuvable

avec derli surligné !!!!

Bérylion
 Posté le 14/10/2008 à 15:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Rainier a écrit :

Effectivement si je crée une macro uniquement avec ce code ça marche bien

mais dans mon cas j'ai une erreur de compile car c'est déjà à l'intérieur d'une sub - end sub

Sub Macro-principale

.../...

Sub SupRanVid()
With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub

.../...

End Sub

==> erreur de compil "End Sub attendu"

Maintenant si j'enléve le Sub SupRanVid() / End Sub pour uniquement inserér le code à l'interieur :

Sub Macro-principale

.../...

With ActiveSheet.UsedRange
dim derLi%
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
Application.ScreenUpdating = False


.../...

End Sub

==> Erreur de compilation Projet ou bibliotheque introuvable

avec derli surligné !!!!

re-

à tout hasard, rajoute les lignes en bleu...

Rainier
 Posté le 14/10/2008 à 17:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci Berylion !

j'ai aussi rajouté

dim r%

...et ça marche !

(peut être lié à mon ancienne version Excel 2003)

Merci g et Berylion !!

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Creation d' une boucle macro dans fichier EXCEL pour impression
Excel 2003, insertion ligne vierge
Macro pour ouverture d'un fichier Excel
Macro pour créer un Gencode sur Excel - EAN 18
Amélioration d'une macro sous excel 97 ou 2003
Macro supprimer ligne avec condition
Macro pour un envoi feuille excel par mail
Macro excel pour enregistrer
supprimer des lignes dans fichier excel 2003
macro excel pour convertir données
Plus de sujets relatifs à Excel 2003 : macro pour supprimer une ligne
 > Tous les forums > Forum Bureautique