Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Autres Logiciels > OpenOffice

OpenOffice Forum d'entraide sur OpenOffice.org. Avant de poster : La F.A.Q OpenOffice

Réponse
 
Outils de la discussion
Vieux 17/06/2008, 08h53   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: décembre 2006
Messages: 26
Par défaut comment lister le contenu d'un document writer

Je voudrais retrouver dans une macro (openoffice) le contenu d'un document, des champs utilisateur (user field) afin de leur donner une valeur recueillie par un inputbox. Mais je ne parviens pas à retrouver les variables qui y sont liées. Dois-je passer par un conteneur ? Merci pour les réponses
cpf2006 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/06/2008, 10h35   #2 (permalink)
Invité de passage
 
Date d'inscription: octobre 2007
Messages: 9
Par défaut

Bonjour

S'il s'agit bien des champs utilisateur qui sont accessible via le menu Fichier => Propriétés => Utilisateur dont tu parles, je pense que le bout de code suivant devrait t'inspirer
Code :
sub champsUtilisateur()
  dim mesInfos as object
  dim nbInfos as long, i as long 
  mesInfos = thisComponent.DocumentInfo
  nbInfos = mesInfos.getUserFieldCount
  for i = 0 to nbInfos -1
    print mesInfos.getUserFieldName(i) & " = " & mesInfos.getUserFieldValue(i)
  next i 
  for i = 0 to nbInfos -1
    mesInfos.setUserFieldName(i,"nouveau nom " & cstr(i+1) ) 
    mesInfos.setUserFieldValue(i,"nouvelle valeur " & cstr(i+1) )
  next i
  for i = 0 to nbInfos -1
    print mesInfos.getUserFieldName(i) & " = " & mesInfos.getUserFieldValue(i)
  next i 
end sub
athanaze est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/06/2008, 11h42   #3 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: décembre 2006
Messages: 26
Par défaut

Merci pour la réponse. En fait ces champs sont insérés dans le document par insert/fields/other/ onglet "variables" insertion de "user field" dans le document avec une valeur null (""). En suite, je voudrais par programmation, demander à l'utilisateur via un "inputbox" d'introduire lui-même le nom à donner à la variable qui s'afficherait ensuite dans le document. J'ai déjà passé qlq jours mais j'y arrive pas. Merci pour ton aide
cpf2006 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/06/2008, 14h25   #4 (permalink)
Invité de passage
 
Date d'inscription: octobre 2007
Messages: 9
Par défaut

Ok, bah j'avais une chance sur deux, hein ?

Bon, je réajuste le tir et te propose ce code là :
Code :
sub main 
  ajoutChampUser("Champ test 1","valeur A")
  ajoutChampUser("Champ test 2","valeur B")
  ajoutChampUser("Champ test 3","valeur C")
end sub

sub ajoutChampUser(n as string,v as string)
  dim MF as object
  ' si le champs n'existe pas déjà, on le crée
  if not ThisComponent.TextFieldMasters.hasByName("com.sun.star.text.FieldMaster.User." & n ) then
    MF = thisComponent.createInstance("com.sun.star.text.FieldMaster.User")
    MF.Name = n
  else  ' sinon, on le sélectionne
    MF = thisComponent.textFieldMasters.getByName("com.sun.star.text.FieldMaster.User." & n)
  end if
 ' on met sa valeur à jour
  MF.content = v 
end sub
Je te laisse le soin de faire la boite de dialogue qui va bien pour utiliser la sub

* edit : je précise que cette sub ne fait qu'ajouter une entrée dans la liste des champs visible via Insertion => Champ => Autre => Variables => Champ d'utilisateur.
Ca ne l'affiche pas dans le document
athanaze est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/06/2008, 21h15   #5 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: décembre 2006
Messages: 26
Par défaut

Merci, ça marche ! Du coup, ça commence à se débloquer !
Cependant et dans ma logique, j'aurais voulu connaître le nom des variables par une méthode qui aurait pu me mettre tous les noms des champs dans un tableau de string. Cela dans le but de demander à l'utilisateur d'entrer les données avec comme titre de l'imputbox le nom de la variable. Je cherche donc à réaliser (ou me faire réaliser par d'autre dans ce cas!) un moyen d'insérer du contenu dans les variables sans connaître à l'avance ces variables. Si tu as des idées et je remarque avec plaisir que tu en connais un bout, ton aide est la bienvenue. Et encore merci.
cpf2006 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/06/2008, 11h26   #6 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: décembre 2006
Messages: 26
Par défaut

Salut Athanaze,
Grace à ton aide j'ai réglé mon problème.
Mais j'en ai un autre, c-à-d que je voudrais faire un peu la même chose mais avec des "inputfield". Je m'aperçoit que j'ai assez de mal à bien comprendre les bibrairies d'openoffice (com.sun.star. etc). Il y a un tutorial qlq part ? Peux-tu me donner qlq règles pour bien comprendre?
Je te remercie d'avance.
J'ai besoin
cpf2006 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS WINDOWSF.A.Qs WINDOWSTUTORIELS WINDOWSLIVRES WINDOWS

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Autres Logiciels > OpenOffice



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide