Récap automatique - exclusion cellule vide

Bonsoir à tous,

J'ai un petit souci sur un de mes exports excel. En fait il s'agit d'un grand livre en format excel, ce qui fait que toutes les données sont dans la cellule commençant par A (A1, A2 etc...). J'extrais juste le solde des comptes et le numéro du compte avec des formules stxt (je ne sais pas s'il y a une meilleure solution, en tout cas celle ci me va). (voir exemple).

Du coup, j'ai mon solde et mon numéro de compte en face. Mais entre deux soldes, il y a, en vertical, plusieurs cellules vides (qui contiennent en réalité "")

Ce que j'aimerai faire, c'est regrouper mes cellules chiffrées, les unes sous les autres, en excluant les cellules vides, pour que je puisse avoir une sorte de récap de manière automatique. Faire comprendre à Excel de passer directement à une cellule chiffrée après une autre cellule chiffrée, en excluant les cellules vides.

J'espère que vous me comprenez. Je vous joins mon export, que j'ai extrêmement simplifié (il y a plus de 3000 cellules dans mon doc de travail, mais seulement une 50 aine de solde de compte qui m'intéresse de regrouper), pour que vous puissiez voir.

Merci d'avance pour votre analyse et votre aide.

Bien cordialement,

bonsoir,

une macro pour faire le squizze

Sub skz()
i = 1
j = 5
While Worksheets("grand livre").Cells(i, 9) <> ""
 If Worksheets("grand livre").Cells(i, 9) = "Solde" Then
  j = j + 1 
  Worksheets("récap").Cells(j, 2) = Worksheets("grand livre").Cells(i, 10)
  Worksheets("récap").Cells(j, 1) = Worksheets("grand livre").Cells(i, 12)
  i = i + 3
 End If
 i = i + 1
Wend

End Sub

Bonjour,

Ma petite contribution. CTRL+Q pour lancer la procédure.

Cdlt

Option Explicit
Public Sub Récapitulatif()
Dim wS1 As Worksheet, wS2 As Worksheet
Dim derLigne As Integer
Dim i As Integer, j As Integer

    Application.ScreenUpdating = False

    Set wS1 = Worksheets("grand livre")
    Set wS2 = Worksheets("Récap")

    With wS2
        derLigne = .Range("A" & Rows.Count).End(xlUp).Row
            If derLigne > 1 Then Range(.Cells(2, "A"), .Cells(derLigne, "B")).Delete
    End With

    With wS1
        derLigne = .Range("L" & Rows.Count).End(xlUp).Row
        j = 2
        For i = 1 To derLigne
            If .Cells(i, "L") <> "" Then
                wS2.Cells(j, "A") = .Cells(i, "L")
                wS2.Cells(j, "B") = .Cells(i, "L").Offset(0, -2) * 1
                j = j + 1
            End If
        Next
    End With

    Set wS1 = Nothing: Set wS2 = Nothing

End Sub

Merci beaucoup pour cette automatisation, c'est génial.

J'ai une autre demande, comment puis je faire dis à Excel, que quand j'ai mon compte 60100000, qu'il me mette le libellé du compte exact, tiré directement du grand livre, de manière automatique, sans qu'il se trompe, dans l'onglet récap.

Ci-joint le fichier témoin.

Merci d'avance.

Re,

Ci-joint fichier modifié avec la création d'une feuille "Data" qui devra recenser tous les libellés et leurs numéros de compte.

Cdlt

Option Explicit
Public Sub Récapitulatif()
Dim wS1 As Worksheet, wS2 As Worksheet, wS3 As Worksheet
Dim derLigne As Integer
Dim i As Integer, j As Integer
Dim c As Range

    Application.ScreenUpdating = False

    Set wS1 = Worksheets("grand livre")
    Set wS2 = Worksheets("Récap")
    Set wS3 = Worksheets("Data")

    With wS2
        derLigne = .Range("A" & Rows.Count).End(xlUp).Row
            If derLigne > 1 Then Range(.Cells(2, "A"), .Cells(derLigne, "B")).Delete
    End With

    With wS1
        derLigne = .Range("L" & Rows.Count).End(xlUp).Row
        j = 2
        For i = 1 To derLigne
            If .Cells(i, "L") <> "" Then
                wS2.Cells(j, "B") = .Cells(i, "L")
                wS2.Cells(j, "C") = .Cells(i, "L").Offset(0, -2) * 1

                On Error Resume Next
                    With wS3.Range("A:A")
                        Set c = .Find(wS2.Cells(j, "B"), LookIn:=xlValues)
                        If Not c Is Nothing Then wS2.Cells(j, "A") = c.Offset(0, 1)
                    End With
                On Error GoTo 0
                j = j + 1
            End If
        Next
    End With

Bonjour,

macro adaptée pour prendre en compte le libellé. qui fait l'hypothèse que le libellé se trouve dans une ligne commençant par "Nature" en colonne A.

Sub skz()
i = 1
j = 1
While Worksheets("grand livre").Cells(i, 9) <> ""
 If Left(Worksheets("grand livre").Cells(i, 1), 6) = "Nature" Then
  lib = Worksheets("grand livre").Cells(i, 1)
  lib = Right(lib, Len(lib) - 18)
 ElseIf Worksheets("grand livre").Cells(i, 9) = "Solde" Then
  j = j + 1
  Worksheets("récap").Cells(j, 1) = lib
  Worksheets("récap").Cells(j, 3) = Worksheets("grand livre").Cells(i, 10)
  Worksheets("récap").Cells(j, 2) = Worksheets("grand livre").Cells(i, 12)
  lib = "libellé pas trouvé"
  i = i + 3
 End If
 i = i + 1
Wend

End Sub
Rechercher des sujets similaires à "recap automatique exclusion vide"