J'essaie d'adapter le supreme de code trouvé sur votre forum https://forum.openoffice.org/fr/forum/v ... 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. 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. 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
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
Code : Tout sélectionner
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: Pourriez-vous m'aidez svp?