efface lignes

maelys

XLDnaute Junior
bonjour
je voudrais pouvoir effacer des lignes dans un tableau lorsque des cellules sont vides
j ai fait une recherche dans les anciens messages postes et j ai trouve ceci:

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

For Each Cel_vide In Range(E7, J80)
If Cel_vide.Value = "" Then
ad_cel = Cel_vide.Row
Rows(ad_cel).Delete
End If
Next Cel_vide
End Sub


le probleme c est que il me dit qu il y a une erreur de methode "range"
et je suis un peu debutante sur vba aussi j aimerai savoir si ca s execute automatiquement ou si il y a besoin d appeler la fct dans la feuille ou je met le code
merci pour votre aide
 

informatixo

XLDnaute Occasionnel
Re : efface lignes

Bonjour maelys et le forum,

Oui je pense que l'erreur vient qu'il faut des guillemets et 2 points pour Range.

Je pense que cette ligne de code :

Code:
[COLOR=RoyalBlue]     [COLOR=Black]For Each Cel_vide In Range(E7, J80)[/COLOR][/COLOR]
doit se transformer en celle-ci :

Code:
[COLOR=RoyalBlue]     [COLOR=Black]For Each Cel_vide In Range("E7:J80")[/COLOR][/COLOR]

A plus
 

maelys

XLDnaute Junior
Re : efface lignes

coucou
effectivement ca fonctionne mais je viens de me rendre compte que j avais oublie de prendre en compte une condition cad je voudrais supprimer la ligne seulement si sur cette ligne on a des valeurs dans les cases A,B,C mais rien d ecrit dans D et E
merci par avance
 

informatixo

XLDnaute Occasionnel
Re : efface lignes

Re,

Essaye ce code, désolé j'ai pas eu le temps de faire un classeur :

Code:
[COLOR=Black]Sub supp()
Dim Cel_vide As Range
Dim ad_cel As Integer

For Each Cel_vide In Range(E7, J80)
If Cel_vide.Value = "" Then
ad_cel = Cel_vide.Row
if Cells(ad_cel,1).Value <> "" And [/COLOR][COLOR=Black]Cells(ad_cel,2).Value <> "" And [/COLOR][COLOR=Black]Cells(ad_cel,3).Value <> "" And [/COLOR][COLOR=Black]Cells(ad_cel,4).Value = "" And [/COLOR][COLOR=Black]Cells(ad_cel,5).Value = "" then[/COLOR]
[COLOR=Black]Rows(ad_cel).Delete
End if
End If
Next Cel_vide
End Sub[/COLOR]
Dis moi si ça marche

A plus
 

Dan

XLDnaute Barbatruc
Re : efface lignes

Bonjour,

Le code d'informatixo fonctionne.

Toutefois dans son dernier post, remplace :
Code:
For Each Cel_vide In Range(E7, J80)
Par
Code:
For Each Cel_vide In Range("E7:J80")

La macro doit être placée dans un module que tu dois créer en VBA (ALT+F11 pour accéder à VBA puis clique sur menu/insertion/module et place la macro proposée dans ce fil)

Ensuite si pb, peux-tu donner la plage dans laquelle tu dois faire le controle.

A bientôt
 

maelys

XLDnaute Junior
Re : efface lignes

coucou
c encore moi, desole de vous embeter mais je n arrive pas a le faire fonctionner vu que le fichier excell comporte plusieurs feuilles, je dois expliciter la feuille dans laquelle je veux supprimer les lignes dans le code non?
merci encore
 

Dan

XLDnaute Barbatruc
Re : efface lignes

Re,

Je pense que le mieux est de placer ton fichier (avec données non confidentielles) si tu n'y arrives pas.

Toutefois, si la macro proposée ici est placée dans un module, tu dois :
- Sélectionner ta feuille concernée
- aller dans menu/outils/macro/macros et la sélectionner
- cliquer sur le bouton "exécuter".

A te lire
 

Hellboy

XLDnaute Accro
Re : efface lignes

Bonjour a tous

Une autre suggestion:



Public Sub Supprimer_ligne()
Dim intLastRow  As Integer, intLastColumn  As Integer, intLine  As Integer

' Ici je prend la feuille 1 comme exemple
With Worksheets(1)
  
With .Cells.SpecialCells(xlLastCell)
      intLastRow = .Row
      intLastColumn = .Column
  
End With
' Ici je suppose que La colonne 1 (A) est la première colonne et
' que la ligne 2 est la première ligne de données
' Il est préférable de partir de la ligne du bas pour la suppression de ligne
' parce que le contraire va faire en sorte que tu vas manquer une ligne
' a chaque fois que tu va en supprimer une
  
For intLine = intLastRow To 2 Step -1
  
'  Au lieu de regarder chaque cellule de la plage, je compte ne nombre de cellules vide
  
'  qui servira de crit`re pour savoir si on supprime la ligne ou pas
  

    
If Application.WorksheetFunction.CountBlank(.Range(.Cells(intLine, 1), .Cells(intLine, intLastColumn))) > 0 Then
      Rows(intLine).Delete
    
EndIf
  
Next intLine
End With
End Sub


coucou, c tu ça que sa prend pour porter attention a un post ?
 
Dernière édition:

maelys

XLDnaute Junior
Re : efface lignes

coucou
je ne peux joindre le fichier dans le message car trop lourd
donc je vais essayer d etre super claire: j ai 2 feuilles dans le dossier excel, dans la premiere j ecris des valeurs et si il y a un incident je clique sur un bouton de commande qui m ouvre automatiquement la deuxieme feuille et recopie automatiquement trois valeurs precedemment ecrites.il ne reste plus qu a ecrire dans deux colonnes la raison et le temps de l incident.
le probleme que je voudrais enlever est l appui par inadvertance sur ce bouton qui entraine l apparition de lignes avec ces trois valeurs ss que j arrive a les supprimer de retour sur cette page
merci d avance
 

Dan

XLDnaute Barbatruc
Re : efface lignes

Re,

Ben dans ce cas, pourquoi ne pas faire apparaitre un message de confirmation qui te demande si tu veux exporter ces données sur la feuille 2 ou non. Dans ce cas, si tu cliques sur OUI les données seront placées en feuille 2. Si tu t'aperçois que tu as cliqué sur le bouton par erreur il te suffirait de cliquer sur NON pour que rien ne se passe.
 

maelys

XLDnaute Junior
Re : efface lignes

coucou
effectivement ca pòurrait etre une idee mais a vrai dire je ne vois pas trop comment je pourrais le transcrire sur vba?
d ailleurs je profite de ce message pour savoir si c est possible lorsqu on clique sur un bouton de commande , on puisse lui modifier sa couleur car je connais les formats conditionnels pour les cellules mais pour les boutons de commande pas trop
merci encore
 

informatixo

XLDnaute Occasionnel
Re : efface lignes

Re,

Dans ce cas, je te proposes ceci :

Code:
Sub supp()
[LEFT][COLOR=Black] Dim Cel_vide As Range
Dim ad_cel As Integer

For Each Cel_vide In Worksheets(1).Range("E7:J80")
If Cel_vide.Value = "" Then
ad_cel = Cel_vide.Row
if [/COLOR][COLOR=Black]Worksheets(1).[/COLOR][COLOR=Black]Cells(ad_cel,1).Value <> "" And [/COLOR][COLOR=Black]Worksheets(1).[/COLOR][COLOR=Black]Cells(ad_cel,2).Value <> "" And [/COLOR][COLOR=Black]Worksheets(1).[/COLOR][COLOR=Black]Cells(ad_cel,3).Value <> "" And [/COLOR][COLOR=Black]Worksheets(1).[/COLOR][COLOR=Black]Cells(ad_cel,4).Value = "" And [/COLOR][COLOR=Black]Worksheets(1).[/COLOR][COLOR=Black]Cells(ad_cel,5).Value = "" then[/COLOR]
[COLOR=Black]Worksheets(1).[/COLOR] [COLOR=Black]Rows(ad_cel).Delete
End if
End If
Next Cel_vide
End Sub[/COLOR][/LEFT]


J'ai mis Worksheets(1) car je ne connais pas le nom de ta feuille mais tu peux remplacer le 1 par le nom de ta feuille (celui écrit dans l'onglet en bas) entre guillemets.

Bon courage et à plus
 

Discussions similaires

Réponses
2
Affichages
171
Réponses
1
Affichages
377

Statistiques des forums

Discussions
312 398
Messages
2 088 076
Membres
103 706
dernier inscrit
amin Saadaoui