Macro VBA - Monter cellules non vides vers première non-vide de la colonne

Bonjour à tous,

Tout d'abord je vous exprime mes meilleurs vœux pour 2020 !

Après avoir extrait des données, j'aimerai créer une boucle vba pour monter le texte des cellules non vides d'une colonne

capture d ecran 2020 01 05 a 15 54 02

vers la première cellule non vide de cette même colonne.

Et de supprimer des colonnes à gauche

capture d ecran 2020 01 05 a 15 55 21

Je vous remercie 1000x par avance pour votre aide !

Bien à vous

Adrien

bonjour,

merci de mettre ton fichier ou un fichier exemple représentatif.

Merci pour ton retour.

J'ai ajouté le fichier en pièce-jointe.

Je te remercie par avance

3test.xlsx (116.56 Ko)

bonjour,

une proposition

Sub aargh()
    Sheets("demande 1").Cells.Copy Sheets("demande 2").Range("A1") 'copie feuille demande 1 en demande 2 pour le test
    With Sheets("demande 2") 'on reformatte la feuille demande 2
        dl = .Cells(Rows.Count, 2).End(xlUp).Row
        dc = .Cells(2, Columns.Count).End(xlToLeft).Column
        For j = 3 To dc
            fl = 0
            For i = 3 To dl
                If .Cells(i, j) = "" And fl = 0 Then fl = i
                If .Cells(i, j) <> "" And fl <> 0 Then
                    ll = i
                    .Cells(fl, j).Resize(ll - fl, 1).Delete shift:=xlUp
                    Exit For
                End If
            Next i
        Next j
        dln = .Cells(Rows.Count, 3).End(xlUp).Row
        .Rows(dln + 1 & ":" & dl).Delete shift:=xlUp
    End With
End Sub

Merci beaucoup pour ton aide. C'est exactement ce dont j'avais besoin !

Est-il possible d'ajouter une ligne de code pour l'effectuer sur toutes les feuilles du classeur ?

Bien à toi et merci encore !

bonsoir,

code adapté,

Sub aargh()
    For Each ws In Worksheets
        With ws
            dl = .Cells(Rows.Count, 2).End(xlUp).Row
            dc = .Cells(2, Columns.Count).End(xlToLeft).Column
            For j = 3 To dc
                fl = 0
                For i = 3 To dl
                    If .Cells(i, j) = "" And fl = 0 Then fl = i
                    If .Cells(i, j) <> "" And fl <> 0 Then
                        ll = i
                        .Cells(fl, j).Resize(ll - fl, 1).Delete shift:=xlUp
                        Exit For
                    End If
                Next i
            Next j
            dln = .Cells(Rows.Count, 3).End(xlUp).Row
            If dl > dln Then .Rows(dln + 1 & ":" & dl).Delete shift:=xlUp
        End With
    Next ws
End Sub

Merci beaucoup pour ton aide !!

Je te souhaite une bonne continuation dans tes différents projets.

Adrien

Rechercher des sujets similaires à "macro vba monter vides premiere vide colonne"