Macro VBA me sup lignes non vide
momo1992
-
momo1992 -
momo1992 -
J ai une macro de mise en forme qui fait plusieurs modif dont elle doit supprimer des lignes vides ou inutiles. sauf qu'elle me supprime des lignes non vides pour klk données. ci dessous les parties de suppression de ma macro si vous pouvez m'expliquer la macro et d'ou vient le problème : (je suis nul en VBA je raisonne plutot en SQL) MERCII D'AVANCE !!
1/
'Cacher l'écran durant l'exécution de la macro
Application.ScreenUpdating = False
'Suppression des lignes vides
Rows("18:19").Select
Selection.Delete Shift:=xlUp
Rows("51:51").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
'Calcul du nombre de lignes de la sélection
Nb_Lignes_Calcul = Range("E1048576").End(xlUp).Row 'Compte le nombre de lignes non vides à partir de la dernière ligne d'Excel - Variable de stockage pour la suite
Nb_Lignes_BDD = Nb_Lignes_Calcul - 8 'On retire les lignes d'en-tête pour qu'elles ne soient pas prises en compte dans le total
2/
Columns("M:Z").Select
Selection.Delete Shift:=xlToLeft
Columns("T:X").Select
Selection.Delete Shift:=xlToLeft
Range("U8").Select
ActiveCell.FormulaR1C1 = "Code"
Columns("T:T").Select
Selection.Delete Shift:=xlToLeft
Merciiiiiiiiiiiiiiiiiiii
1/
'Cacher l'écran durant l'exécution de la macro
Application.ScreenUpdating = False
'Suppression des lignes vides
Rows("18:19").Select
Selection.Delete Shift:=xlUp
Rows("51:51").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
'Calcul du nombre de lignes de la sélection
Nb_Lignes_Calcul = Range("E1048576").End(xlUp).Row 'Compte le nombre de lignes non vides à partir de la dernière ligne d'Excel - Variable de stockage pour la suite
Nb_Lignes_BDD = Nb_Lignes_Calcul - 8 'On retire les lignes d'en-tête pour qu'elles ne soient pas prises en compte dans le total
2/
Columns("M:Z").Select
Selection.Delete Shift:=xlToLeft
Columns("T:X").Select
Selection.Delete Shift:=xlToLeft
Range("U8").Select
ActiveCell.FormulaR1C1 = "Code"
Columns("T:T").Select
Selection.Delete Shift:=xlToLeft
Merciiiiiiiiiiiiiiiiiiii
A voir également:
- Macro VBA me sup lignes non vide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Supprimer page word vide - Guide
- Caractere vide - Guide
- Formate pour taxer client frigo vide - Forum Vos droits sur internet
- Coeur vide ✓ - Forum Réseaux sociaux
1 réponse
Bonjour Momo, bonjour le forum,
Quand tu supprimes les lignes 18 et 19, la ligne 51 se retrouve en ligne 49. Donc, quand après tu supprimes la ligne 51 elle correspond à la ligne 53 d' avant la première suppression... Essaie :
Pour supprimer les 3 lignes en une seule fois...
Sinon, en règle générale, évite autant que tu le peux les Select qui ne font que ralentir l'exécution du code...
À plus,
ThauTheme
Quand tu supprimes les lignes 18 et 19, la ligne 51 se retrouve en ligne 49. Donc, quand après tu supprimes la ligne 51 elle correspond à la ligne 53 d' avant la première suppression... Essaie :
Range("A18:A19, A51").EntireRow.Delete
Pour supprimer les 3 lignes en une seule fois...
Sinon, en règle générale, évite autant que tu le peux les Select qui ne font que ralentir l'exécution du code...
À plus,
ThauTheme
et j'ai une autre macro je voudrais m'assurer qu'elle est correcte c'est pour supprimer les lignes vides :
Sub Suppression_lignes_Proposition_du_Forum()
' Macro servant à supprimer les lignes dont les montants sont à 0 et les lignes erronnées avec des "-"
' Solution trouvée à partir du forum Excel-Pratique via les différentes propositions : http://forum.excel-pratique.com/excel/accelerer-une-boucle-t62158.html
'Suppression des lignes à 0
derligne = Range("A1").End(xlDown).Row
'Déterminer la plage de données sur laquelle le code va s'exécuter
Columns("A:T").Select
ActiveWorkbook.Worksheets("BDD à trier").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("BDD à trier").Sort.SortFields.Add Key:=Range( _
"L2:L" & derligne), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("BDD à trier").Sort
.SetRange Range("A1:T" & derligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Prise en compte du critère de suppression numéro 1
Rows(Sheets("Paramètres de tri").Range("B2") & ":" & Sheets("Paramètres de tri").Range("B3")).Select 'Sélectionner la plage de cellule de la ligne mentionnée dans la cellule B2 à la ligne dans la cellule B3
Selection.Delete Shift:=xlUp 'Supprimer la sélection
derligne = Range("A1").End(xlDown).Row 'Détermine le nombre de lignes maxi sur lequel les tris vont s'effectuer
Columns("A:T").Select
ActiveWorkbook.Worksheets("BDD à trier").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("BDD à trier").Sort.SortFields.Add Key:=Range( _
"A2:A" & derligne), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("BDD à trier").Sort
.SetRange Range("A1:T" & derligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Suppression des lignes avec des tirets pour montant
derligne = Range("A1").End(xlDown).Row
'Déterminer la plage de données sur laquelle le code va s'exécuter
Columns("A:T").Select
ActiveWorkbook.Worksheets("BDD à trier").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("BDD à trier").Sort.SortFields.Add Key:=Range( _
"L2:L" & derligne), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("BDD à trier").Sort
.SetRange Range("A1:T" & derligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Prise en compte du critère de suppression numéro 2
Rows(Sheets("Paramètres de tri").Range("B7") & ":" & Sheets("Paramètres de tri").Range("B8")).Select 'Sélectionner la plage de cellule de la ligne mentionnée dans la cellule B7 à la ligne dans la cellule B8
Selection.Delete Shift:=xlUp 'Supprimer la plage de données
derligne = Range("A1").End(xlDown).Row 'Détermine le nombre de lignes maxi sur lequel les tris vont s'effectuer
Columns("A:T").Select
ActiveWorkbook.Worksheets("BDD à trier").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("BDD à trier").Sort.SortFields.Add Key:=Range( _
"A2:A" & derligne), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("BDD à trier").Sort
.SetRange Range("A1:T" & derligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Cordialement
Momo
Critère de suppression 1 0 <<< paramétrage des suppressions des lignes à 0
Première ligne 2162
Dernière ligne 537946
Critère de suppression 2 - <<< paramétrage des suppressions des lignes dont le montant est un tiret
Première ligne 592930
Dernière ligne 696416