Copie de ligne de budget dans sheets

Bonjour à tous,

Petite nouvelle mais je suis beaucoup de sujets sur le forum !

Je ne connais pas les macros mais il semble qu'aujourd'hui j'ai grand besoin d'aide !

J'ai besoin d'automatiser au maximum le budget de mon association.

Je tiens un relevé des opérations du compte bancaire, que je catégorise selon les comptes (en colonne M)

Je voudrais que lorsque par exemple, j'ai le compte 60611 en colonne M, toute ma ligne se copie automatiquement dans un onglet dédié à ce compte, sans espaces entre les lignes. Je cale complètement !

HELP !!

Fichier en PJ et merci de votre aide !

Bonjour,

Le problème de vouloir avoir 12000 onglets c'est que le nombre de formule va être démultiplié et que la taille de votre fichier

va finir par ralentir votre saisie.

Pourquoi ne pas utiliser L'option tableau croisé dynamique sur un seul onglet pour le traitement par imputation ?

Ci-joint exemple ; il suffit de changer le numéro de compte pour que le tableau s'actualise.

Bonsoir MarieJ,

Je propose la solution en P.J.

  • J'ai renommé l'EXCEL en .xlsm pour pouvoir inclure de macro
  • Dans le volet 1, j'ai ajouté un bouton pour le lancement de la ventilation dans les autres onglets
  • J'ai ajouté la macro :
Option Explicit
Sub VentilationPL()
    Const cFirstRow = 6 'Première ligne de recopie
    Const cColCompte = 13 'index de la colonne 'M'
    Const cColDepense = 8 'index de la colonne 'H'
    Const cColRecette = 6 'index de la colonne 'F'
    Dim oSheet As Worksheet, oSheetPrincipal As Worksheet
    Dim oRange As Range
    Dim lLastRow As Long, lLastCol As Long, lrow As Long

    Dim sCompte As String

    Set oSheetPrincipal = ThisWorkbook.Worksheets(1)
    For Each oSheet In ThisWorkbook.Worksheets
        If Left(oSheet.Name, 1) = "6" Or Left(oSheet.Name, 1) = "7" Then
            'On efface les données s'il y en a
            lLastRow = oSheet.UsedRange.Rows.Count
            lLastCol = oSheet.UsedRange.Columns.Count
            Set oRange = oSheet.Range(oSheet.Cells(cFirstRow, 1), oSheet.Cells(lLastRow, lLastCol))
            oRange.EntireRow.Delete

            'On recopie les lignes se référant à l'onglet
            sCompte = oSheet.Name
            lrow = cFirstRow - 1
            For Each oRange In oSheetPrincipal.UsedRange.Rows
                If oRange.Cells(1, cColCompte) = sCompte Then
                    lrow = lrow + 1
                    oRange.Copy oSheet.Cells(lrow, 1)
                    If WorksheetFunction.IsFormula(oRange.Cells(1, cColRecette)) Then
                        oRange.Cells(1, cColRecette).Copy
                        oSheet.Cells(lrow, cColRecette).PasteSpecial xlPasteValues
                    End If
                    If WorksheetFunction.IsFormula(oRange.Cells(1, cColDepense)) Then
                        oRange.Cells(1, cColDepense).Copy
                        oSheet.Cells(lrow, cColDepense).PasteSpecial xlPasteValues
                    End If
                End If
            Next
        End If
    Next

    MsgBox "Ventilation des écritures sur comptes de Charges-Produits terminée!"
End Sub

Bon courage,

Gérard

Bonjour Gerard,

milles mercis, je crois que je vais vraiment faire une formation, c.est tellement utile !!!

plein de belles choses pour cette nouvelle année !

Marie

Rechercher des sujets similaires à "copie ligne budget sheets"