macro suppression lignes vides sur plage non fixe

yax44

XLDnaute Nouveau
Bonjour,
J'ai modifié un bon de commande (voir fichier en pièce jointe) en permettant à l'utilisateur d'ajouter des lignes si c'est nécessaire.
J'aimerais maintenant qu'il puisse supprimer les lignes vides (si la colonne D "Qté" n'est pas renseignée).
Vous verrez que j'avais déjà une macro pour faire cela mais avant je connaissais la plage à balayer donc ça allait...
Maintenant, je ne sais pas comment modifier cette macro pour que la suppression se fasse sur toute la plage qui sera utilisée.
La première ligne doit être la ligne 26.
La dernière ligne doit être celle juste au-dessus du texte "Nos prix s'entendent....20% pour tous les articles" afin que ce texte et les calculs des totaux restent sur le bon de commande.

Merci d'avance pour votre aide.

Sylvain
 

Pièces jointes

  • BC_essai.xlsm
    49.3 KB · Affichages: 20
  • BC_essai.xlsm
    49.3 KB · Affichages: 22
  • BC_essai.xlsm
    49.3 KB · Affichages: 23

camarchepas

XLDnaute Barbatruc
Re : macro suppression lignes vides sur plage non fixe

Bonjour,

Voici la macro modifiée et légérement optimisée

Code:
Public Sub DelLigne_BC_BB()
 
Dim i As Long
Dim Ligne_Max As Long
Dim Trouve As Range

Set Trouve = Range("A:A").Find("Nos prix s'entendent Hors Taxes", Lookat:=xlPart)
Ligne_Max = Trouve.Row - 1
Application.ScreenUpdating = False
 For i = Ligne_Max To 28 Step -1
    If IsEmpty(Worksheets("Feuil2").Cells(i, 4)) = True Then Worksheets("Feuil2").Rows(i).Delete
 Next i
Application.ScreenUpdating = True
End Sub
 

yax44

XLDnaute Nouveau
Re : macro suppression lignes vides sur plage non fixe

Bonjour,
Merci pour cette réponse rapide et efficace; en effet, la macro est optimisée : merci !
Serait-il possible maintenant de la modifier à nouveau pour que finalement ne subsistent que les lignes avec des quantités de produits ?
En fait, par exemple, sur l'image, il faudrait que la ligne en bleu clair soit supprimée car il n'y a aucun produit dans la rubrique correspondante.

Capture_excel.jpg
 

Pièces jointes

  • Capture_excel.jpg
    Capture_excel.jpg
    63.9 KB · Affichages: 21
  • Capture_excel.jpg
    Capture_excel.jpg
    63.9 KB · Affichages: 20

camarchepas

XLDnaute Barbatruc
Re : macro suppression lignes vides sur plage non fixe

Comme ceci peut être alors

Code:
Public Sub DelLigne_BC_BB()
  
 Dim i As Long
 Dim Ligne_Max As Long
 Dim Trouve As Range
 Dim Quantité As Long
 
 Set Trouve = Range("A:A").Find("Nos prix s'entendent Hors Taxes", Lookat:=xlPart)
 Ligne_Max = Trouve.Row - 1
 Application.ScreenUpdating = False
  For i = Ligne_Max To 28 Step -1
     If IsEmpty(Worksheets("Feuil2").Cells(i, 4)) = True Then Worksheets("Feuil2").Rows(i).Delete
     If Worksheets("Feuil2").Cells(i, 1) = "Réf." And Quantité = 0 Then
       Worksheets("Feuil2").Rows(i).Delete
       Quantité = 0
      Else
       Quantité = 0
     End If
     If Worksheets("Feuil2").Cells(i, 4) <> "Qté" Then Quantité = Quantité + CLng(Worksheets("Feuil2").Cells(i, 4))
  Next i
 Application.ScreenUpdating = True
 End Sub
 

yax44

XLDnaute Nouveau
Re : macro suppression lignes vides sur plage non fixe

Presque mais pas tout à fait car là, ça supprime toutes les lignes colorées sauf celle de départ.
En fait, les lignes colorées ne doivent être supprimées que si elles n'ont pas de lignes de commande dessous elles.
Suis-je clair ?
 

camarchepas

XLDnaute Barbatruc
Re : macro suppression lignes vides sur plage non fixe

Bon ,

Je pense que ton bon de commande a en effet bien évolué , car visiblement tout ceci n'était pas prévu dans ton code d'origine .

un fichier exemple avec ce que tu veux vraiment obtenir serait un plus ,

pas le temps d'attaquer un probléme aussi lourd en journée, je reprendrais donc cette étude en soirée éclairé par le fichier exemple, cela devrait être beaucoup plus clair.
 

yax44

XLDnaute Nouveau
Re : macro suppression lignes vides sur plage non fixe

OK; voici en pièce jointe un fichier avec les explications sur ce qu'il faudrait.
Merci d'avance.

Sylvain
 

Pièces jointes

  • Capture_excel.jpg
    Capture_excel.jpg
    69.2 KB · Affichages: 20
  • Capture_excel.jpg
    Capture_excel.jpg
    69.2 KB · Affichages: 23
  • Capture_excel.jpg
    Capture_excel.jpg
    69.2 KB · Affichages: 18

camarchepas

XLDnaute Barbatruc
Re : macro suppression lignes vides sur plage non fixe

Bon ,
Avec ce code l'on arrive à l'exemple donné

Code:
Public Sub DelLigne_BC_BB()
  
 Dim i As Long
 Dim Ligne_Max As Long
 Dim Trouve As Range
 Dim Quantité As Long
 Dim Lecture As String
 
 Set Trouve = Range("A:A").Find("Nos prix s'entendent Hors Taxes", Lookat:=xlPart)
 Ligne_Max = Trouve.Row - 1
 Application.ScreenUpdating = False
  For i = Ligne_Max To 26 Step -1
    Lecture = Worksheets("Feuil2").Cells(i, 4)
    If Lecture = "" Then
      Worksheets("Feuil2").Rows(i).Delete
     Else
      If Worksheets("Feuil2").Cells(i, 1) = "Réf." And Quantité = 0 Then
        Worksheets("Feuil2").Rows(i).Delete
        Quantité = 0
       Else
        If Worksheets("Feuil2").Cells(i, 1) = "Réf." Then Quantité = 0
      End If
     If Lecture <> "Qté" Then Quantité = Quantité + CLng("0" & Lecture)
    End If
  Next i
 Application.ScreenUpdating = True
 End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16