[excel macro] effacer ligne ayant A vide
Résolu
testos
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
8 réponses
bonjour
Tu peux modifier ainsi :
Comme tu as plusieurs colonnes j'ai changé la détection de la taille de ton tableau.
Si tu veux que E et F soit vide, il faut remplacer OR par And
Tu peux modifier ainsi :
Sub efface_vide() Dim l As Long For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1 If Cells(l, "E").Value = "" _ Or Cells(l, "F").Value = "" Then Cells(l, 1).EntireRow.Delete Next l End Sub
Comme tu as plusieurs colonnes j'ai changé la détection de la taille de ton tableau.
Si tu veux que E et F soit vide, il faut remplacer OR par And
bonjour
Je ne vois pas l'intérêt de supprimer une ligne lorsque une "case est vide",
mais si c'est le but, alors cette macro le fait :
Sub efface_A_vide()
Dim l As Integer
For l = Cells(65256, 1).End(xlUp).Row To 1 Step -1
If Cells(l, 1).Value = "" Then Cells(l, 1).EntireRow.Delete
Next l
End Sub
merci de nous dire si cela fonctionne pour toi.
Je ne vois pas l'intérêt de supprimer une ligne lorsque une "case est vide",
mais si c'est le but, alors cette macro le fait :
Sub efface_A_vide()
Dim l As Integer
For l = Cells(65256, 1).End(xlUp).Row To 1 Step -1
If Cells(l, 1).Value = "" Then Cells(l, 1).EntireRow.Delete
Next l
End Sub
merci de nous dire si cela fonctionne pour toi.
bonjour
Cette macro doit s'arrêter, mais elle contient une erreur car il faut définir l'ndex de ligne en "long" et non en "integer" car sinon le maximum de lignes est 32 767.
D'autre part en excel 2007, il faut augmenter le nombre de lignes au-delà de 65356 mais je vous laisse chercher le nouveau maximum !
Cette macro doit s'arrêter, mais elle contient une erreur car il faut définir l'ndex de ligne en "long" et non en "integer" car sinon le maximum de lignes est 32 767.
D'autre part en excel 2007, il faut augmenter le nombre de lignes au-delà de 65356 mais je vous laisse chercher le nouveau maximum !
Sub efface_A_vide() Dim l As long For l = Cells(65356, 1).End(xlUp).Row To 1 Step -1 If Cells(l, 1).Value = "" Then Cells(l, 1).EntireRow.Delete Next l End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour à tous,
Puis-je solliciter votre aide s’il vous plait ?
La macro de gbinforme modifier ainsi me convient parfaitement pour supprimer les cellules contenant « zzz » de la colonne A sans effacer la ligne entière :
Sub efface_A_vide()
Dim l As Integer
For l = Cells(65256, 1).End(xlUp).Row To 1 Step -1
If Cells(l, 1).Value = "zzz" Then Cells(l, 1). Delete
Next l
End Sub
Seulement lorsque la dernière cellule de la colonne A contient “zzz”, la cellule d’à coté colonne B passe dans la colonne A (bien sûr cela ce passe aussi bien si la cellule est en A30 qu’en A500)
Je pense que le problème (mise à part mes faibles connaissances en la matière) se trouve ligne3 de la macro avec le mot « Row » alors que je veux rester dans la colonne j’ai ce mot « ligne ».
Merci de aide,
Patrick
Puis-je solliciter votre aide s’il vous plait ?
La macro de gbinforme modifier ainsi me convient parfaitement pour supprimer les cellules contenant « zzz » de la colonne A sans effacer la ligne entière :
Sub efface_A_vide()
Dim l As Integer
For l = Cells(65256, 1).End(xlUp).Row To 1 Step -1
If Cells(l, 1).Value = "zzz" Then Cells(l, 1). Delete
Next l
End Sub
Seulement lorsque la dernière cellule de la colonne A contient “zzz”, la cellule d’à coté colonne B passe dans la colonne A (bien sûr cela ce passe aussi bien si la cellule est en A30 qu’en A500)
Je pense que le problème (mise à part mes faibles connaissances en la matière) se trouve ligne3 de la macro avec le mot « Row » alors que je veux rester dans la colonne j’ai ce mot « ligne ».
Merci de aide,
Patrick
bonjour
Ce que tu as noté n'a rien à voir avec row mais est provoqué par delete.
Comme tu supprime la cellule, une autre en bas ou à droite prends la place.
Pour éviter remplaces delete par clearcontents : tu auras une cellule vide sans déplacement des autres.
Ce que tu as noté n'a rien à voir avec row mais est provoqué par delete.
Comme tu supprime la cellule, une autre en bas ou à droite prends la place.
Pour éviter remplaces delete par clearcontents : tu auras une cellule vide sans déplacement des autres.
Merci gbinforme pour cette réponse rapide,
Réponse évidente, à ma portée, elle me convient parfaitement….
Pour supprimer les cellules vides (car je souhaite aussi les supprimer) j’ai ajouté une ligne et de cette façon j’arrive au but :
Sub efface_A_vide4()
Dim l As Long
For l = Cells(65356, 1).End(xlUp).Row To 1 Step -1
If Cells(l, 1).Value = "zzz" Then Cells(l, 1).ClearContents
If Cells(l, 1).Value = "" Then Cells(l, 1).Delete
Next l
End Sub
En attendant une réponse, j’avais bricolé un peu la macro qui ce passait de « ClearContents » et cela marchait aussi, bien qu’inutile, pour l’humour je vous la présente :
Sub efface_A_vide3() 'ok
Sheets("Feuil1").Select
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "provisoire"
Dim l As Long
For l = Cells(65356, 1).End(xlUp).Row To 1 Step -1
If Cells(l, 1).Value = "zzz" Then Cells(l, 1).Delete
If Cells(l, 1).Value = "" Then Cells(l, 1).Delete
Next l
Range("A65536").End(xlUp).Offset(0, 0).Select
Selection.ClearContents
End Sub
Par contre cette macro ne fonction pas pour supprimer les cellules contenant #VALEUR ! , je vais continuer à chercher pour ce problème. Mais peut-être avez-vous une réponse magique ? :)
Merci encore et bonne soirée
Patrick
Réponse évidente, à ma portée, elle me convient parfaitement….
Pour supprimer les cellules vides (car je souhaite aussi les supprimer) j’ai ajouté une ligne et de cette façon j’arrive au but :
Sub efface_A_vide4()
Dim l As Long
For l = Cells(65356, 1).End(xlUp).Row To 1 Step -1
If Cells(l, 1).Value = "zzz" Then Cells(l, 1).ClearContents
If Cells(l, 1).Value = "" Then Cells(l, 1).Delete
Next l
End Sub
En attendant une réponse, j’avais bricolé un peu la macro qui ce passait de « ClearContents » et cela marchait aussi, bien qu’inutile, pour l’humour je vous la présente :
Sub efface_A_vide3() 'ok
Sheets("Feuil1").Select
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "provisoire"
Dim l As Long
For l = Cells(65356, 1).End(xlUp).Row To 1 Step -1
If Cells(l, 1).Value = "zzz" Then Cells(l, 1).Delete
If Cells(l, 1).Value = "" Then Cells(l, 1).Delete
Next l
Range("A65536").End(xlUp).Offset(0, 0).Select
Selection.ClearContents
End Sub
Par contre cette macro ne fonction pas pour supprimer les cellules contenant #VALEUR ! , je vais continuer à chercher pour ce problème. Mais peut-être avez-vous une réponse magique ? :)
Merci encore et bonne soirée
Patrick
bonjour
cette macro ne fonction pas pour supprimer les cellules contenant #VALEUR !
Ainsi tu supprimes les cellules en erreur.
Cependant ta macro ne peux pas fonctionner correctement car à la fin de son déroulement ta colonne A est complètement décalée de la colonne B et les 2 colonnes sont totalement déphasées.
Désolé mais tu ne peux pas supprimer une cellule et garder l'intégrité de ton fichier, ce qui est possible en supprimant la ligne.
Ta nouvelle formule fonctionne par hasard car au départ tu avait un paramètre par défaut de delete à xlleft ce qui amenait la cellule B en colonne A. Ce paramètre est passé à xlup par tes manipulations ce qui fait que ta cellule A remonte d'une ligne.
cette macro ne fonction pas pour supprimer les cellules contenant #VALEUR !
If Left(Cells(l, 1).Text, 1) = "#" Then Cells(l, 1).Delete
Ainsi tu supprimes les cellules en erreur.
Cependant ta macro ne peux pas fonctionner correctement car à la fin de son déroulement ta colonne A est complètement décalée de la colonne B et les 2 colonnes sont totalement déphasées.
Désolé mais tu ne peux pas supprimer une cellule et garder l'intégrité de ton fichier, ce qui est possible en supprimant la ligne.
Ta nouvelle formule fonctionne par hasard car au départ tu avait un paramètre par défaut de delete à xlleft ce qui amenait la cellule B en colonne A. Ce paramètre est passé à xlup par tes manipulations ce qui fait que ta cellule A remonte d'une ligne.
J'ai quelques notions de VB mais visiblement pas assez pour pouvoir me démerder tout seul:
Voila j'ai des fins de phrases qui ont sauté de ma derniere colonne (L) pour venir s'insérer dans une nouvelle ligne vide en case A
exemple :
J'avais
France 24;54;78;98;MSN98;FALSE
Allemagne 54;90;76;64;76;87;KSKS2;FALSE
et (ne me demandez quoi comment g fé ca) il y a eu plusieurs ligne pour lesquels il s'est passé le suivant:
France 24;54;78;98;MSN98
;FALSE
Allemagne 54;90;76;64;76;87;KSKS2;FALSE
Je n'ai aucune prémice d'idée de comment faire, déjà que je ne sais pas ajouter du texte en fin de chaine de texte d'une cellule sous VB!
Merci énormément pour votre aide
Si c'est toujours ";FALSE" qui est passé en colonne A ligne suivante, avec cette macro cela devrait recoller en colonne L
Grand merci,