> 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 participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
10,99 €Bloc multiprise parasurtenseur BRENNENSTUHL 8 prises à 10,99 €
Valable jusqu'au 20 Avril

Cdiscount fait une promotion sur le bloc multiprise parasurtenseur BRENNENSTUHL avec 8 prises à orientation inversée qui passe à 10,99 € au lieu de 20 €. Le câble fait 1,4 m.


> Voir l'offre
29,99 €Switch Gigabit Netgear GS308E 8 ports administrables à 29,99 €
Valable jusqu'au 22 Avril

Amazon fait une promotion sur le switch Gigabit Netgear GS308E 8 ports administrables qui passe à 29,99 € alors qu'on le trouve ailleurs à partir de 38 €. Ce switch est manageable : vous pouvez créer des sous réseaux isolés VLAN, limiter la bande passante par port, etc. La livraison est gratuite.


> Voir l'offre
39,99 €Imprimante multifonction HP DeskJet 2710 (Wifi) à 39,99 €
Valable jusqu'au 22 Avril

Amazon propose actuellement l'imprimante multifonction HP DeskJet 2710 (WiFi) à 39,99 €. Cette imprimante 3 en 1 fait donc imprimante, photocopieur et scanner. Elle dispose d'un chargeur automatique de documents. Elle fonctionne avec 2 cartouches d'encre (une noire et une 3 couleurs).


> Voir l'offre

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