OPEN OFFICE - Macro pour calcul simple
Fermé
Hadryan
-
19 mai 2009 à 02:51
Hadryan Messages postés 5 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 20 mai 2009 - 20 mai 2009 à 03:37
Hadryan Messages postés 5 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 20 mai 2009 - 20 mai 2009 à 03:37
A voir également:
- OPEN OFFICE - Macro pour calcul simple
- Microsoft office - Guide
- Oubliez Microsoft Office ! Cet équivalent totalement gratuit est parfait pour l'école, la maison et le bureau - Guide
- Open office francais - Télécharger - Suite bureautique
- Telecharger office 2019 - Télécharger - Traitement de texte
- Calcul moyenne excel - Guide
9 réponses
effectivement, le code UNO n'est pas forcément adapté pour des macros simples.
je te conseille donc http://www.openoffice.org/fr/Documentation/How-to/indexht-programmation.html qui te montrera que le Basic d'OOo est aussi simple que le VBA de Microsoft.
Le conseil du jour : OOo n'ayant pas d'inspecteur d'objets, je te conseille XRay pour ausculter les différents objets que tu vas manipuler en Basic
Quant à ton exemple, tu devrais te retrouver avec qqe chose d'aussi simple qu'en VBA genre Cells("C1").value = Cells.("A1").Value+Cells.("B1").Value+Cells.("C1").Value le tout précédé d'un With Classeur.Feuille dont j'ai totalement oublié la syntaxe... heureusement la page citée dessus te montrera comment faire.
je te conseille donc http://www.openoffice.org/fr/Documentation/How-to/indexht-programmation.html qui te montrera que le Basic d'OOo est aussi simple que le VBA de Microsoft.
Le conseil du jour : OOo n'ayant pas d'inspecteur d'objets, je te conseille XRay pour ausculter les différents objets que tu vas manipuler en Basic
Quant à ton exemple, tu devrais te retrouver avec qqe chose d'aussi simple qu'en VBA genre Cells("C1").value = Cells.("A1").Value+Cells.("B1").Value+Cells.("C1").Value le tout précédé d'un With Classeur.Feuille dont j'ai totalement oublié la syntaxe... heureusement la page citée dessus te montrera comment faire.
Ok je voie, ce qui me donnerait donc une formule comme cela:
sub Main
Cells("C1").value = Cells("A1").Value+Cells("B1").Value+Cells("C1").Value
end sub
Sauf que ça me renvoie une erreur d'exécution BASIC.
Sous-procédure ou procédure non définie.
Youppi j'ai comme l'impression que ma conversion à OO ne sera pas de tout repos... Et dire que l'on croyait avoir fini le travail d'ici quelques semaines... (Ouin j'ai des doutes tout à coup !)
Hadryan
Qui déchante...
sub Main
Cells("C1").value = Cells("A1").Value+Cells("B1").Value+Cells("C1").Value
end sub
Sauf que ça me renvoie une erreur d'exécution BASIC.
Sous-procédure ou procédure non définie.
Youppi j'ai comme l'impression que ma conversion à OO ne sera pas de tout repos... Et dire que l'on croyait avoir fini le travail d'ici quelques semaines... (Ouin j'ai des doutes tout à coup !)
Hadryan
Qui déchante...
Ok j'avance tranquillement je suis rendu avec le code suivant pour ma macro:
REM ***** BASIC *****
Sub Main
End Sub
Sub test19mai2009
Cells("C1").value = Cells("A1").Value + Cells("B1").Value + Cells("C1").Value
End Sub
Mais bien que cela ne me renvoie pas d'erreur cela ne calcul pas rien non plus ! ? Où est donc mon erreur s.v.p ?
REM ***** BASIC *****
Sub Main
End Sub
Sub test19mai2009
Cells("C1").value = Cells("A1").Value + Cells("B1").Value + Cells("C1").Value
End Sub
Mais bien que cela ne me renvoie pas d'erreur cela ne calcul pas rien non plus ! ? Où est donc mon erreur s.v.p ?
Hadryan
Messages postés
5
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
20 mai 2009
19 mai 2009 à 19:02
19 mai 2009 à 19:02
Bon pour éviter d'écrire 10 messages de suite, je me suis enregistré sur le forum histoire de pouvoir éditer mes futurs messages aux besoin...
Youppi je sais comment faire un calcul simple ! :)
Est-ce que l'utilisation de nom de cellule est utile et rend l'écriture d'une macro plus simple ?
[ code ]
Sub Test
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Professeur")
with oSheet
.getCellRangeByName("D2").value = .getCellRangeByName("B2").value + .getCellRangeByName("C2").value _
+ .getCellRangeByName("D2").value
.getCellRangeByName("D3").value = .getCellRangeByName("B3").value + .getCellRangeByName("C3").value _
+ .getCellRangeByName("D3").value
.getCellRangeByName("D4").value = .getCellRangeByName("B4").value + .getCellRangeByName("C4").value _
+ .getCellRangeByName("D4").value
end with
End Sub
[ /code ]
Je tiens à faire remarque que je sais qu'il existe une fonction plus facile pour faire une "boucle" mais comme les données ne sont pas toujours en A1,B1,C1 cela serait assez dur à faire je crois... :( À moins que de faire plusieurs boucle reviendrait à me sauver du temps ? Vue que j'ai un fichier entre autre avec 60 entrées en A1, C1, F1 (résultat en F1) ???
J'ai cherché mais tout les exemples que j'ai trouvé mon plus dérouté qu'autre chose je dois bien avouer ! :os
Sinon existe-t-il une liste des balise obligatoire et régulièrement utilisé car après cela j'aurai fini et les professeurs dont je dois m'occuper de leurs fichiers d'ici là fin de l'année seront assez content je crois :) (C'était quoi l'idée aussi de changer le système informatique juste avant la fin de l'année... Ah oui pour que tout soit en place pour l'an prochain...)
Youppi je sais comment faire un calcul simple ! :)
Est-ce que l'utilisation de nom de cellule est utile et rend l'écriture d'une macro plus simple ?
[ code ]
Sub Test
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Professeur")
with oSheet
.getCellRangeByName("D2").value = .getCellRangeByName("B2").value + .getCellRangeByName("C2").value _
+ .getCellRangeByName("D2").value
.getCellRangeByName("D3").value = .getCellRangeByName("B3").value + .getCellRangeByName("C3").value _
+ .getCellRangeByName("D3").value
.getCellRangeByName("D4").value = .getCellRangeByName("B4").value + .getCellRangeByName("C4").value _
+ .getCellRangeByName("D4").value
end with
End Sub
[ /code ]
Je tiens à faire remarque que je sais qu'il existe une fonction plus facile pour faire une "boucle" mais comme les données ne sont pas toujours en A1,B1,C1 cela serait assez dur à faire je crois... :( À moins que de faire plusieurs boucle reviendrait à me sauver du temps ? Vue que j'ai un fichier entre autre avec 60 entrées en A1, C1, F1 (résultat en F1) ???
J'ai cherché mais tout les exemples que j'ai trouvé mon plus dérouté qu'autre chose je dois bien avouer ! :os
Sinon existe-t-il une liste des balise obligatoire et régulièrement utilisé car après cela j'aurai fini et les professeurs dont je dois m'occuper de leurs fichiers d'ici là fin de l'année seront assez content je crois :) (C'était quoi l'idée aussi de changer le système informatique juste avant la fin de l'année... Ah oui pour que tout soit en place pour l'an prochain...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello
je vois que t'as bien avancé dans la production d'un code lisible et facilement maintenable.
en placant des appels à XRay ici et là dans ton code, tu pourras ausculter tel ou tel objet et apprendre encore plus rapidement le bidule.
note aussi qu'il existe (ou existait - je suis pas très à jour) un Kit de développement OOo constistant en un mega fichier d'aide associé à XRay, mais j'ai pas eu le temps de bcp m'en servir.
par contre, je ne comprends pas ta demande quant à des balises. comment vois-tu ces balises ou comment t'imagines-tu les utiliser ?
je vois que t'as bien avancé dans la production d'un code lisible et facilement maintenable.
en placant des appels à XRay ici et là dans ton code, tu pourras ausculter tel ou tel objet et apprendre encore plus rapidement le bidule.
note aussi qu'il existe (ou existait - je suis pas très à jour) un Kit de développement OOo constistant en un mega fichier d'aide associé à XRay, mais j'ai pas eu le temps de bcp m'en servir.
par contre, je ne comprends pas ta demande quant à des balises. comment vois-tu ces balises ou comment t'imagines-tu les utiliser ?
Hadryan
Messages postés
5
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
20 mai 2009
19 mai 2009 à 20:34
19 mai 2009 à 20:34
Je ne sais pas, on m'avait parlé qu'au lieu de faire A1+B1=C1 on pouvait faire par exemple: Argent+Prime=Salaire ... je ne sais pas si cela est utile ? Sauf peut-être pour relire un code plus tard ce qui en effet pourrait vachement aider j'imagine !
Sinon mon problème actuel est rendu à l'exécution de plusieurs calcul sur divers feuille. Je sais comment faire une macro sur une seule feuille mais pas sur plusieurs... Voici mon code actuel qui ne fonctionne pas il va s'en dire :os
[ code ]
Sub Test
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Ménage")
with oSheet
.getCellRangeByName("D2").value = .getCellRangeByName("B2").value + .getCellRangeByName("C2").value _
+ .getCellRangeByName("D2").value
.getCellRangeByName("D3").value = .getCellRangeByName("B3").value + .getCellRangeByName("C3").value _
+ .getCellRangeByName("D3").value
.getCellRangeByName("D4").value = .getCellRangeByName("B4").value + .getCellRangeByName("C4").value _
+ .getCellRangeByName("D4").value
end with
End Sub
Sub Test2
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Professeur")
with oSheet
.getCellRangeByName("D2").value = .getCellRangeByName("B2").value + .getCellRangeByName("C2").value _
+ .getCellRangeByName("D2").value
.getCellRangeByName("D3").value = .getCellRangeByName("B3").value + .getCellRangeByName("C3").value _
+ .getCellRangeByName("D3").value
.getCellRangeByName("D4").value = .getCellRangeByName("B4").value + .getCellRangeByName("C4").value _
+ .getCellRangeByName("D4").value
end with
End Sub
Sub Test3
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Dépense")
with oSheet
.getCellRangeByName("C2").value = .getCellRangeByName("A2").value + .getCellRangeByName("B2").value _
+ .getCellRangeByName("C2").value
.getCellRangeByName("C3").value = .getCellRangeByName("A3").value + .getCellRangeByName("B3").value _
+ .getCellRangeByName("C3").value
.getCellRangeByName("C4").value = .getCellRangeByName("A4").value + .getCellRangeByName("B4").value _
+ .getCellRangeByName("C4").value
end with
End Sub
[ /code]
Ceci dit les cellules sont uniquement à titre d'exemple car ce n'est pas toujours des cellules qui se suivent...
Sinon mon problème actuel est rendu à l'exécution de plusieurs calcul sur divers feuille. Je sais comment faire une macro sur une seule feuille mais pas sur plusieurs... Voici mon code actuel qui ne fonctionne pas il va s'en dire :os
[ code ]
Sub Test
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Ménage")
with oSheet
.getCellRangeByName("D2").value = .getCellRangeByName("B2").value + .getCellRangeByName("C2").value _
+ .getCellRangeByName("D2").value
.getCellRangeByName("D3").value = .getCellRangeByName("B3").value + .getCellRangeByName("C3").value _
+ .getCellRangeByName("D3").value
.getCellRangeByName("D4").value = .getCellRangeByName("B4").value + .getCellRangeByName("C4").value _
+ .getCellRangeByName("D4").value
end with
End Sub
Sub Test2
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Professeur")
with oSheet
.getCellRangeByName("D2").value = .getCellRangeByName("B2").value + .getCellRangeByName("C2").value _
+ .getCellRangeByName("D2").value
.getCellRangeByName("D3").value = .getCellRangeByName("B3").value + .getCellRangeByName("C3").value _
+ .getCellRangeByName("D3").value
.getCellRangeByName("D4").value = .getCellRangeByName("B4").value + .getCellRangeByName("C4").value _
+ .getCellRangeByName("D4").value
end with
End Sub
Sub Test3
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Dépense")
with oSheet
.getCellRangeByName("C2").value = .getCellRangeByName("A2").value + .getCellRangeByName("B2").value _
+ .getCellRangeByName("C2").value
.getCellRangeByName("C3").value = .getCellRangeByName("A3").value + .getCellRangeByName("B3").value _
+ .getCellRangeByName("C3").value
.getCellRangeByName("C4").value = .getCellRangeByName("A4").value + .getCellRangeByName("B4").value _
+ .getCellRangeByName("C4").value
end with
End Sub
[ /code]
Ceci dit les cellules sont uniquement à titre d'exemple car ce n'est pas toujours des cellules qui se suivent...
Hadryan
Messages postés
5
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
20 mai 2009
19 mai 2009 à 23:26
19 mai 2009 à 23:26
Voici donc ma formule à l'heure actuelle, qui fait ce que je lui demande, la seule chose que je me demande c'est si elle est optimisé ou pas ?
NOTE: La première partie suppose que les cellules ne seront pas à la suite (A,B,C, etc.)
[ code ]
Sub Test
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Essaie")
with oSheet
.getCellRangeByName("D2").value = .getCellRangeByName("B2").value + .getCellRangeByName("C2").value _
+ .getCellRangeByName("D2").value
.getCellRangeByName("D3").value = .getCellRangeByName("B3").value + .getCellRangeByName("C3").value _
+ .getCellRangeByName("D3").value
.getCellRangeByName("D4").value = .getCellRangeByName("B4").value + .getCellRangeByName("C4").value _
+ .getCellRangeByName("D4").value
end with
oSheet = ThisComponent.Sheets.getByName("Ménage")
with oSheet
for r=2 to 20
.getCellRangeByName("D" & r).value = .getCellRangeByName("B" & r).value + _
.getCellRangeByName("C" & r).value + .getCellRangeByName("D" & r).value
next r
end with
End Sub
[ /code ]
NOTE: La première partie suppose que les cellules ne seront pas à la suite (A,B,C, etc.)
[ code ]
Sub Test
Dim oSheet as Object
oSheet = ThisComponent.Sheets.getByName("Essaie")
with oSheet
.getCellRangeByName("D2").value = .getCellRangeByName("B2").value + .getCellRangeByName("C2").value _
+ .getCellRangeByName("D2").value
.getCellRangeByName("D3").value = .getCellRangeByName("B3").value + .getCellRangeByName("C3").value _
+ .getCellRangeByName("D3").value
.getCellRangeByName("D4").value = .getCellRangeByName("B4").value + .getCellRangeByName("C4").value _
+ .getCellRangeByName("D4").value
end with
oSheet = ThisComponent.Sheets.getByName("Ménage")
with oSheet
for r=2 to 20
.getCellRangeByName("D" & r).value = .getCellRangeByName("B" & r).value + _
.getCellRangeByName("C" & r).value + .getCellRangeByName("D" & r).value
next r
end with
End Sub
[ /code ]
Je rebondis sur le post 6
au lieu de multiples Test, Test2 etc
pkoi ne pas faire faire un TestGeneral(Feuille)
cct le post 7 : oui, tu peux tout à fait construire dynamiquement des références à des cellules en ne forunissant que leur coordonnées !
au lieu de multiples Test, Test2 etc
pkoi ne pas faire faire un TestGeneral(Feuille)
Sub Test(Feuille) Dim oSheet as Object oSheet = ThisComponent.Sheets.getByName(Feuille) with oSheet .getCellRangeByName("D2").value = .getCellRangeByName("B2").value + .getCellRangeByName("C2").value _ + .getCellRangeByName("D2").value .getCellRangeByName("D3").value = .getCellRangeByName("B3").value + .getCellRangeByName("C3").value _ + .getCellRangeByName("D3").value .getCellRangeByName("D4").value = .getCellRangeByName("B4").value + .getCellRangeByName("C4").value _ + .getCellRangeByName("D4").value end with End Subet ensuite
sub Main TestGeneral "Ménage" TestGeneral "Professeur" TestGeneral "Dépense" end sub
cct le post 7 : oui, tu peux tout à fait construire dynamiquement des références à des cellules en ne forunissant que leur coordonnées !
Hadryan
Messages postés
5
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
20 mai 2009
20 mai 2009 à 03:37
20 mai 2009 à 03:37
Merci, je crois que pour cette partie je suis correct maintenant, d'autres questions mais je vais créer d'autre fil de discussion vue que ce n'est pas le même problème...