Copie automatique dans livre de comptes
Bonjour,
je suis directeur d'une école, et j'ai, entre autres, la charge de la comptabilité.
La comptabilité est divisée selon 4 comptes (100= fonctionnement, 200= projets, 300=fêtes, 400=bcd). Je joins un fichier exemple.
Actuellement je copie du grand livre vers chacune des feuilles selon l'opération, ce qui génère parfois des erreurs. Je voudrais moderniser le fichier pour que la ventilation se fasse automatiquement en fonction de la colonne dans laquelle est indiqué le type d'opération (100,200,300 ou 400).
J'ai essayé avec les fonctions "recherchev", mais je n'arrive qu'à récupérer 1 ligne....
Pouvez-vous m'aider?
Merci
bonjour
suggestion sans formule difficile : ne conserver qu'une feuille, avec sur la gauche ton grand livre, et sur la droite des colonnes qui reprennent les valeurs des comptes (ventilation)
j'ai fait un essai sur comptes 100 et 200, à finaliser surtout avec le solde de départ et le solde d'arrivée
puis pour visualiser un compte, tu fais un filtre sur le n° de compte
bgrvbfe
Bonsoir,
merci, c'est une bonne idée (simple en plus =o). Encore une question qui en découle : je me sers des feuilles "ventilées" pour justifier des différentes subventions auprès de la Municipalité, sans qu'ils aient accès au reste des comptes qui ne les concerne pas forcément (voire pas du tout...).
Me sera-t-il possible d'imprimer les feuilles compte par compte sans manipulation scabreuse (suppression de lignes etc...)? J'ai l'impression qu'on en reviendrait alors à copier les parties "triées" sur de nouvelles feuilles, d'où l'intérêt de le faire automatiquement...
Bonjour,
Sans formule c'est difficile, alors voici une macro qui transfère les données de "Grand Livre "vers chacun des onglets... Tu sélectionnes les données à transférer dans la colonne B de "Grand Livre" et tu exécutes la macro (ajoute un bouton si tu veux)
Sub MAJ_GrandLivre()
'On doit sélectionner des données dans la colonne 2 de l'onglet Grand Livre
'Les données sont transférées dans les onglets selon le No compte
'La cellules des données transférées est mise en jaune
Dim wsGL As Worksheet
Dim ws100 As Worksheet, ws200 As Worksheet, ws300 As Worksheet, ws400 As Worksheet
Dim LastRow As Integer
Dim rg As Range
'vérifier que la sélection est correcte
If Selection.Columns.Count > 1 Or Selection.Column <> 2 Or Selection.Parent.Name <> "Grand Livre" Then
MsgBox "Mauvaise sélection de données."
Exit Sub
End If
Application.ScreenUpdating = False
Set wsGL = ActiveWorkbook.Sheets("Grand Livre")
Set ws100 = ActiveWorkbook.Sheets("Compte 100")
Set ws200 = ActiveWorkbook.Sheets("Compte 200")
Set ws300 = ActiveWorkbook.Sheets("Compte 300")
Set ws400 = ActiveWorkbook.Sheets("Compte 400")
Set rg = Selection
'pour toutes les cellules sélectionnées en B dans "Grand Livre"...
For Each cell In rg
Select Case cell.Value 'No compte
Case 100
With ws100
LastRow = .Range("B65536").End(xlUp).Row + 1
.Rows(LastRow).Insert 'nouvelle ligne à la fin
Range(.Cells(LastRow, 1), .Cells(LastRow, 6)) = Range(cell.Offset(0, -1), cell.Offset(0, 4)).Value 'copie à la fin
Range(.Cells(LastRow, 7), .Cells(LastRow, 7)).Formula = "=G" & LastRow - 1 & "+F" & LastRow & "+E" & LastRow 'formule
cell.Interior.ColorIndex = 6 'pour indiquer que c'est fait
End With
Case 200
With ws200
LastRow = .Range("B65536").End(xlUp).Row + 1
.Rows(LastRow).Insert
Range(.Cells(LastRow, 1), .Cells(LastRow, 6)) = Range(cell.Offset(0, -1), cell.Offset(0, 4)).Value
Range(.Cells(LastRow, 7), .Cells(LastRow, 7)).Formula = "=G" & LastRow - 1 & "+F" & LastRow & "+E" & LastRow
cell.Interior.ColorIndex = 6 'pour indiquer que c'est fait
End With
Case 300
With ws300
LastRow = .Range("B65536").End(xlUp).Row + 1
.Rows(LastRow).Insert
Range(.Cells(LastRow, 1), .Cells(LastRow, 6)) = Range(cell.Offset(0, -1), cell.Offset(0, 4)).Value
Range(.Cells(LastRow, 7), .Cells(LastRow, 7)).Formula = "=G" & LastRow - 1 & "+F" & LastRow & "+E" & LastRow
cell.Interior.ColorIndex = 6 'pour indiquer que c'est fait
End With
Case 400
With ws400
LastRow = .Range("B65536").End(xlUp).Row + 1
.Rows(LastRow).Insert
Range(.Cells(LastRow, 1), .Cells(LastRow, 6)) = Range(cell.Offset(0, -1), cell.Offset(0, 4)).Value
Range(.Cells(LastRow, 7), .Cells(LastRow, 7)).Formula = "=G" & LastRow - 1 & "+F" & LastRow & "+E" & LastRow
cell.Interior.ColorIndex = 6 'pour indiquer que c'est fait
End With
Case Else
MsgBox "No compte inconnu"
End Select
Next
Application.ScreenUpdating = True
End Sub- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir,
Dans la continuité de jmd,
Amicalement
Claude
édit: Salut Nad
Bonsoir,
ça marche !
C'est un peu de la magie pour moi, mais ça marche...
Merci à tous!
-- 10 Mar 2011, 22:01 --
Je n'ai même plus que l'embarras du choix... =oD
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
