Selection entire row delete

Gourmands amis bonjour (vous comprendrez par la suite le côté gourmand),

J'expose les faits et par conséquent le problème :

Je dois importer dans un logiciel de gestion commerciale un bon de commande à partir d'un fichier Excel.

Dans le fichier joint, l'onglet Cde contient le bon de commande qu'un client envoie.

Le second onglet contient le catalogue des produits qu'il possède.

L'onglet Base contient le tarif actualisé des produits.

L'onglet Export contient les informations que je dois exporter.

Je tente par la maquereau Recupetsuppressionvides de récupérer dans l'onglet Export uniquement les lignes de commande avec une quantité.

Le hic c'est que je ne connais pas le nombre de lignes que comportera la commande du client c'est pour cela que je sélectionne toutes les lignes de A5 à C25.

Je fais ensuite un tri sur la colonne C puis je fais F5 (atteindre), Cellules, Cellules vides, je refais un clic droit dans une des colonnes sélectionnées pour Supprimer Ligne entière et.... Pan ! message d'erreur : Erreur d'exécution 1004 Impossible d'utiliser cette commande sur des sélections qui se superposent.

Le débogage m'indique que c'est la ligne Selection.EntireRow.Delete qui chafouine mon Excel adoré.

Ne parlant pas la langue, une âme charitable pourrait-elle comment procéder ?

A noter que je vais par le futur récupérer des fichiers de commande pas du tout, mais alors pas du tout harmonisés et semblables à l'exemple et que le nombre de lignes ou d'emplacement des colonnes seront différents et aléatoires en fonction des humeurs des clients.

Le bon de commande peut comporter 50 lignes ou 100 lignes qui ne comporteront pas forcément toutes une quantité.

Merci d'avance et bonne journée ensoleillée à ceux qui aperçoivent encore cette grosse boule jaune dans le ciel.

On aura compris au passage que je suis assez débutant dans l'art de la pêche au macros...

Bonjour

A tester

Option Explicit

Sub Recupetsuppressionvides()
Dim NbLg As Long

  With Sheets("Cde")
    NbLg = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A5:C" & NbLg).Copy Sheets("Export").Range("A4")
  End With

  ActiveWorkbook.Worksheets("Export").Sort.SortFields.Clear
  ActiveWorkbook.Worksheets("Export").Sort.SortFields.Add Key:=Range("C4:C" & NbLg) _
      , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  With ActiveWorkbook.Worksheets("Export").Sort
    .SetRange Range("A4:C" & NbLg)
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
  On Error Resume Next  ' Au cas ou pas de cellules vides
  Range("C4:C" & NbLg).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  On Error GoTo 0       ' Pas obligatoire
  Range("A4").Select
End Sub

Merci Banzai pour cette réponse qui fonctionne pour l'exemple que j'ai donné mais j'ai reçu tout à l'heure un nouvel exemple que j'ai mis dans l'onglet Feuil1 et pour lequel la macro ne fonctionne que partiellement.

Si tu as l'occasion de jeter un coup d'oeil, ce serait formidable.

J'ai cherché à modifier mais pffuit...

Merci d'avance.

Bonjour

Tu changes les données et une macro n'est pas une formule, pour qu'elle s'adapte c'est plus compliqué

Essayes

Option Explicit

Sub Recupetsuppressionvides()
Dim NbLg As Long

  Sheets("Export").Cells.ClearContents

  With Sheets("Feuil1")
    NbLg = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A1:B" & NbLg).Copy Sheets("Export").Range("A1")
  End With

  With Sheets("Export")
    With .Sort
      .SortFields.Clear
      .SortFields.Add Key:=Sheets("Export").Range("B1:B" & NbLg) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      .SetRange Sheets("Export").Range("A1:B" & NbLg)
      .Header = xlGuess
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
    End With

    On Error Resume Next  ' Au cas ou pas de cellules vides
    .Range("B1:B" & NbLg).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    On Error GoTo 0       ' Pas obligatoire
    Range("A1").Select
  End With
End Sub

Bonjour Banzai,

Merci pour la tentative mais cela ne fonctionne pas.

Toute la problématique vient du fait que je vais recevoir des fichiers différents qui ne seront jamais identiques selon les clients.

C'est évident que dans ces cas là pour automatiser, ça se complique.

Il me reste toujours la solution de le faire à la mano mais c'est un risque supplémentaire d'erreur.

Merci en tout cas pour t'être penché sur mon problème.

Rechercher des sujets similaires à "selection entire row delete"