[Résolu] [Calc] combobox liees dans boite de dialogue

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu] [Calc] combobox liees dans boite de dialogue

Messagepar kikoo74910 » 04 Déc 2021 11:59

Bonjour,

J'essaie d'adapter le supreme de code trouvé sur votre forum https://forum.openoffice.org/fr/forum/viewtopic.php?f=15&t=13602.
En effet, j'avais reussi à imbriquer quelques codes trouvés sur ce forum pour inserer du texte dans un tableau à l'aide d'une boite de dialogue et cela fonctionne. Cependant j'aimerais dans 2 combobox (en rouge dans le dialogue de mon fichier test) les liéer ensemble afin de simplifier grandement les possibilités de choix dans ma boite de dialogue.
resultat.png

Comme dit précédemement, je me suis inspiré du supreme de code en créant une feuille de données et definir les noms mais j'obtients des messages d'erreurs.
resultat.png

Le problème c'est que j'ai pas les compétences pour adapter mon code actuel avec celui du du supreme de code pour que cela fonctionne.
Il faudrait fusionner le code de mon fichier exemple:
Code : Tout sélectionner   AgrandirRéduire
Global Dialog5 As Object
 

Sub Dialogue_service

  Dim lesCellules As Object , Plage As Object
  Dim Cellule As Object
  Dim X As Long
 
 
  DialogLibraries.LoadLibrary( "Standard" )
  'Dialog1 est le nom de la Form (clic-droit sur l'objet / propriétés / onglet Général / Nom)
  oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog5 )
 
  'Indique la colonne A dans la feuille
  Colonne = ThisComponent.Sheets.getByName("minute meeting").Columns(0)
  Colonne1 = ThisComponent.Sheets.getByName("minute meeting").Columns(1)
  lesCellules = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
  lesCellules1 = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
  lesCellules.insertByName("",Colonne)
  lesCellules1.insertByName("",Colonne1)
 
  Plage = lesCellules.Cells.createEnumeration
  Plage1 = lesCellules1.Cells.createEnumeration
 
  'Boucle sur les cellules de la colonne A.
  While Plage.hasMoreElements
    Cellule = Plage.nextElement
 
    '--- Remplissage de la ListBox:
      'AddItem (Donnée à ajouter , Position dans ListBox )
      '0 correspond à la 1ere ligne de la ListBox
    oDialog1.getControl("ComboBox5").AddItem (Cellule.String, X )
    '-----------------------------
 
    X = X + 1
  Wend
 
  'Affiche la boîte de dialogue
  'oDialog1.Execute()
 
  While Plage1.hasMoreElements
    Cellule1 = Plage1.nextElement
 
    '--- Remplissage de la ListBox:
      'AddItem (Donnée à ajouter , Position dans ListBox )
      '0 correspond à la 1ere ligne de la ListBox
    oDialog1.getControl("ComboBox4").AddItem (Cellule1.String, X )
    '-----------------------------
 
    X = X + 1
  Wend
 
  'Affiche la boîte de dialogue
  'oDialog1.Execute()
 
 
 

dim   oCurseur As Object, oSh As Object
   Dim col As Integer, i As Integer, Validation As Integer
   Dim Lig As Long
   Dim Zone As Object, ZonesVides As Variant
   
   
   
   
     
     'Attribution des variables     
     Validation = com.sun.star.ui.dialogs.ExecutableDialogResults.OK     
     oDoc = ThisComponent
     

       
     'Recuperation et remplissage         
   oSh = oDoc.Sheets.getByName("MINUTE MEETING")
'   oCurseur = oSh.createCursor
'   oCurseur.GoToEndOfUsedArea(True)
'   DerLig = oCurseur.rangeAddress.endRow+1
   Zone = oSh.getCellRangeByName("N54:BQ1057")
   ZonesVides = Zone.queryEmptyCells.RangeAddresses
   Lig = ZonesVides(1).StartRow 'ZonesVides(0)est la Première zone Vide
   
   If oDialog1.Execute()  = Validation then     
   
      With oSh
         .getCellByPosition(13, Lig).String = oDialog1.getControl("ComboBox1").Text     
         .getCellByPosition(14, Lig).String = oDialog1.getControl("ComboBox2").Text
         .getCellByPosition(15, Lig).String = oDialog1.getControl("ComboBox3").Text
        .getCellByPosition(25, Lig).String = oDialog1.getControl("ComboBox4").Text
         .getCellByPosition(24, Lig).String = oDialog1.getControl("ComboBox5").Text
        .getCellByPosition(21, Lig).String = oDialog1.getControl("TextField5").Text
        .getCellByPosition(16 ,Lig).String = oDialog1.getControl("TextField1").Text     
        .getCellByPosition(68, Lig).String = oDialog1.getControl("TextField2").Text     
       
      End With
   
   End If

End Sub


avec le code du supreme:
Code : Tout sélectionner   AgrandirRéduire
REM  *****  BASIC  *****
Global oDoc as object, oDlg as object

Sub Main
   oDoc = ThisComponent
   oBib = oDoc.DialogLibraries.GetByName("Standard")
   zDlg = oBib.GetByName("Dialog5")
   oDlg = CreateUnoDialog(zDlg)
   aMarque = RecupMarque("A1:C1")
   RemplirListe("lMarque", aMarque)

   cOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK
   if oDlg.Execute = cOK then
      sRet = oDlg.getControl("lMarque").SelectedItem & " " & _
             oDlg.getControl("lModele").SelectedItem
      oDlg.dispose
      oDoc.CurrentSelection.String = sRet
   else
      exit Sub
   end if
   
End Sub

Sub RemplirListe(sListe, sTab)
   oListe = oDlg.getControl(sListe)
   oListe.Model.stringItemList = sTab
   oliste.selectItemPos(0, true)
End Sub

Function RecupMarque(sZone)
   oFeuil = oDoc.Sheets(1) ' La 1ere feuille est indexée à 0
   oPlage = oFeuil.getCellRangeByName(sZone)
   aTab = oPlage.DataArray
   nMax = UBound(aTab(0))
   Dim sTab(nMax)
   For i = 0 to nMax
      sTab(i) = aTab(0)(i)
   Next i
   RecupMarque = sTab
End function

Function RecupModele(sMarque)
   oPlages = oDoc.NamedRanges
   oPlage = oPlages.getByName("Z_" & sMarque).getReferredCells()
   aTab = oPlage.DataArray
   nMax = UBound(aTab)
   Dim sTab(nMax)
   For i = 0 to nMax
      if sTab(i)(0) = "" then exit for
      sTab(i) = aTab(i)(0)
   Next i
   RecupModele = sTab
End Function

Sub ChangeListe(oEvt)
   oSrc = oEvt.Source
   sMarque = oSrc.SelectedItem
   aModele = RecupModele(sMarque)      
   RemplirListe("lModele", aModele)
End Sub   



Ci-joint mon fichier exemple:
BOITE DIALOGUE.ods
(30.82 Kio) Téléchargé 24 fois


Pourriez-vous m'aidez svp?
Dernière édition par kikoo74910 le 08 Déc 2021 19:00, édité 3 fois.
Version: 7.1.7 ; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 03 Août 2012 10:45

Re: [Calc] combobox liees dans boite de dialogue

Messagepar Bidouille » 04 Déc 2021 13:31

Bonjour,

Pour être aidé efficacement par les bénévoles et surtout leur faire gagner du temps, veuillez fournir les éléments suivants :
  1. insérer dans le corps du message le code de la macro exposant le problème
  2. joindre un document explicatif intégrant cette macro avec les données de départ (feuille1) et le résultat à obtenir (feuille2)
  3. fournir un mode pas-à-pas permettant de reproduire ce qui a été fait ou ce que vous cherchez à faire pour arriver au problème
  4. ajouter des copies écran (situation avant / après) si cela permet de mieux comprendre
Merci de publier ces informations à la suite.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 10930
Inscrit le : 08 Nov 2005 17:23
Localisation : Caen, France

Re: [Calc] combobox liees dans boite de dialogue

Messagepar kikoo74910 » 04 Déc 2021 13:58

Bonjour,

Modifié, j'espère que cela est désormais plus claire.

Merci de votre aide.
Version: 7.1.7 ; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 03 Août 2012 10:45

Re: [Calc] combobox liees dans boite de dialogue

Messagepar Dolev » 04 Déc 2021 15:36

Bonjour,

Le suprême fonctionne avec des zones de liste.
Pourquoi utiliser des boîtes combinées ?
Elles n'ont logiquement pas les mêmes propriétés.
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 449
Inscrit le : 19 Août 2018 06:20

Re: [Calc] combobox liees dans boite de dialogue

Messagepar kikoo74910 » 04 Déc 2021 15:53

Bonjour,

N'étant pas expérimentée, j'avais choisie une combobox, mais je ne m'oppose pas à une listebox.
Version: 7.1.7 ; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 03 Août 2012 10:45

Re: [Calc] combobox liees dans boite de dialogue

Messagepar Dolev » 04 Déc 2021 15:58

kikoo74910 a écrit:mais je ne m'oppose pas à une listebox.

Dans ce cas, il faut refaire ton document avec les bons contrôles :lol:
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 449
Inscrit le : 19 Août 2018 06:20

Re: [Calc] combobox liees dans boite de dialogue

Messagepar kikoo74910 » 04 Déc 2021 18:47

Bonsoir,

J'ai remplacé les 2 combobox par 2 listbox.
exemple2.ods
(31.86 Kio) Téléchargé 21 fois


Par contre je n'arrive pas avoir de selection dans la listbox "sub service". J'ai pourtant bien crée les zones de noms Z_xxxxxxx
resultat.png
Version: 7.1.7 ; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 03 Août 2012 10:45

Re: [Calc] combobox liees dans boite de dialogue

Messagepar Noonours » 05 Déc 2021 01:44

Bonjour
kikoo74910 a écrit:Par contre je n'arrive pas avoir de selection dans la listbox "sub service". J'ai pourtant bien crée les zones de noms Z_xxxxxxx

Si tu décortiques le suprême de Dude, tu verras qu'Il faut assigner la macro "ChangeListe" à ta première ListBox.
Dans ton dialog5, onglet "Évènements" > "Exécuter l'action".

COOordialement,
Noonours plantigrade râleur

Pour obtenir la réponse la plus précise possible, N’HÉSITEZ SURTOUT PAS À JOINDRE UN FICHIER EN CLIQUANT SUR CE LIEN

LibO 7.1.8.1(x64) et AOO 4.1.11 sous Windows 10
LibO 6.1.6.3_M14 MIMO (obligation de version) sous Win 7
Avatar de l’utilisateur
Noonours
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 432
Inscrit le : 11 Mai 2013 01:11
Localisation : Aix en Provence

Re: [Calc] combobox liees dans boite de dialogue

Messagepar kikoo74910 » 05 Déc 2021 11:04

Bonjour,

Merci nounours, effectivement je n'avais pas vue.
Donc dans le fichier joint,la correction. Par contre je n'arrive pas a fusionner les 2 codes pour inserer mes donnéées dans le tableau.
dialogue .ods
(32.76 Kio) Téléchargé 19 fois
Version: 7.1.7 ; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 03 Août 2012 10:45

Re: [Calc] combobox liees dans boite de dialogue

Messagepar Dolev » 05 Déc 2021 11:41

Re,

kikoo74910 a écrit:Par contre je n'arrive pas a fusionner les 2 codes pour inserer mes donnéées dans le tableau.

Je ne vois plus trop le rapport avec le problème initial.

De quel code s'agit-il ?
Colle la macro dans un message.

Comment faut-il insérer les données ?
Donne des captures d'écran du résultat.
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 449
Inscrit le : 19 Août 2018 06:20

Re: [Calc] combobox liees dans boite de dialogue

Messagepar kikoo74910 » 05 Déc 2021 12:00

Bonjour,

Le problème c'est que je n'arrive pas inserer les données de la boite de dialogue dans le tableau car je ne sais pas combiner le code que j'avais initialement avec le code du supreme de code.
Le code que j'utilise actuellement et le code du supreme sont dans le premier message. Le résultat que je souhaite obtenir est le meme que dans le fichier du premier message mais avec des combobox ou listbox liées
Le code que j'utilise actuellement permet d'inserer dans le tableau ce qu'il y a dans la boite de dialogue mais celui-ci presente quelques problèmes quand à la multitude choix que je peux faire et le rend fastidieux . C'est pour cela que souhaite lier les box ensemble. Cela me permetterias de limiter les possibilités de choix et rendre la boite de dialogue beaucoup plus fonctionnelle.
Version: 7.1.7 ; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 03 Août 2012 10:45

Re: [Calc] combobox liees dans boite de dialogue

Messagepar Dolev » 05 Déc 2021 16:57

Et bien ton document est sans doute très clair pour toi mais il faudrait au minimum nous fournir un mode d'emploi.
Donc
Dolev a écrit:De quel code s'agit-il ?
Colle la macro dans un message.

Comment faut-il insérer les données ?
Donne des captures d'écran du résultat.
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 449
Inscrit le : 19 Août 2018 06:20

Re: [Calc] combobox liees dans boite de dialogue

Messagepar kikoo74910 » 05 Déc 2021 17:33

Bonjour,

Le code que j'utilise actuellement est
Code : Tout sélectionner   AgrandirRéduire
Global Dialog5 As Object


Sub Dialogue_service

  Dim lesCellules As Object , Plage As Object
  Dim Cellule As Object
  Dim X As Long


  DialogLibraries.LoadLibrary( "Standard" )
  'Dialog1 est le nom de la Form (clic-droit sur l'objet / propriétés / onglet Général / Nom)
  oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog5 )

  'Indique la colonne A dans la feuille
  Colonne = ThisComponent.Sheets.getByName("minute meeting").Columns(0)
  Colonne1 = ThisComponent.Sheets.getByName("minute meeting").Columns(1)
  lesCellules = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
  lesCellules1 = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
  lesCellules.insertByName("",Colonne)
  lesCellules1.insertByName("",Colonne1)

  Plage = lesCellules.Cells.createEnumeration
  Plage1 = lesCellules1.Cells.createEnumeration

  'Boucle sur les cellules de la colonne A.
  While Plage.hasMoreElements
    Cellule = Plage.nextElement

    '--- Remplissage de la ListBox:
      'AddItem (Donnée à ajouter , Position dans ListBox )
      '0 correspond à la 1ere ligne de la ListBox
    oDialog1.getControl("ComboBox5").AddItem (Cellule.String, X )
    '-----------------------------

    X = X + 1
  Wend

  'Affiche la boîte de dialogue
  'oDialog1.Execute()

  While Plage1.hasMoreElements
    Cellule1 = Plage1.nextElement

    '--- Remplissage de la ListBox:
      'AddItem (Donnée à ajouter , Position dans ListBox )
      '0 correspond à la 1ere ligne de la ListBox
    oDialog1.getControl("ComboBox4").AddItem (Cellule1.String, X )
    '-----------------------------

    X = X + 1
  Wend

  'Affiche la boîte de dialogue
  'oDialog1.Execute()




dim   oCurseur As Object, oSh As Object
   Dim col As Integer, i As Integer, Validation As Integer
   Dim Lig As Long
   Dim Zone As Object, ZonesVides As Variant
   
   
   
   
     
     'Attribution des variables     
     Validation = com.sun.star.ui.dialogs.ExecutableDialogResults.OK     
     oDoc = ThisComponent
     

       
     'Recuperation et remplissage         
   oSh = oDoc.Sheets.getByName("MINUTE MEETING")
'   oCurseur = oSh.createCursor
'   oCurseur.GoToEndOfUsedArea(True)
'   DerLig = oCurseur.rangeAddress.endRow+1
   Zone = oSh.getCellRangeByName("N54:BQ1057")
   ZonesVides = Zone.queryEmptyCells.RangeAddresses
   Lig = ZonesVides(1).StartRow 'ZonesVides(0)est la Première zone Vide
   
   If oDialog1.Execute()  = Validation then     
   
      With oSh
         .getCellByPosition(13, Lig).String = oDialog1.getControl("ComboBox1").Text     
         .getCellByPosition(14, Lig).String = oDialog1.getControl("ComboBox2").Text
         .getCellByPosition(15, Lig).String = oDialog1.getControl("ComboBox3").Text
        .getCellByPosition(25, Lig).String = oDialog1.getControl("ComboBox4").Text
         .getCellByPosition(24, Lig).String = oDialog1.getControl("ComboBox5").Text
        .getCellByPosition(21, Lig).String = oDialog1.getControl("TextField5").Text
        .getCellByPosition(16 ,Lig).String = oDialog1.getControl("TextField1").Text     
        .getCellByPosition(68, Lig).String = oDialog1.getControl("TextField2").Text     
       
      End With
   
   End If

End Sub


Et fonctionne avec le fichier suivant:
BOITE DIALOGUE.ods
(30.82 Kio) Téléchargé 18 fois


Il permet que losque que j'insère les données suivantes:
DIALOGUE.png


Cela donne:
RESULTAT.png


Mais moi, j'aimerais que cela fonctionne avec les listebox liés mais cela ne fonctionne pas (pas de collage de texte dans le tableau) car il faudrait le fusionner avec le supreme:
Code : Tout sélectionner   AgrandirRéduire
REM  *****  BASIC  *****
Global oDoc as object, oDlg as object

Sub Main
   oDoc = ThisComponent
   oBib = oDoc.DialogLibraries.GetByName("Standard")
   zDlg = oBib.GetByName("Dialog5")
   oDlg = CreateUnoDialog(zDlg)
   aMarque = RecupMarque("A1:C1")
   RemplirListe("lMarque", aMarque)

   cOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK
   if oDlg.Execute = cOK then
      sRet = oDlg.getControl("lMarque").SelectedItem & " " & _
             oDlg.getControl("lModele").SelectedItem
      oDlg.dispose
      oDoc.CurrentSelection.String = sRet
   else
      exit Sub
   end if
   
End Sub

Sub RemplirListe(sListe, sTab)
   oListe = oDlg.getControl(sListe)
   oListe.Model.stringItemList = sTab
   oliste.selectItemPos(0, true)
End Sub

Function RecupMarque(sZone)
   oFeuil = oDoc.Sheets(1) ' La 1ere feuille est indexée à 0
   oPlage = oFeuil.getCellRangeByName(sZone)
   aTab = oPlage.DataArray
   nMax = UBound(aTab(0))
   Dim sTab(nMax)
   For i = 0 to nMax
      sTab(i) = aTab(0)(i)
   Next i
   RecupMarque = sTab
End function

Function RecupModele(sMarque)
   oPlages = oDoc.NamedRanges
   oPlage = oPlages.getByName("Z_" & sMarque).getReferredCells()
   aTab = oPlage.DataArray
   nMax = UBound(aTab)
   Dim sTab(nMax)
   For i = 0 to nMax
      if sTab(i)(0) = "" then exit for
      sTab(i) = aTab(i)(0)
   Next i
   RecupModele = sTab
End Function

Sub ChangeListe(oEvt)
   oSrc = oEvt.Source
   sMarque = oSrc.SelectedItem
   aModele = RecupModele(sMarque)     
   RemplirListe("lModele", aModele)
End Sub   


avec le code de mon fichier actuel:
Code : Tout sélectionner   AgrandirRéduire
Global Dialog5 As Object


Sub Dialogue_service

  Dim lesCellules As Object , Plage As Object
  Dim Cellule As Object
  Dim X As Long


  DialogLibraries.LoadLibrary( "Standard" )
  'Dialog1 est le nom de la Form (clic-droit sur l'objet / propriétés / onglet Général / Nom)
  oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog5 )

  'Indique la colonne A dans la feuille
  Colonne = ThisComponent.Sheets.getByName("minute meeting").Columns(0)
  Colonne1 = ThisComponent.Sheets.getByName("minute meeting").Columns(1)
  lesCellules = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
  lesCellules1 = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
  lesCellules.insertByName("",Colonne)
  lesCellules1.insertByName("",Colonne1)

  Plage = lesCellules.Cells.createEnumeration
  Plage1 = lesCellules1.Cells.createEnumeration

  'Boucle sur les cellules de la colonne A.
  While Plage.hasMoreElements
    Cellule = Plage.nextElement

    '--- Remplissage de la ListBox:
      'AddItem (Donnée à ajouter , Position dans ListBox )
      '0 correspond à la 1ere ligne de la ListBox
    oDialog1.getControl("ComboBox5").AddItem (Cellule.String, X )
    '-----------------------------

    X = X + 1
  Wend

  'Affiche la boîte de dialogue
  'oDialog1.Execute()

  While Plage1.hasMoreElements
    Cellule1 = Plage1.nextElement

    '--- Remplissage de la ListBox:
      'AddItem (Donnée à ajouter , Position dans ListBox )
      '0 correspond à la 1ere ligne de la ListBox
    oDialog1.getControl("ComboBox4").AddItem (Cellule1.String, X )
    '-----------------------------

    X = X + 1
  Wend

  'Affiche la boîte de dialogue
  'oDialog1.Execute()




dim   oCurseur As Object, oSh As Object
   Dim col As Integer, i As Integer, Validation As Integer
   Dim Lig As Long
   Dim Zone As Object, ZonesVides As Variant
   
   
   
   
     
     'Attribution des variables     
     Validation = com.sun.star.ui.dialogs.ExecutableDialogResults.OK     
     oDoc = ThisComponent
     

       
     'Recuperation et remplissage         
   oSh = oDoc.Sheets.getByName("MINUTE MEETING")
'   oCurseur = oSh.createCursor
'   oCurseur.GoToEndOfUsedArea(True)
'   DerLig = oCurseur.rangeAddress.endRow+1
   Zone = oSh.getCellRangeByName("N54:BQ1057")
   ZonesVides = Zone.queryEmptyCells.RangeAddresses
   Lig = ZonesVides(1).StartRow 'ZonesVides(0)est la Première zone Vide
   
   If oDialog1.Execute()  = Validation then     
   
      With oSh
         .getCellByPosition(13, Lig).String = oDialog1.getControl("ComboBox1").Text     
         .getCellByPosition(14, Lig).String = oDialog1.getControl("ComboBox2").Text
         .getCellByPosition(15, Lig).String = oDialog1.getControl("ComboBox3").Text
        .getCellByPosition(25, Lig).String = oDialog1.getControl("ComboBox4").Text
         .getCellByPosition(24, Lig).String = oDialog1.getControl("ComboBox5").Text
        .getCellByPosition(21, Lig).String = oDialog1.getControl("TextField5").Text
        .getCellByPosition(16 ,Lig).String = oDialog1.getControl("TextField1").Text     
        .getCellByPosition(68, Lig).String = oDialog1.getControl("TextField2").Text     
       
      End With
   
   End If

End Sub


Encore merci de votre aide
Version: 7.1.7 ; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 03 Août 2012 10:45

Re: [Calc] combobox liees dans boite de dialogue

Messagepar Dolev » 05 Déc 2021 17:47

Euh comment veux-tu que cela fonctionne ?
Il n'existe pas de contrôle ComboBox puisque tu les as remplacé par des zones de liste. :roll:
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 449
Inscrit le : 19 Août 2018 06:20

Re: [Calc] combobox liees dans boite de dialogue

Messagepar kikoo74910 » 05 Déc 2021 19:51

Bonsoir,

Meme si je prends mon code d'origine:
Code : Tout sélectionner   AgrandirRéduire
Sub Dialogue_service

  Dim lesCellules As Object , Plage As Object
  Dim Cellule As Object
  Dim X As Long
 
 
  DialogLibraries.LoadLibrary( "Standard" )
  'Dialog1 est le nom de la Form (clic-droit sur l'objet / propriétés / onglet Général / Nom)
  oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog5 )
 
  'Indique la colonne A dans la feuille
  Colonne = ThisComponent.Sheets.getByName("minute meeting").Columns(0)
  Colonne1 = ThisComponent.Sheets.getByName("minute meeting").Columns(1)
  lesCellules = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
  lesCellules1 = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
  lesCellules.insertByName("",Colonne)
  lesCellules1.insertByName("",Colonne1)
 
  Plage = lesCellules.Cells.createEnumeration
  Plage1 = lesCellules1.Cells.createEnumeration
 
  'Boucle sur les cellules de la colonne A.
  While Plage.hasMoreElements
    Cellule = Plage.nextElement
 
    '--- Remplissage de la ListBox:
      'AddItem (Donnée à ajouter , Position dans ListBox )
      '0 correspond à la 1ere ligne de la ListBox
    oDialog1.getControl("ComboBox5").AddItem (Cellule.String, X )
    '-----------------------------
 
    X = X + 1
  Wend
 
  'Affiche la boîte de dialogue
  'oDialog1.Execute()
 
  While Plage1.hasMoreElements
    Cellule1 = Plage1.nextElement
 
    '--- Remplissage de la ListBox:
      'AddItem (Donnée à ajouter , Position dans ListBox )
      '0 correspond à la 1ere ligne de la ListBox
    oDialog1.getControl("ComboBox4").AddItem (Cellule1.String, X )
    '-----------------------------
 
    X = X + 1
  Wend
 
  'Affiche la boîte de dialogue
  'oDialog1.Execute()
 
 
 

dim   oCurseur As Object, oSh As Object
   Dim col As Integer, i As Integer, Validation As Integer
   Dim Lig As Long
   Dim Zone As Object, ZonesVides As Variant
   
   
   
   
     
     'Attribution des variables     
     Validation = com.sun.star.ui.dialogs.ExecutableDialogResults.OK     
     oDoc = ThisComponent
     

       
     'Recuperation et remplissage         
   oSh = oDoc.Sheets.getByName("MINUTE MEETING")
'   oCurseur = oSh.createCursor
'   oCurseur.GoToEndOfUsedArea(True)
'   DerLig = oCurseur.rangeAddress.endRow+1
   Zone = oSh.getCellRangeByName("N54:BQ1057")
   ZonesVides = Zone.queryEmptyCells.RangeAddresses
   Lig = ZonesVides(1).StartRow 'ZonesVides(0)est la Première zone Vide
   
   If oDialog1.Execute()  = Validation then     
   
      With oSh
         .getCellByPosition(13, Lig).String = oDialog1.getControl("ComboBox1").Text     
         .getCellByPosition(14, Lig).String = oDialog1.getControl("lMarque").Text
         .getCellByPosition(15, Lig).String = oDialog1.getControl("lModele").Text
        .getCellByPosition(25, Lig).String = oDialog1.getControl("ComboBox4").Text
         .getCellByPosition(24, Lig).String = oDialog1.getControl("ComboBox5").Text
        .getCellByPosition(21, Lig).String = oDialog1.getControl("TextField5").Text
        .getCellByPosition(16 ,Lig).String = oDialog1.getControl("TextField1").Text     
        .getCellByPosition(68, Lig).String = oDialog1.getControl("TextField2").Text     
       
      End With
   
   End If

End Sub


J'obtiens désormais une message depuis que j'ai remplace les 2 combobox par les 2 listbox
RESULTAT.png


exemple.ods
(33.75 Kio) Téléchargé 21 fois
Version: 7.1.7 ; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 03 Août 2012 10:45

Re: [Calc] combobox liees dans boite de dialogue

Messagepar Dolev » 05 Déc 2021 20:31

kikoo74910 a écrit:J'obtiens désormais une message depuis que j'ai remplace les 2 combobox par les 2 listbox

Normal puisque comme je te l'indique plus haut :
Dolev a écrit:Elles n'ont logiquement pas les mêmes propriétés.

Pour une zone de liste, c'est SelectedItem

Tu devrais installer XRay pour voir ce qu'il faut utiliser :
https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=3234
C'est l'outil indispensable quand on débute.
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre enthOOusiaste
Membre enthOOusiaste
 
Message(s) : 449
Inscrit le : 19 Août 2018 06:20

Re: [Calc] combobox liees dans boite de dialogue

Messagepar kikoo74910 » 08 Déc 2021 18:59

Merci Dolev. L objet initial de ma demande etant résolu et pour ne avoir de problème avec les modérateurs je clôture donc ce post. Je vais sans doute en ouvrir un autre pour l insertion de donnée dans le tableau.
Version: 7.1.7 ; windows 10(x64)
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 03 Août 2012 10:45


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 9 invité(s)