Macro pour coller les résultats de calculs
SegreB49
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
SegreB49 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
SegreB49 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour
Je travaille avec OpenOffice
j'ai créé des feuilles de calculs, numérotées 1, 2, . . . , sur lesquelles j'ai une formule de calcul à partir des données.
Je veux récupérer, à l'aide d'une macro tous les résultats de calculs, pas les formules sur une feuille bilan.
J'ai essayé le code suivant :
Le problème est que cette macro colle les formules s'il y en a et donc que les valeurs affichées dans la dernière cellule sont fausses.
Question 1 : Que faire pour que la commande Sheet.copyRange copie les valeurs à la place des formules, comme le fait la commande collage spécial ?
J'ai donc créé une macro qui, pour une feuille donnée, colle le résultat de la formule, dans une nouvelle cellule.
Cela me permet ainsi de récupérer la valeur avec la macro précédente :
Le problème c'est que je n'arrive pas à créer la macro qui me permet de faire cette manipulation automatiquement sur toutes les feuilles.
J'ai tenté la macro suivante :
mais j'ai une erreur et je ne comprends pas pourquoi ce qui marche sur la feuille courante sélectionnée ne peut pas se répéter en allant automatiquement sur les autres feuilles ?
Question 2 : qui peut me donner une solution car cela fait une bonne semaine que je cherche désespérement.
merci d'avance
Je travaille avec OpenOffice
j'ai créé des feuilles de calculs, numérotées 1, 2, . . . , sur lesquelles j'ai une formule de calcul à partir des données.
Je veux récupérer, à l'aide d'une macro tous les résultats de calculs, pas les formules sur une feuille bilan.
J'ai essayé le code suivant :
Sub colle_sur_bilan
Dim oDoc As Object
Dim total As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
oDoc=ThisComponent
total = oDoc.Sheets.Count
k=total-1
Dim Doc As Object
Dim Sheet As Object
Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
Dim CellAddress As New com.sun.star.table.CellAddress
Dim UneZone As Object
Dim CoordZone As Object
Dim LigneCourante As Integer, FeuilledeZone As Integer
Dim PremiereColonneZone As Integer, DerniereColonneZone As Integer
Dim PremiereLigneZone As Integer, DerniereLigneZone As Integer
Doc = StarDesktop.CurrentComponent
UneZone = Doc.CurrentSelection
CoordZone = UneZone.RangeAddress
FeuilledeZone = CoordZone.Sheet
PremiereColonneZone = CoordZone.StartColumn
DerniereColonneZone = CoordZone.EndColumn
PremiereLigneZone = CoordZone.StartRow
DerniereLigneZone = CoordZone.EndRow
For i=3 to k
Sheet = Doc.Sheets(i)
CellRangeAddress.Sheet = FeuilledeZone
CellRangeAddress.StartColumn = PremiereColonneZone
CellRangeAddress.StartRow = PremiereLigneZone
CellRangeAddress.EndColumn = DerniereColonneZone
CellRangeAddress.EndRow = DerniereLigneZone
j = i + 30
CellAddress.Sheet = 2
CellAddress.Column = j
CellAddress.Row = 1
Sheet.copyRange(CellAddress, CellRangeAddress)
next
end sub
Le problème est que cette macro colle les formules s'il y en a et donc que les valeurs affichées dans la dernière cellule sont fausses.
Question 1 : Que faire pour que la commande Sheet.copyRange copie les valeurs à la place des formules, comme le fait la commande collage spécial ?
J'ai donc créé une macro qui, pour une feuille donnée, colle le résultat de la formule, dans une nouvelle cellule.
Cela me permet ainsi de récupérer la valeur avec la macro précédente :
sub copie_nombres
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$G$33:$Z$33"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$G$34"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "VT"
args4(1).Name = "FormulaCommand"
args4(1).Value = 0
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())
end sub
Le problème c'est que je n'arrive pas à créer la macro qui me permet de faire cette manipulation automatiquement sur toutes les feuilles.
J'ai tenté la macro suivante :
sub copie_nombres_tout
Dim oDoc As Object
Dim i As Integer
Dim j As Integer
Dim k As Integer
oDoc=ThisComponent
k = oDoc.Sheets.Count
j=i-1
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
For i=3 to k
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 3
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
copie_nombres
next
end sub
mais j'ai une erreur et je ne comprends pas pourquoi ce qui marche sur la feuille courante sélectionnée ne peut pas se répéter en allant automatiquement sur les autres feuilles ?
Question 2 : qui peut me donner une solution car cela fait une bonne semaine que je cherche désespérement.
merci d'avance
A voir également:
- Macro pour coller les résultats de calculs
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Resultats foot - Télécharger - Vie quotidienne
- Lexer resultats - Télécharger - Sport
- Historique copier coller - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
1 réponse
Lorsqu'on pose la question sur plusieurs forums, le minimum est de revenir donner le lien vers la solution qui vous a été donnée.
https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=47813
.
.
<span class='signature'>Pourquoi pirater MS-Office alors qu'il existe une solution gratuite ?
Utilisez OpenOffice</span>
https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=47813
.
.
<span class='signature'>Pourquoi pirater MS-Office alors qu'il existe une solution gratuite ?
Utilisez OpenOffice</span>
Je m'excuse mais comme je suis en pleine recherche je n'avais pas encore eu le temps de le faire