[Résolu][Calc] Changer les valeurs dans la colonne D

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 !
calcul
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 04 déc. 2018 11:06

[Résolu][Calc] Changer les valeurs dans la colonne D

Message par calcul »

Salutations ,

dans le fichier 1, les colonnes K, L, P sont liées au fichier 2 .

Dans la colonne D de la feuille de calcul 1 du fichier 1, les valeurs qui y figurent ont été collées par une autre macro. Par conséquent, ces valeurs n'ont pas de formules. Maintenant, pour les modifier, il suffit de faire avec Macro .

J'ai besoin de créer une Macro dans le fichier 1 pour Recalculer les valeurs de la colonne D entière avec la de calcul ensuite:
D2 = D2 - K2 + L2 + P2
D2 = 1 - 25 + 2 + 1
D2 = - 21 >>> doit être égal à zéro car le résultat était inférieur à 2
D13 = D13 - K13 + L13 + P13
D13 = 12 - 36 + 13 + 12
D13 = 1 >>> doit être égal à zéro car le résultat était inférieur à 2
D14 = D14 - K14 + L14 + P14
D14 = 13 - 37 + 14 + 13
D14 = 3 >>> sera le même car il était supérieur à 2
observation:
1) les résultats inférieurs à 2 dans la colonne D doivent être égaux à zéro (0) .

2) les valeurs recalculées dans la colonne D doivent également rester dans la colonne D .

3) Après avoir recalculé les valeurs de la colonne D dans le fichier 1, la Macro doit ouvrir le fichier 2, puis effacer les valeurs des colonnes E, H, M et les lignes 2 et suivantes .

4) Je mets comme exemple une feuille de calcul 2 dans le fichier 1 joint avec les nouvelles valeurs Recalculé pour la colonne D, c'est , le résultat final après avoir exécuté Macro .
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par calcul le 26 mars 2019 16:37, modifié 1 fois.
LibreOffice 5.4.4.2 et Windows 7
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Changer les valeurs dans la colonne D

Message par Piaf »

Bonjour
Tu peux tester

Code : Tout sélectionner

Sub Main
Dim oDoc as Object, maFeuille as Object, oCurseur as Object, maZone as Object
Dim y as Long, direction As Integer, gomme as Long, Chemin as Variant
	oDoc = thisComponent
	maFeuille = oDoc.Sheets.getByName("Planilha1")
	oCurseur = maFeuille.createCursor
	oCurseur.gotoEndOfUsedArea(False)
	y = oCurseur.RangeAddress.EndRow
	maFeuille.getCellRangeByName("E2").Formula = "=IF(D2-K2+L2+P2 < 2;0;D2-K2+L2+P2)"
	maZone = maFeuille.getCellRangeByName("E2:E" & y+1)
	direction = com.sun.star.sheet.FillDirection.TO_BOTTOM
	maZone.fillAuto(direction, 1)
	maFeuille.getCellRangeByName("D2:D" & y+1).dataArray = maZone.dataArray
	gomme = com.sun.star.sheet.CellFlags.FORMULA
	maZone.clearContents(gomme)
	Chemin = split(oDoc.URL,"/")
	Chemin(UBound(Chemin())) = ""
	Chemin = join(Chemin, "/")
	Fich2(Chemin)
End Sub

Sub Fich2(Chemin)
Dim oDoc as Object, mafeuille as Object, oCurseur as Object, maZone as Object
Dim gomme as Long, AdresseDoc as String
Dim Arg(0) As New com.sun.star.beans.PropertyValue
	Arg(0).Name = "Hidden"
	Arg(0).Value = True
	AdresseDoc = ConvertToURL(Chemin & "file 2.ods"
	oDoc = StarDesktop.LoadComponentFromURL(AdresseDoc, "_default", 0, Arg())
	maFeuille = oDoc.Sheets.getByName("Planilha1")
	oCurseur = maFeuille.createCursor
	oCurseur.gotoEndOfUsedArea(False)
	y = oCurseur.RangeAddress.EndRow
	maZone = maFeuille.getCellRangeByName("E2:M" & y + 1)
	gomme = com.sun.star.sheet.CellFlags.VALUE
	maZone.clearContents(gomme)
	oDoc.Store
	oDoc.Close(True)	
End Sub
les deux fichiers doivent être dans le même répertoire.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
calcul
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 04 déc. 2018 11:06

[Résolu][Calc] Changer les valeurs dans la colonne D

Message par calcul »

sr. Piaf ,
Merci beaucoup mon ami , c'est très bien, ça fonctionne très bien . :bravo: :)

observation:
Si le calcul de la colonne D était directement dans la colonne D elle-même, le programme serait encore mieux .

Merci beaucoup de m'aider , Je suis reconnaissant pour votre aide . :super:
LibreOffice 5.4.4.2 et Windows 7