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 SubBonjour,
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