Ce didacticiel montrera comment supprimer ou insérer des lignes en fonction des valeurs de cellule.
Supprimer la ligne en fonction de la valeur de la cellule
Cela va parcourir une plage et supprimer des lignes si la colonne A dit « supprimer ».
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue()'Déclarer les variablesDim LastRow aussi longtemps, FirstRow aussi longtempsDim Row aussi longtempsAvec ActiveSheet'Définir la première et la dernière lignePremière ligne = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Parcourir les lignes (de bas en haut)Pour la ligne = LastRow à FirstRow Étape -1Si .Range("A" & Row).Value = "delete" Then.Range("A" & Row).EntireRow.DeleteFin siLigne suivanteTerminer parFin du sous-marin |
Nous devons commencer la boucle par la ligne du bas car la suppression d'une ligne déplacera les données, en sautant des lignes si vous bouclez de haut en bas.
Notez également qu'au lieu de saisir manuellement la dernière ligne, nous calculons la dernière ligne utilisée.
Supprimer la ligne - Basé sur le filtre
Dans l'exemple précédent, nous avons parcouru les lignes en boucle, en supprimant chaque ligne qui répond aux critères. Alternativement, nous pouvons utiliser le filtre automatique d'Excel pour filtrer les lignes en fonction de certains critères, puis supprimer les lignes visibles :
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows()'Déclarer la variable wsDim ws As Feuille de calculDéfinir ws = ActiveSheet'Réinitialiser les filtres existantsEn cas d'erreur Reprendre ensuitews.ShowAllDataEn cas d'erreur GoTo 0'Appliquer le filtrews.Range("a1:d100").Champ de filtre automatique :=1, Criteria1 :="delete"'Supprimer des lignesApplication.DisplayAlerts = Fauxws.Range("a1:d100").SpecialCells(xlCellTypeVisible).SupprimerApplication.DisplayAlerts = True'Effacer le filtreEn cas d'erreur Reprendre ensuitews.ShowAllDataEn cas d'erreur GoTo 0Fin du sous-marin |
Supprimer la ligne en fonction des critères de la cellule
Cela bouclera sur une plage, en supprimant des lignes si la cellule de la colonne A répond à certains critères (< 0) :
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue()'Déclarer les variablesDim LastRow aussi longtemps, FirstRow aussi longtempsDim Row aussi longtempsAvec ActiveSheet'Définir la première et la dernière lignePremière ligne = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Parcourir les lignes (de bas en haut)Pour la ligne = LastRow à FirstRow Étape -1Si .Range("A" & Row).Value < 0 Then.Range("A" & Row).EntireRow.DeleteFin siLigne suivanteTerminer parFin du sous-marin |
Programmation VBA | Le générateur de code fonctionne pour vous !
Supprimer la ligne si la cellule est vide
Cela bouclera sur une plage, en supprimant une ligne si une cellule de la colonne A est vide :
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue()'Déclarer les variablesDim LastRow aussi longtemps, FirstRow aussi longtempsDim Row aussi longtempsAvec ActiveSheet'Définir la première et la dernière lignePremière ligne = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Parcourir les lignes (de bas en haut)Pour la ligne = LastRow à FirstRow Étape -1Si .Range("A" & Row).Value = "" Then.Range("A" & Row).EntireRow.DeleteFin siLigne suivanteTerminer parFin du sous-marin |
Supprimer la ligne vide
Alternativement, si vous souhaitez supprimer une ligne si la ligne entière est vide (Cliquez sur le lien pour une méthode légèrement différente), vous pouvez utiliser ce code :
1234567891011121314151617181920 | Sub DeleteBlankRows()'Déclarer les variablesDim LastRow aussi longtemps, FirstRow aussi longtempsDim Row aussi longtempsAvec ActiveSheet'Définir la première et la dernière lignePremière ligne = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Parcourir les lignes (de bas en haut)Pour la ligne = LastRow à FirstRow Étape -1Si WorksheetFunction.CountA(.Rows(Row)) = 0 Alors.Lignes(Ligne).Ligne entière.SupprimerFin siLigne suivanteTerminer parFin du sous-marin |
Supprimer la ligne si la cellule contient une valeur
Cela bouclera sur une plage, en supprimant une ligne si la cellule de la colonne A n'est pas vide :
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue()'Déclarer les variablesDim LastRow aussi longtemps, FirstRow aussi longtempsDim Row aussi longtempsAvec ActiveSheet'Définir la première et la dernière lignePremière ligne = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Parcourir les lignes (de bas en haut)Pour la ligne = LastRow à FirstRow Étape -1Si .Range("A" & Row).Value "" Then.Range("A" & Row).EntireRow.DeleteFin siLigne suivanteTerminer parFin du sous-marin |
Fatigué de rechercher des exemples de code VBA ? Essayez AutoMacro !
Insérer une ligne en fonction de la valeur de la cellule
Cela bouclera sur une plage, en insérant des lignes si une certaine cellule de cette ligne dit « insérer » :
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue()'Déclarer les variablesDim LastRow aussi longtemps, FirstRow aussi longtempsDim Row aussi longtempsAvec ActiveSheet'Définir la première et la dernière lignePremière ligne = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Parcourir les lignes (de bas en haut)Pour la ligne = LastRow à FirstRow Étape -1Si .Range("A" & Row).Value = "insert" Then.Range("A" & Row).EntireRow.InsertFin siLigne suivanteTerminer parFin du sous-marin |