[Calc] affichage des graphiques dans AE Facturier

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
zwave
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 10 janv. 2016 00:28

[Calc] affichage des graphiques dans AE Facturier

Message par zwave »


La modération vous a écrit: L terme Problème a été supprimé du titre car il n'apporte rien à la compréhension

Bonjour,
Le problème concerné est expliqué dans ce fil : https://forum.openoffice.org/fr/forum/v ... 38#p318538
Visiblement, suite aux mises à jour d'Open Office les macros n'ont pas suivies, il semble qu'elles n'adressent plus les données CA par client et CA par produit vers la feuille "filtres" ce qui provoque la disparition de deux des 4 graphiques disponibles d'ordinaire.
Ci dessous les deux pages il me semble, concernées, j'espère ne pas avoir fait d'erreur dans la manière de poster :

Pour le CA par client :

'(C) 2009 Jérôme Bourgeois - contact@xlinfo.fr '

Code : Tout sélectionner

REM  *****  BASIC  *****
option explicit

Sub ChiffreAffaireMensuel
dim Saisie as object, Factures as object, Declaration as Object
dim i as integer

Saisie = thisComponent.Sheets.getByName("Saisie")
Factures = thisComponent.Sheets.getByName("Factures")
Declaration = thisComponent.Sheets.getByName("Déclarations")

ThisComponent.LockControllers

'on commmence par tout effacer
for i = 15 to 26
Saisie.getcellrangebyname("Q" & i).value = 0
next i
Saisie.getcellrangebyname("Q35").value = 0

Declaration.getcellrangebyname("C3:F5").clearContents(com.sun.star.sheet.CellFlags.VALUE)
Declaration.getcellrangebyname("C7:F9").clearContents(com.sun.star.sheet.CellFlags.VALUE)
Declaration.getcellrangebyname("C11:F13").clearContents(com.sun.star.sheet.CellFlags.VALUE)
Declaration.getcellrangebyname("C15:F17").clearContents(com.sun.star.sheet.CellFlags.VALUE)

'et on incrémente les règlements
i=2
Do
select case Month(Factures.getcellrangebyname("M" & i).value)
	case 1
	Saisie.getcellrangebyname("Q15").value = Saisie.getcellrangebyname("Q15").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C3").value = Declaration.getcellrangebyname("C3").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D3").value = Declaration.getcellrangebyname("D3").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E3").value = Declaration.getcellrangebyname("E3").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F3").value = Declaration.getcellrangebyname("F3").value + Factures.getcellrangebyname("R" & i).value
	case 2
	Saisie.getcellrangebyname("Q16").value = Saisie.getcellrangebyname("Q16").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C4").value = Declaration.getcellrangebyname("C4").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D4").value = Declaration.getcellrangebyname("D4").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E4").value = Declaration.getcellrangebyname("E4").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F4").value = Declaration.getcellrangebyname("F4").value + Factures.getcellrangebyname("R" & i).value
	case 3
	Saisie.getcellrangebyname("Q17").value = Saisie.getcellrangebyname("Q17").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C5").value = Declaration.getcellrangebyname("C5").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D5").value = Declaration.getcellrangebyname("D5").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E5").value = Declaration.getcellrangebyname("E5").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F5").value = Declaration.getcellrangebyname("F5").value + Factures.getcellrangebyname("R" & i).value
	case 4
	Saisie.getcellrangebyname("Q18").value = Saisie.getcellrangebyname("Q18").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C7").value = Declaration.getcellrangebyname("C7").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D7").value = Declaration.getcellrangebyname("D7").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E7").value = Declaration.getcellrangebyname("E7").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F7").value = Declaration.getcellrangebyname("F7").value + Factures.getcellrangebyname("R" & i).value
	case 5
	Saisie.getcellrangebyname("Q19").value = Saisie.getcellrangebyname("Q19").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C8").value = Declaration.getcellrangebyname("C8").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D8").value = Declaration.getcellrangebyname("D8").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E8").value = Declaration.getcellrangebyname("E8").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F8").value = Declaration.getcellrangebyname("F8").value + Factures.getcellrangebyname("R" & i).value
	case 6
	Saisie.getcellrangebyname("Q20").value = Saisie.getcellrangebyname("Q20").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C9").value = Declaration.getcellrangebyname("C9").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D9").value = Declaration.getcellrangebyname("D9").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E9").value = Declaration.getcellrangebyname("E9").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F9").value = Declaration.getcellrangebyname("F9").value + Factures.getcellrangebyname("R" & i).value
	case 7
	Saisie.getcellrangebyname("Q21").value = Saisie.getcellrangebyname("Q21").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C11").value = Declaration.getcellrangebyname("C11").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D11").value = Declaration.getcellrangebyname("D11").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E11").value = Declaration.getcellrangebyname("E11").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F11").value = Declaration.getcellrangebyname("F11").value + Factures.getcellrangebyname("R" & i).value
	case 8
	Saisie.getcellrangebyname("Q22").value = Saisie.getcellrangebyname("Q22").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C12").value = Declaration.getcellrangebyname("C12").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D12").value = Declaration.getcellrangebyname("D12").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E12").value = Declaration.getcellrangebyname("E12").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F12").value = Declaration.getcellrangebyname("F12").value + Factures.getcellrangebyname("R" & i).value
	case 9
	Saisie.getcellrangebyname("Q23").value = Saisie.getcellrangebyname("Q23").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C13").value = Declaration.getcellrangebyname("C13").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D13").value = Declaration.getcellrangebyname("D13").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E13").value = Declaration.getcellrangebyname("E13").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F13").value = Declaration.getcellrangebyname("F13").value + Factures.getcellrangebyname("R" & i).value
	case 10
	Saisie.getcellrangebyname("Q24").value = Saisie.getcellrangebyname("Q24").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C15").value = Declaration.getcellrangebyname("C15").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D15").value = Declaration.getcellrangebyname("D15").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E15").value = Declaration.getcellrangebyname("E15").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F15").value = Declaration.getcellrangebyname("F15").value + Factures.getcellrangebyname("R" & i).value
	case 11
	Saisie.getcellrangebyname("Q25").value = Saisie.getcellrangebyname("Q25").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C16").value = Declaration.getcellrangebyname("C16").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D16").value = Declaration.getcellrangebyname("D16").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E16").value = Declaration.getcellrangebyname("E16").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F16").value = Declaration.getcellrangebyname("F16").value + Factures.getcellrangebyname("R" & i).value
	case 12
	if Factures.getcellrangebyname("M" & i).value <> 0 then 'par defaut une valeur nulle donne comme mois 12
		Saisie.getcellrangebyname("Q26").value = Saisie.getcellrangebyname("Q26").value + Factures.getcellrangebyname("D" & i).value
		Declaration.getcellrangebyname("C17").value = Declaration.getcellrangebyname("C17").value + Factures.getcellrangebyname("O" & i).value
		Declaration.getcellrangebyname("D17").value = Declaration.getcellrangebyname("D17").value + Factures.getcellrangebyname("P" & i).value
		Declaration.getcellrangebyname("E17").value = Declaration.getcellrangebyname("E17").value + Factures.getcellrangebyname("Q" & i).value
		Declaration.getcellrangebyname("F17").value = Declaration.getcellrangebyname("F17").value + Factures.getcellrangebyname("R" & i).value
	else
		if Factures.getcellrangebyname("M" & i).string <> "Annulée" then
		Saisie.getcellrangebyname("Q35").value = Saisie.getcellrangebyname("Q35").value + Factures.getcellrangebyname("D" & i).value
		end if
	end if
end select
i = i + 1
loop until Factures.getcellrangebyname("A" & i).string = ""

ThisComponent.UnLockControllers

End Sub

Sub ChiffreAffaireClient
'on Error resume next

dim Clients as object, Factures as object, Rapports as Object, Filtres as Object
dim coordonnees(0 To 1) as New com.sun.star.table.CellRangeAddress
Dim Recherche as object, Trouve as object
dim nbclients as integer,n as integer, i as integer, j as integer

Clients = thisComponent.Sheets.getByName("Clients")
Factures = thisComponent.Sheets.getByName("Factures")
Rapports = thisComponent.Sheets.getByName("Rapports")
Filtres = thisComponent.Sheets.getByName("Filtres")

ThisComponent.LockControllers

nbclients= CompterLignes("Clients")
for n = 1 to nbclients -1
	Clients.getcellrangebyname("J" & n +1).value = 0
next n

for n = 1 to nbclients -1
Recherche = Factures.createSearchDescriptor()
With Recherche
  .SearchString = Clients.getcellrangebyname("A" & n + 1).string
  .SearchWords = True
End With
Trouve = Factures.findFirst(Recherche)
do while not(isnull(Trouve))
i = Trouve.cellAddress.row
if Factures.getcellrangebyname("M" & i + 1).value <> 0 then
Clients.getcellrangebyname("J" & n + 1).value = Clients.getcellrangebyname("J" & n + 1).value + Factures.getcellrangebyname("D" & i + 1).value
end if
Trouve = Factures.findNext(Trouve, Recherche)
loop
next n

ThisComponent.UnLockControllers
Deproteger("Clients")
ThisComponent.DatabaseRanges.getByName("plageClients").refresh()



'on met à jour les graphiques de la page rapports

Do
j = j + 1
loop until Filtres.getcellrangebyname("B" & j).string = ""
Deproteger("Filtres")
if j > 2 then
coordonnees(0).sheet = 11
coordonnees(0).startColumn = 1
coordonnees(0).startRow= 0
coordonnees(0).endColumn = 1
coordonnees(0).endRow= j - 2
coordonnees(1).sheet = 11
coordonnees(1).startColumn = 10
coordonnees(1).startRow= 0
coordonnees(1).endColumn = 10
coordonnees(1).endRow= j - 2
Rapports.charts(3).setranges(coordonnees)
Rapports.charts(3).HasColumnHeaders = true
Rapports.charts(3).HasRowHeaders = true

Rapports.charts(3).embeddedObject.Title.string = "C.A. par client"
Rapports.charts(3).embeddedObject.Legend.Alignment = com.sun.star.chart.ChartLegendPosition.LEFT

end if

verrouillerPlage("Filtres","B1:K"&j)
Proteger("CLients")
Proteger("Filtres")
End Sub


Sub ChiffreAffaireArticle
'on Error resume next

dim Produits as object, Prestations as object, Rapports as object, Filtres as Object
dim coordonnees(0 To 1) as New com.sun.star.table.CellRangeAddress
Dim Recherche as object, Trouve as object
dim nbproduits as integer,n as integer, i as integer, j as integer

Produits = thisComponent.Sheets.getByName("Produits")
Prestations = thisComponent.Sheets.getByName("Prestations")
Rapports = thisComponent.Sheets.getByName("Rapports")
Filtres = thisComponent.Sheets.getByName("Filtres")

ThisComponent.LockControllers

nbproduits= CompterLignes("Produits")
for n = 1 to nbproduits -1
	Produits.getcellrangebyname("F" & n +1).value = 0
	Produits.getcellrangebyname("G" & n +1).value = 0
next n

for n = 1 to nbproduits -1
Recherche = Prestations.createSearchDescriptor()
With Recherche
  .SearchString = Produits.getcellrangebyname("A" & n + 1).string
  .SearchWords = True
End With
Trouve = Prestations.findFirst(Recherche)
do while not(isnull(Trouve))
i = Trouve.cellAddress.row
if Prestations.getcellrangebyname("E" & i + 1).string = "oui" then
Produits.getcellrangebyname("F" & n + 1).value = Produits.getcellrangebyname("F" & n + 1).value + Prestations.getcellrangebyname("C" & i + 1).value
end if
Trouve = Prestations.findNext(Trouve, Recherche)
loop
Produits.getcellrangebyname("G" & n + 1).value = Produits.getcellrangebyname("D" & n + 1).value * Produits.getcellrangebyname("F" & n + 1).value
next n

ThisComponent.UnLockControllers
Deproteger("Produits")
ThisComponent.DatabaseRanges.getByName("plageProduits").refresh()


'on met à jour les graphiques de la page rapports

Do
j = j + 1
loop until Filtres.getcellrangebyname("M" & j).string = ""
Deproteger("Filtres")
if j > 2 Then
coordonnees(0).sheet = 11
coordonnees(0).startColumn = 12
coordonnees(0).startRow= 0
coordonnees(0).endColumn = 12
coordonnees(0).endRow= j - 2
coordonnees(1).sheet =11
coordonnees(1).startColumn = 17
coordonnees(1).startRow= 0
coordonnees(1).endColumn = 18
coordonnees(1).endRow= j - 2
Rapports.charts(2).setranges(coordonnees)
Rapports.charts(2).HasColumnHeaders = true
Rapports.charts(2).HasRowHeaders = true

Rapports.charts(2).embeddedObject.Title.string = "C.A. par produit"
Rapports.charts(2).embeddedObject.Diagram.HasSecondaryYAxis = true
Rapports.charts(2).embeddedObject.Diagram.GroupBarsPerAxis = false
Rapports.charts(2).embeddedObject.firstDiagram.CoordinateSystems(0).ChartTypes(0).Dataseries(0).AttachedAxisIndex=0
Rapports.charts(2).embeddedObject.firstDiagram.CoordinateSystems(0).ChartTypes(0).Dataseries(1).AttachedAxisIndex=1
Rapports.charts(2).embeddedObject.Legend.Alignment = com.sun.star.chart.ChartLegendPosition.RIGHT

Filtres.getCellRangeByName("filtreProduits").cellBackColor=RGB(255,255,255)
end if

verrouillerPlage("Filtres","M1:S"&j)
Proteger("Produits")
Proteger("Filtres")
End Sub



Sub recap
incrementerPlage("plageProduits","Produits")
incrementerPlage("plageClients","Clients")
ChiffreAffaireMensuel
ChiffreAffaireClient
ChiffreAffaireArticle
End sub


et pour le CA par produit :



'(C) 2009 Jérôme Bourgeois - contact@xlinfo.fr '

Code : Tout sélectionner

REM  *****  BASIC  *****
option explicit

Sub ChiffreAffaireMensuel
dim Saisie as object, Factures as object, Declaration as Object
dim i as integer

Saisie = thisComponent.Sheets.getByName("Saisie")
Factures = thisComponent.Sheets.getByName("Factures")
Declaration = thisComponent.Sheets.getByName("Déclarations")

ThisComponent.LockControllers

'on commmence par tout effacer
for i = 15 to 26
Saisie.getcellrangebyname("Q" & i).value = 0
next i
Saisie.getcellrangebyname("Q35").value = 0

Declaration.getcellrangebyname("C3:F5").clearContents(com.sun.star.sheet.CellFlags.VALUE)
Declaration.getcellrangebyname("C7:F9").clearContents(com.sun.star.sheet.CellFlags.VALUE)
Declaration.getcellrangebyname("C11:F13").clearContents(com.sun.star.sheet.CellFlags.VALUE)
Declaration.getcellrangebyname("C15:F17").clearContents(com.sun.star.sheet.CellFlags.VALUE)

'et on incrémente les règlements
i=2
Do
select case Month(Factures.getcellrangebyname("M" & i).value)
	case 1
	Saisie.getcellrangebyname("Q15").value = Saisie.getcellrangebyname("Q15").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C3").value = Declaration.getcellrangebyname("C3").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D3").value = Declaration.getcellrangebyname("D3").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E3").value = Declaration.getcellrangebyname("E3").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F3").value = Declaration.getcellrangebyname("F3").value + Factures.getcellrangebyname("R" & i).value
	case 2
	Saisie.getcellrangebyname("Q16").value = Saisie.getcellrangebyname("Q16").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C4").value = Declaration.getcellrangebyname("C4").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D4").value = Declaration.getcellrangebyname("D4").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E4").value = Declaration.getcellrangebyname("E4").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F4").value = Declaration.getcellrangebyname("F4").value + Factures.getcellrangebyname("R" & i).value
	case 3
	Saisie.getcellrangebyname("Q17").value = Saisie.getcellrangebyname("Q17").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C5").value = Declaration.getcellrangebyname("C5").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D5").value = Declaration.getcellrangebyname("D5").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E5").value = Declaration.getcellrangebyname("E5").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F5").value = Declaration.getcellrangebyname("F5").value + Factures.getcellrangebyname("R" & i).value
	case 4
	Saisie.getcellrangebyname("Q18").value = Saisie.getcellrangebyname("Q18").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C7").value = Declaration.getcellrangebyname("C7").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D7").value = Declaration.getcellrangebyname("D7").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E7").value = Declaration.getcellrangebyname("E7").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F7").value = Declaration.getcellrangebyname("F7").value + Factures.getcellrangebyname("R" & i).value
	case 5
	Saisie.getcellrangebyname("Q19").value = Saisie.getcellrangebyname("Q19").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C8").value = Declaration.getcellrangebyname("C8").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D8").value = Declaration.getcellrangebyname("D8").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E8").value = Declaration.getcellrangebyname("E8").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F8").value = Declaration.getcellrangebyname("F8").value + Factures.getcellrangebyname("R" & i).value
	case 6
	Saisie.getcellrangebyname("Q20").value = Saisie.getcellrangebyname("Q20").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C9").value = Declaration.getcellrangebyname("C9").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D9").value = Declaration.getcellrangebyname("D9").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E9").value = Declaration.getcellrangebyname("E9").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F9").value = Declaration.getcellrangebyname("F9").value + Factures.getcellrangebyname("R" & i).value
	case 7
	Saisie.getcellrangebyname("Q21").value = Saisie.getcellrangebyname("Q21").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C11").value = Declaration.getcellrangebyname("C11").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D11").value = Declaration.getcellrangebyname("D11").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E11").value = Declaration.getcellrangebyname("E11").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F11").value = Declaration.getcellrangebyname("F11").value + Factures.getcellrangebyname("R" & i).value
	case 8
	Saisie.getcellrangebyname("Q22").value = Saisie.getcellrangebyname("Q22").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C12").value = Declaration.getcellrangebyname("C12").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D12").value = Declaration.getcellrangebyname("D12").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E12").value = Declaration.getcellrangebyname("E12").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F12").value = Declaration.getcellrangebyname("F12").value + Factures.getcellrangebyname("R" & i).value
	case 9
	Saisie.getcellrangebyname("Q23").value = Saisie.getcellrangebyname("Q23").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C13").value = Declaration.getcellrangebyname("C13").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D13").value = Declaration.getcellrangebyname("D13").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E13").value = Declaration.getcellrangebyname("E13").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F13").value = Declaration.getcellrangebyname("F13").value + Factures.getcellrangebyname("R" & i).value
	case 10
	Saisie.getcellrangebyname("Q24").value = Saisie.getcellrangebyname("Q24").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C15").value = Declaration.getcellrangebyname("C15").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D15").value = Declaration.getcellrangebyname("D15").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E15").value = Declaration.getcellrangebyname("E15").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F15").value = Declaration.getcellrangebyname("F15").value + Factures.getcellrangebyname("R" & i).value
	case 11
	Saisie.getcellrangebyname("Q25").value = Saisie.getcellrangebyname("Q25").value + Factures.getcellrangebyname("D" & i).value
	Declaration.getcellrangebyname("C16").value = Declaration.getcellrangebyname("C16").value + Factures.getcellrangebyname("O" & i).value
	Declaration.getcellrangebyname("D16").value = Declaration.getcellrangebyname("D16").value + Factures.getcellrangebyname("P" & i).value
	Declaration.getcellrangebyname("E16").value = Declaration.getcellrangebyname("E16").value + Factures.getcellrangebyname("Q" & i).value
	Declaration.getcellrangebyname("F16").value = Declaration.getcellrangebyname("F16").value + Factures.getcellrangebyname("R" & i).value
	case 12
	if Factures.getcellrangebyname("M" & i).value <> 0 then 'par defaut une valeur nulle donne comme mois 12
		Saisie.getcellrangebyname("Q26").value = Saisie.getcellrangebyname("Q26").value + Factures.getcellrangebyname("D" & i).value
		Declaration.getcellrangebyname("C17").value = Declaration.getcellrangebyname("C17").value + Factures.getcellrangebyname("O" & i).value
		Declaration.getcellrangebyname("D17").value = Declaration.getcellrangebyname("D17").value + Factures.getcellrangebyname("P" & i).value
		Declaration.getcellrangebyname("E17").value = Declaration.getcellrangebyname("E17").value + Factures.getcellrangebyname("Q" & i).value
		Declaration.getcellrangebyname("F17").value = Declaration.getcellrangebyname("F17").value + Factures.getcellrangebyname("R" & i).value
	else
		if Factures.getcellrangebyname("M" & i).string <> "Annulée" then
		Saisie.getcellrangebyname("Q35").value = Saisie.getcellrangebyname("Q35").value + Factures.getcellrangebyname("D" & i).value
		end if
	end if
end select
i = i + 1
loop until Factures.getcellrangebyname("A" & i).string = ""

ThisComponent.UnLockControllers

End Sub

Sub ChiffreAffaireClient
'on Error resume next

dim Clients as object, Factures as object, Rapports as Object, Filtres as Object
dim coordonnees(0 To 1) as New com.sun.star.table.CellRangeAddress
Dim Recherche as object, Trouve as object
dim nbclients as integer,n as integer, i as integer, j as integer

Clients = thisComponent.Sheets.getByName("Clients")
Factures = thisComponent.Sheets.getByName("Factures")
Rapports = thisComponent.Sheets.getByName("Rapports")
Filtres = thisComponent.Sheets.getByName("Filtres")

ThisComponent.LockControllers

nbclients= CompterLignes("Clients")
for n = 1 to nbclients -1
	Clients.getcellrangebyname("J" & n +1).value = 0
next n

for n = 1 to nbclients -1
Recherche = Factures.createSearchDescriptor()
With Recherche
  .SearchString = Clients.getcellrangebyname("A" & n + 1).string
  .SearchWords = True
End With
Trouve = Factures.findFirst(Recherche)
do while not(isnull(Trouve))
i = Trouve.cellAddress.row
if Factures.getcellrangebyname("M" & i + 1).value <> 0 then
Clients.getcellrangebyname("J" & n + 1).value = Clients.getcellrangebyname("J" & n + 1).value + Factures.getcellrangebyname("D" & i + 1).value
end if
Trouve = Factures.findNext(Trouve, Recherche)
loop
next n

ThisComponent.UnLockControllers
Deproteger("Clients")
ThisComponent.DatabaseRanges.getByName("plageClients").refresh()



'on met à jour les graphiques de la page rapports

Do
j = j + 1
loop until Filtres.getcellrangebyname("B" & j).string = ""
Deproteger("Filtres")
if j > 2 then
coordonnees(0).sheet = 11
coordonnees(0).startColumn = 1
coordonnees(0).startRow= 0
coordonnees(0).endColumn = 1
coordonnees(0).endRow= j - 2
coordonnees(1).sheet = 11
coordonnees(1).startColumn = 10
coordonnees(1).startRow= 0
coordonnees(1).endColumn = 10
coordonnees(1).endRow= j - 2
Rapports.charts(3).setranges(coordonnees)
Rapports.charts(3).HasColumnHeaders = true
Rapports.charts(3).HasRowHeaders = true

Rapports.charts(3).embeddedObject.Title.string = "C.A. par client"
Rapports.charts(3).embeddedObject.Legend.Alignment = com.sun.star.chart.ChartLegendPosition.LEFT

end if

verrouillerPlage("Filtres","B1:K"&j)
Proteger("CLients")
Proteger("Filtres")
End Sub


Sub ChiffreAffaireArticle
'on Error resume next

dim Produits as object, Prestations as object, Rapports as object, Filtres as Object
dim coordonnees(0 To 1) as New com.sun.star.table.CellRangeAddress
Dim Recherche as object, Trouve as object
dim nbproduits as integer,n as integer, i as integer, j as integer

Produits = thisComponent.Sheets.getByName("Produits")
Prestations = thisComponent.Sheets.getByName("Prestations")
Rapports = thisComponent.Sheets.getByName("Rapports")
Filtres = thisComponent.Sheets.getByName("Filtres")

ThisComponent.LockControllers

nbproduits= CompterLignes("Produits")
for n = 1 to nbproduits -1
	Produits.getcellrangebyname("F" & n +1).value = 0
	Produits.getcellrangebyname("G" & n +1).value = 0
next n

for n = 1 to nbproduits -1
Recherche = Prestations.createSearchDescriptor()
With Recherche
  .SearchString = Produits.getcellrangebyname("A" & n + 1).string
  .SearchWords = True
End With
Trouve = Prestations.findFirst(Recherche)
do while not(isnull(Trouve))
i = Trouve.cellAddress.row
if Prestations.getcellrangebyname("E" & i + 1).string = "oui" then
Produits.getcellrangebyname("F" & n + 1).value = Produits.getcellrangebyname("F" & n + 1).value + Prestations.getcellrangebyname("C" & i + 1).value
end if
Trouve = Prestations.findNext(Trouve, Recherche)
loop
Produits.getcellrangebyname("G" & n + 1).value = Produits.getcellrangebyname("D" & n + 1).value * Produits.getcellrangebyname("F" & n + 1).value
next n

ThisComponent.UnLockControllers
Deproteger("Produits")
ThisComponent.DatabaseRanges.getByName("plageProduits").refresh()


'on met à jour les graphiques de la page rapports

Do
j = j + 1
loop until Filtres.getcellrangebyname("M" & j).string = ""
Deproteger("Filtres")
if j > 2 Then
coordonnees(0).sheet = 11
coordonnees(0).startColumn = 12
coordonnees(0).startRow= 0
coordonnees(0).endColumn = 12
coordonnees(0).endRow= j - 2
coordonnees(1).sheet =11
coordonnees(1).startColumn = 17
coordonnees(1).startRow= 0
coordonnees(1).endColumn = 18
coordonnees(1).endRow= j - 2
Rapports.charts(2).setranges(coordonnees)
Rapports.charts(2).HasColumnHeaders = true
Rapports.charts(2).HasRowHeaders = true

Rapports.charts(2).embeddedObject.Title.string = "C.A. par produit"
Rapports.charts(2).embeddedObject.Diagram.HasSecondaryYAxis = true
Rapports.charts(2).embeddedObject.Diagram.GroupBarsPerAxis = false
Rapports.charts(2).embeddedObject.firstDiagram.CoordinateSystems(0).ChartTypes(0).Dataseries(0).AttachedAxisIndex=0
Rapports.charts(2).embeddedObject.firstDiagram.CoordinateSystems(0).ChartTypes(0).Dataseries(1).AttachedAxisIndex=1
Rapports.charts(2).embeddedObject.Legend.Alignment = com.sun.star.chart.ChartLegendPosition.RIGHT

Filtres.getCellRangeByName("filtreProduits").cellBackColor=RGB(255,255,255)
end if

verrouillerPlage("Filtres","M1:S"&j)
Proteger("Produits")
Proteger("Filtres")
End Sub



Sub recap
incrementerPlage("plageProduits","Produits")
incrementerPlage("plageClients","Clients")
ChiffreAffaireMensuel
ChiffreAffaireClient
ChiffreAffaireArticle
End sub
Libre Office 7.3.7.2
MacOs Ventura 13.0.1 (M1)