Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

contenu de textfield vers une cellule


Sujet :

OpenOffice & LibreOffice

  1. #1
    Candidat au Club
    contenu de textfield vers une cellule
    Bonsoir,

    Tout d'abord je tenais à vous remercier pour ce que vous faites. Je ne suis pas un professionnel, mais j'aime le code est ce que ca ouvre comme perspectives
    J'ai quelques notions de C et de python. Je fais pas mal de choses sur tableur (excel et libreoffice). Je travaille de plus en plus sur libreoffice pour différentes raisons, mais j'avoue que pour la programmation, c'est plus long à prendre le pli que pour msoffice.

    Bref, le problème qui m'amène ici aujourd'hui, concerne la recuperation de données dans un formulaire afin d'alimenter une feuille de calcul. Très basique me direz-vous, mais apres avoir cherché 3 jours, je n'ai pas trouvé de réponse à mon problème. Que voici.

    Voici le bout de code qui me turlupine :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    Dim oDoc As Object, oSh As Object
     
    Sub remplissage
     
    	Dim oCurseur As Object, Dlg As Object 
    	Dim oText As String
    	Dim DerLig As Long
     
    	DialogLibraries.LoadLibrary("biblio")
      	Dlg = CreateUnoDialog(DialogLibraries.biblio.Dialog1)
     
    	oDoc = ThisComponent
    	oSh = oDoc.Sheets.getByName("Données")
    	oCurseur = oSh.createCursor
    	oCurseur.GoToEndOfUsedArea(True)
    	DerLig = oCurseur.rangeAddress.endRow+1
     
     REM oSh.getCellByPosition(0, DerLig).setString("essai")
     
            oText = Dlg.getControl("TextField1").Text
    	oSh.getCellByPosition(3,DerLig).String = oText
     
    End Sub


    ce sont les deux dernières lignes qui me pose problème, ça ne fonctionne pas :

    - quand je passe par une msgbox pour tester (msgbox(oText)), elle est vide
    - quand je mets un texte par defaut directement dans le controle textfield1, ca marche mais ca renvoie le texte par defaut
    - quand je remplace par la ligne en commentaire (REM ci dessus) ca fonctionne

    Je ne comprends pas pourquoi ca ne recupère pas ce qui est saisi dans le textfield, pas de message d'erreur, il ne reconnait simplement pas ce qui est saisi je pense.

    Pour info, cette routine est rattachée au bouton valider du formulaire dans executer l'action

    Si qq'un peut m'aider ca me rendra moins chèvre ...

    Par avance merci,

  2. #2
    Membre à l'essai
    Salut,

    Le problème vient de "Pour info, cette routine est rattachée au bouton valider du formulaire dans exécuter l'action".

    Quand tu cliques sur "valider" le code se déroule depuis le début et créer ton "Dlg as object" qui est donc effacé, recréé et vide (tu peux suivre ce qu'il y a dans tes variables avec le témoin )

    Il te faut 2 subs. Une pour l'ouverture ton dialog1, puis une pour l'action sur le bouton

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     Dim oDoc As Object, oSh As Object
    dim Dlg as object
     
    Sub ouverture 'Ouverture de ton Dialog1 (que tu peux rattacher à un bouton présent sur la feuille)
          DialogLibraries.LoadLibrary("Standard")
           bibli = DialogLibraries.GetByName("Standard") 
           Dlg = CreateUnoDialog(bibli.GetByName("Dialog1")) 
     
         Dlg.execute
     
     
    End sub
     
    Sub remplissage 'Lecture des données mises dans le Dialog et remplissage de ta feuille(a rattacher à ton bouton "valider" de la Dialog1)
     
    	Dim oCurseur As Object 
    	Dim oText As String
    	Dim DerLig As Long
     
     
     
    	oDoc = ThisComponent
    	oSh = oDoc.Sheets.getByName("Données")
    	oCurseur = oSh.createCursor
    	oCurseur.GoToEndOfUsedArea(True)
    	DerLig = oCurseur.rangeAddress.endRow+1
     
     REM oSh.getCellByPosition(0, DerLig).setString("essai")
     
         oText = Dlg.getControl("TextField1").text
    	oSh.getCellByPosition(3,DerLig).String = oText
     
    End Sub


    En espérant avoir répondu à ta question.

    Martin