Je souhaite générer une liste et m'en servir de source pour une lise de validité en cellule C1.
La liste est générer automatiquement en récupérant la valeur des cellules C1 [44] si non vide, sachant que si une des cellules testées (C1, C45, C89…) est vide, alors les suivantes le seront.
En recherchant sur les fora j'ai pu faire ce code (je ne donne que la partie qui pose problème, le code complet étant bien trop imposant…) :
Code : Tout sélectionner
Dim Annee As String, strVal As String
Dim Fl As Object, ShCl As Object, cVal As Object
Set Fl = ShCl.getByName("Rapport")
strVal = Left(Annee, Len(Annee) – 3)
For i = 0 To maxMois - minMois +1 'De 0 à 3 dans l'exemple
If i > 0 Then
strVal = strVal & ";" & Fl.getCellRangeByName("C" & 44 * (i + 1) – 43).String
End If
Next i
MsgBox(strVal) 'Renvoi 2014;2014 - Mars;2014 - Février;2014 - Janvier
cVal = Fl.getCellRangeByName("C1").getPropertyValue("Validation")
With cVal
.IgnoreBlankCells = False
.setPropertyValue("ErrorAlertStyle" , com.sun.star.sheet.ValidationAlertStyle.STOP)
.setPropertyValue("Type", com.sun.star.sheet.ValidationType.LIST)
.setPropertyValue("Operator", com.sun.star.sheet.ConditionOperator.EQUAL)
.setPropertyValue("ShowErrorMessage", true)
.setPropertyValue("ErrorTitle", "Erreur de saisie")
.setPropertyValue("ErrorMessage", "Saisir uniquement une valeur de la liste")
.setPropertyValue("ShowList", com.sun.star.sheet.TableValidationVisibility.SORTEDASCENDING)
.setFormula1(strVal) 'Testé avec "" & strVal & "" sans plus de résultat
.setPropertyValue("formula2","0")
End With
Fl.getCellRangeByName("C1").setPropertyValue("Validation",cVal)
J'ai testé également en remplaçant :
Code : Tout sélectionner
strVal = strVal & ";" & Fl.getCellRangeByName("C" & 44 * (i + 1) – 43).String
Code : Tout sélectionner
strVal = strVal & Chr(13) & Fl.getCellRangeByName("C" & 44 * (i + 1) – 43).String
Je vous remercie de votre aide !