| macro et openoffice par olivier3006 |
jeudi 15 septembre 2005 à 20:02:11 |
Bonjour,
Des feuilles de classeur ? Clic droit sur un onglet de feuille de calcul—Insérer une feuille…—Indiquer le nombre. Sinon, des noms comment ?
|
Salut,
à 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 |
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
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
|
effectivement, côté bavardage, oOo n'est pas mal, peut-être même pire que VBA!
Merci du tuyau lamij :-) A+, Kobaya. |
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 |
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 lami20j |
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 |
Salut,
Il me manque juste ton adresse électronique ?! ou la tienne ;-)) tu peux mettre ton fichier sur http://cjoint.com lami20j |
Bonjour,
fauvel.sebastien@wanadoo.fr |
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 |
| 26/10 19h11 | [macro openoffice] programmation d'un msgbox | Programmation | 05/12 22h59 | 6 |
| 13/05 10h05 | Macro openoffice | Bureautique | 13/05 10h05 | 0 |
| 20/04 17h52 | [MACRO OPENOFFICE] insérer feuille et bouton | Programmation | 20/04 17h52 | 0 |
| 11/12 11h27 | Macro OpenOffice passage de parametres | Programmation | 11/12 11h27 | 0 |