Macro tri automatique
Bonjour à tous.
Je tente de me faire un petit fichier de comptabilité perso (pour apprendre quelques macros qui mes serviront à d'autres fins).
J'ai mis une trame en pièce jointe.
Ce que j'aimerai faire (je pense que les macros sont incontournables):
- dans les onglets "mois", je rentre les opérations sur la dernière ligne vide (avec pour chaque appuie sur la touche "entrée", la cinématique suivante s'opère dans l'exemple :A14, B14, C14, D14, E14, F14). Lorsque je valide la case F14, la ligne de l’opération se classe dans le tableau dessus par rapport à la date. (bien sur en gardant la "mise en page" des lignes (alternance de couleur)
- Les données rentrées dans l'onglet "mensualisation" doivent sur action de ma part (bouton par exemple), s'incrémenter sur le mois que l'on choisit. (je ne sais pas si c'est clair)
J'en demande peut être beaucoup mais je bloque sur sur ces 2 points. Le fichier final est un peu différent mais je saurais adapter les macros à celui-ci.
Je vous remercie de toute l'aide que vous pourrez m'apporter.
David
Salut David,
Premier jet à tester en conditions réelles.
- il y a des MFC à copier via le petit pinceau de feuille en feuille en ciblant la feuille entière (coin supérieur gauche de la feuille) ;
- la macro de tri se déclenche lorsque la cellule [H] est complétée ;
- les bordures suivent + 1 ligne pour l'entrée suivant
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'
If Sh.Name <> "MENSUALISATION" Then
Application.EnableEvents = False
With Sh
If .Range("H" & Target.Row).Value <> "" Then
.Range("A2:H" & .UsedRange.Rows.Count).Sort key1:=.[A3], order1:=xlAscending, Orientation:=xlTopToBottom, Header:=xlYes
.Range("A3").Resize(.UsedRange.Rows.Count, 8).Borders.LineStyle = xlLineStyleNone
For x = 1 To 8
.Range(Chr(64 + x) & "3:" & Chr(64 + x) & .Range("A" & Rows.Count).End(xlUp).Row + 1).BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
Next
End If
End With
Application.EnableEvents = True
End If
'
End SubPour insérer les mensualisations, il faut double-cliquer sur la somme ciblée.
Celle-ci se colore de vert, les données sont transférées dans la feuille ad hoc et celle-ci activée pour que tu complètes la ligne.
- j'ai inversé les deux colonnes 'Mode' et 'Débit/Crédit' pour coller à la disposition des feuilles mensuelles ;
- attention à l'orthographe des Mois qui DOIT correspondre aux noms des feuilles, sinon, bardaf
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
If Not Intersect(Target, Range("E2:P" & Range("A" & Rows.Count).End(xlUp).Row)) Is Nothing And Target.Interior.Color = RGB(255, 255, 255) Then
Cancel = True
Target.Interior.Color = RGB(195, 215, 155)
With Worksheets(CStr(Cells(1, Target.Column)))
iRowT = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & iRowT).Resize(1, 3).Value = Range("A" & Target.Row).Resize(1, 3).Value
.Range(IIf(.Range("D" & Target.Row).Value = "Crédit", "D", "E") & iRowT).Value = Target
.Activate
End With
End If
'
End Sub
A+
Merci beaucoup de cette réponse.
Je regarde cela dès que possible et reviens vers vous.
Excellente journée
David