Remonter des lignes en remplissant des lignes vides

Résolu
Denis57 -  
 Denis 57 -
Bonjour,

Je suis devant un problème que je ne sais comment régler.

Sur une plage BW2:BX11 des lignes vides et pleines alternent. Il me faudrait remonter les lignes pleines dans leur ordre d'apparition, de façon à ce que deux lignes pleines ne soit plus séparées par une ligne vide.

Exemple
avant formule ou code VBA

ligne 2 : cellules BW, BX vides
ligne 3 : BW, BX pleines
lignes 4 à 9 : BW, BX vides
ligne 10 : BW, BX pleines
ligne 11 : BW, BX pleines

après formule ou code VBA

ligne 2 = anciennes BW3, BX3
ligne 3 = anciennes BW10, BX10
ligne 4 = anciennes BW11, BX11
lignes 5 à 11 : BW, BX vides

Trier les données ou supprimer des lignes ne peuvent répondre au problème.

Merci

4 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    C'est peut-être faisable par formule mais un peu complexe.

    Ce serait faisable par tri mais pas "dans leur ordre d'apparition".

    Je te propose cette petite macro qui devrait le faire (mode d'emploi)
    Public Sub remonter()
    Dim lga As Long, lgn As Long, ncl As Integer, tbc
        tbc = Array("BW", "BX")
        For ncl = 0 To UBound(tbc)
            lgn = 2
            For lga = 2 To Cells(Rows.Count, tbc(ncl)).End(xlUp).Row
                If Cells(lgn, tbc(ncl)) = "" And Cells(lga, tbc(ncl)) <> "" Then
                    Cells(lgn, tbc(ncl)) = Cells(lga, tbc(ncl))
                    Cells(lga, tbc(ncl)) = ""
                    lgn = lgn + 1
                End If
            Next lga
        Next ncl
    End Sub
    
    0
    1. Denis57
       
      Bonjour


      Rien ne se passe après avoir cliqué sur le bouton d'exécution de la macro.
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    Sub supprim()
    On error go to nul
    Range(BW2:BX11).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    exit sub
    nul:
    msgbox "aucun vide"
    end sub
    --
     Michel
    0
    1. Denis57
       
      Bonjour

      Suite à des messages d'Excel j ai remplacé "go to" par "GoTo" et mis des guillemets à "BW12:BX11".
      Plus de message d'erreur mais les données dans les cellules ne bougent pas.


      Denis
      0
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour à tous,

    Comme l'on n'a aucune idée de ce que tu as effectivement réalisé, je te mets ton exemple sur 2 feuilles, une avec la macro de Michel ( que je salue) et une avec la mienne.

    https://www.cjoint.com/c/FAxuSUTGlvl

    à toi de nous dire en cliquant sur les boutons si "Rien ne se passe"
    0