A voir également:
- Macro et openoffice
- Openoffice - Télécharger - Suite bureautique
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro maker - Télécharger - Divers Utilitaires
11 réponses
Salut,
à adapter selon les besoins.
à adapter selon les besoins.
Sub AddSheet()
Dim myDoc as Object, mySheets as Object
Dim name1 as String, name2 as string
myDoc = thisComponent
mySheets = myDoc.Sheets
' le nom de la feuille après laquelle on crée la nouvelle
name1 = InputBox("Insérer une feuille après : ")
name2 = InputBox("La feuille crée aura pour nom : ")
mySheets.insertNewByName(name2, getIndexByName(mySheets,name1) +1)
End Sub
Merci pour cette macro mais elle ne fonctionne pas. Je recois le message suivant:
Runtime error BASIC
La sous-procédure ou procédure fonctionnelle n'est pas définie
Que dois-je faire pour corriger cette erreur.
Merci
Runtime error BASIC
La sous-procédure ou procédure fonctionnelle n'est pas définie
Que dois-je faire pour corriger cette erreur.
Merci
Re,
La sous-procédure ou procédure fonctionnelle n'est pas définie
C'est ma faute.
getIndexByName c'est une fonction dont je ne t'ai pas donné le code.
Maintenant tu as plusieurs posibilités :
1. tu ajoute la nouvelle feuille à la fin
2. Ajouter la feuille par rapport à une autre feuille
lami20j
La sous-procédure ou procédure fonctionnelle n'est pas définie
C'est ma faute.
getIndexByName c'est une fonction dont je ne t'ai pas donné le code.
Maintenant tu as plusieurs posibilités :
1. tu ajoute la nouvelle feuille à la fin
Sub AddSheet()
Dim myDoc as Object, mySheets as Object
Dim name as String
myDoc = thisComponent
mySheets = myDoc.Sheets
name = InputBox("La feuille crée aura pour nom : ")
mySheets.insertNewByName(name2, -1)
End Sub
2. Ajouter la feuille par rapport à une autre feuille
Sub AddSheet()
Dim myDoc as Object, mySheets as Object
Dim name1 as String, name2 as string
myDoc = thisComponent
mySheets = myDoc.Sheets
'le nom de la feuille après laquelle on crée la nouvelle
name1 = InputBox("Insérer une feuille après : ")
name2 = InputBox("La feuille crée aura pour nom : ")
mySheets.insertNewByName(name2, _
getIndexByName(mySheets, name1) +1)
End Sub
'en cas de succes la fonction renvoie l'index correspondant
'en cas d'échec elle affiche un message d'erreur
'et renvoie un index hors-limite (la feuille est ajouter à la fin)
Function getIndexByName(collection As Object, _
theName As String) As Long
Dim i As Long
for i = 0 to collection.Count -1
if collection(i).Name = theName then
getIndexByName = i ' renvoyer l'index correspondant au nom
Exit Function
end if
next
MsgBox("Feuille inexistante : " & theName & ". La nouvelle feuille a été ajoutée à la fin.", 16, "Collection")
getIndexByName = -100 ' la feuille est ajoutée à la fin si theName inexistant
End Function
lami20j
salut à Lamij et olivier3006,
lamij,
ta macro fonctionne certainement sous Microsoft Office Excel, mais olivier3006 s'interesse à openoffice ;-)
J'ai oOo, mais je n'ai pas encore eu le temps d'approfondir son basic. Voici ce que j'ai obtenu avec l'enregistreur de macro, pour ajouter une feuille dans un classeur existant :
lamij,
ta macro fonctionne certainement sous Microsoft Office Excel, mais olivier3006 s'interesse à openoffice ;-)
J'ai oOo, mais je n'ai pas encore eu le temps d'approfondir son basic. Voici ce que j'ai obtenu avec l'enregistreur de macro, pour ajouter une feuille dans un classeur existant :
sub Main
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(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Name"
args1(0).Value = "Feuille4"
args1(1).Name = "Index"
args1(1).Value = 2
dispatcher.executeDispatch(document, ".uno:Insert", "", 0, args1())
end sub
Salut,
ta macro fonctionne certainement sous Microsoft Office Excel, mais olivier3006 s'interesse à openoffice ;-)
Je suppose que tu l'as tester sur Excel. Je parle de mon code. Et tu l'as testé aussi sous OpenOffice.
je crois que cette ligne devra te dire qu'on est dans OOoBasic
Malheureusement, ta remarque m'a bien fait rigoler.
Je n'envoie jamais un code sans l'avoir tester avant. La seul faute que j'ai fait c'est que j'ai oublié la fonction
Et ça marche.
ta macro fonctionne certainement sous Microsoft Office Excel, mais olivier3006 s'interesse à openoffice ;-)
Je suppose que tu l'as tester sur Excel. Je parle de mon code. Et tu l'as testé aussi sous OpenOffice.
je crois que cette ligne devra te dire qu'on est dans OOoBasic
myDoc = thisComponent
Malheureusement, ta remarque m'a bien fait rigoler.
Je n'envoie jamais un code sans l'avoir tester avant. La seul faute que j'ai fait c'est que j'ai oublié la fonction
getIndexByName.
Et ça marche.
Salut Kobaya,
ne t'inquiète pas, je ne suis pas rancunier.
Je crois que tu sais déjà que l'enregistrement des macros sous Excel est très bavard.
Ex.
Voilà ce que Excel écrit si on veut la feuille en paysage
En fait on n'a besoin que de
C'est pareil avec OpenOffice, lui aussi il est bavard.
Ex :
-pour écrire dans une cellule les 2 macros font la même chose
1. macro enregistée
2. macro écrit
A+
lami20j
ne t'inquiète pas, je ne suis pas rancunier.
Je crois que tu sais déjà que l'enregistrement des macros sous Excel est très bavard.
Ex.
Voilà ce que Excel écrit si on veut la feuille en paysage
Sub Macro2() ' ' Macro2 Macro ' Macro enregistrée le 17/09/2005 par lami ' ' With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.787401575) .RightMargin = Application.InchesToPoints(0.787401575) .TopMargin = Application.InchesToPoints(0.984251969) .BottomMargin = Application.InchesToPoints(0.984251969) .HeaderMargin = Application.InchesToPoints(0.4921259845) .FooterMargin = Application.InchesToPoints(0.4921259845) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 96 .CenterHorizontally = False .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 .PrintErrors = xlPrintErrorsDisplayed End With End Sub
En fait on n'a besoin que de
Sub Macro2() ActiveSheet.PageSetup.Orientation = xlLandscape End Sub
C'est pareil avec OpenOffice, lui aussi il est bavard.
Ex :
-pour écrire dans une cellule les 2 macros font la même chose
1. macro enregistée
sub test
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 = "StringName"
args1(0).Value = "Azerty"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
end sub
2. macro écrit
sub test2 ()
ThisComponent.Sheets.getByName("Feuille1").getCellByPosition(0,0).string="Azerty"
end sub
A+
lami20j
effectivement, côté bavardage, oOo n'est pas mal, peut-être même pire que VBA!
Merci du tuyau lamij :-)
Merci du tuyau lamij :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Je voulais demander à lami20j s'il connaissait un bon moyen d'avoir le code du basic que oOo utilise ?
J'ai fait un outil sous Excel et voudrait le mettre sous openoffice mais j'avoue que ce n'est pas aussi facile de le dire que de le faire....
Merci d'avance,
Sébastien
Je voulais demander à lami20j s'il connaissait un bon moyen d'avoir le code du basic que oOo utilise ?
J'ai fait un outil sous Excel et voudrait le mettre sous openoffice mais j'avoue que ce n'est pas aussi facile de le dire que de le faire....
Merci d'avance,
Sébastien
Salut,
un bon moyen d'avoir le code du basic que oOo utilise
je te recommande ce livre Programmation OpenOffice.org 2
en revanche si tu n'as besoin que pour ton application seulement tu peux m'envoyer le code de ton appli (voir le fichier excel entier) pour faire la conversion
tu peux aussi chercher sur google
à toi de voir
un bon moyen d'avoir le code du basic que oOo utilise
je te recommande ce livre Programmation OpenOffice.org 2
en revanche si tu n'as besoin que pour ton application seulement tu peux m'envoyer le code de ton appli (voir le fichier excel entier) pour faire la conversion
tu peux aussi chercher sur google
à toi de voir
Salut et merci à toi pour la réponse !
Je vais voir pour ton bouquin, j'aimerais tellement basculer complètement sous openoffice et diffuser autour de moi pour faire en sorte que l'informatique soit pour tous et abordable !
En fait, j'aimerai te l'envouer tout en essayant de m'y mettre moi-même. Tu verras qu'il n'y a rien de compliqué. Tu peux même me donner quelques billes pour que je le fasse seul mais j'ai quelques soucis à démarrer, question de code.
Il me manque juste ton adresse électronique ?!
A bientôt !
Sébastien
Je vais voir pour ton bouquin, j'aimerais tellement basculer complètement sous openoffice et diffuser autour de moi pour faire en sorte que l'informatique soit pour tous et abordable !
En fait, j'aimerai te l'envouer tout en essayant de m'y mettre moi-même. Tu verras qu'il n'y a rien de compliqué. Tu peux même me donner quelques billes pour que je le fasse seul mais j'ai quelques soucis à démarrer, question de code.
Il me manque juste ton adresse électronique ?!
A bientôt !
Sébastien
Salut,
Il me manque juste ton adresse électronique ?!
ou la tienne ;-))
tu peux mettre ton fichier sur https://www.cjoint.com/
Il me manque juste ton adresse électronique ?!
ou la tienne ;-))
tu peux mettre ton fichier sur https://www.cjoint.com/
Hello tt le monde,
Je vois qu'il y en a qui maîtrise un max les macros sur Oo... n'étant pas aussi doué, je viens quérir un peu d'aide :-)
Voila, j'ai fais une macro trés simple sur Excel dont voici le but:
Si, dans la première feuille, on inscrit une valeur dans une cellule de la première colonne (exemple : 3:1), la macro va chercher dans la seconde feuille les renseignements (à savoir des références) associées à cette valeur et les copie dans les deux cellules suivantes ( 3:2 et 3:3).
Sub Copie_conditionnelle()
Dim i As Integer
Dim j As Integer
For i = 3 To 13
For j = 3 To 13
If Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(i, 1) Then
Worksheets(1).Cells(i, 2) = Worksheets(2).Cells(j, 2)
Worksheets(1).Cells(i, 3) = Worksheets(2).Cells(j, 3)
End If
Next
Next
End Sub
Si quelqu'un pouvait me donner un coup de pouce pour la traduire en Open office 2.2 ce serait impecc!!!
Merci
Je vois qu'il y en a qui maîtrise un max les macros sur Oo... n'étant pas aussi doué, je viens quérir un peu d'aide :-)
Voila, j'ai fais une macro trés simple sur Excel dont voici le but:
Si, dans la première feuille, on inscrit une valeur dans une cellule de la première colonne (exemple : 3:1), la macro va chercher dans la seconde feuille les renseignements (à savoir des références) associées à cette valeur et les copie dans les deux cellules suivantes ( 3:2 et 3:3).
Sub Copie_conditionnelle()
Dim i As Integer
Dim j As Integer
For i = 3 To 13
For j = 3 To 13
If Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(i, 1) Then
Worksheets(1).Cells(i, 2) = Worksheets(2).Cells(j, 2)
Worksheets(1).Cells(i, 3) = Worksheets(2).Cells(j, 3)
End If
Next
Next
End Sub
Si quelqu'un pouvait me donner un coup de pouce pour la traduire en Open office 2.2 ce serait impecc!!!
Merci