1 pièce(s) jointe(s)
[BASIC] Macro pour modifier les propriétés de contrôle d'un formulaire
Bonjour,
dans une feuille CALC j'ai ajouté une "Zone de liste" (une liste déroulante qui permet de sélectionner un élément parmi plusieurs). Avec une macro je rajoute des éléments à la liste. Comment puis-je modifier la plage de cellule source avec ma macro ?
Ci-joint la capture d'écran correspondante. On y voit la zone de liste et ses propriétés ("Contrôle") ouvertes à l'onglet "Données" faisant apparaître la propriété "Plage de cellule source" ?
Merci pour votre aide
Pièce jointe 479345
Macro pour modifier les propriétés de contrôle d'un formulaire
Bonjour,
Pour pouvoir t'aider convenablement il aurait été utile de joindre ton fichier. S'il contient des données que tu ne veux pas faire voir il suffit de joindre ce fichier anonymisé avec des données bidons.
A défaut voici un exemple de code, qu'il faudra adapter.
Auparavant dans les propriétés du contrôle il ne faut rien mettre dans la zone "Plage de cellule source. (onglets données).
Code:
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 34 35 36
| Private tabNoms() As String
Sub ChargementListe()
Dim monCtrl As Object, vueCtrl As Object, lesFormulaires As Object, unFormulaire As Object
Dim oFeuille As Object
Dim sNom As String
oFeuille = ThisComponent.getSheets.getByName("Feuille1")
lesFormulaires = oFeuille.DrawPage.Forms
unFormulaire = lesFormulaires.getByName("Formulaire")
monCtrl = unFormulaire.getByName("MaListe")
vueCtrl = ThisComponent.CurrentController.getControl(monCtrl)
'J'efface l'ancienne liste du contrôle pour éviter que la nouvelle se rajoute à la suite de l'ancienne
Dim i As Integer, X As Integer
i = vueCtrl.getItemCount()
vueCtrl.RemoveItems( x - 1, i )
'Chargement liste à jour
Call RechargementListeNoms()
vueCtrl.addItems(tabNoms(),0)
End Sub
'Lit dans la colonne A les noms pour y rajouter éventuellement les nouveaux
Sub RechargementListeNoms()
Dim oFEuille As Object, oCell As Object
Dim i As Integer, f As Integer
f=0
oFeuille = ThisComponent.getSheets.getByName("Feuille1")
For i = 1 To 100
oCell = oFeuille.getCellRangeByName("A" & i)
If oCell.String <> "" Then
Redim preserve tabNoms(f)
tabNoms(f)= oCell.String
f=f+1
End If
Next i
End Sub |
Cordialement
Macro pour modifier les propriétés de contrôle d'un formulaire
Bonjour,
En effet j'ai du faire une erreur dans mon code. Par paresse j'ai fait un copier coller de ce code que j'utilise ailleurs dans mes tableurs. Et mon X ou x était à 1. Donc la raison du X-1 pour qu'il commence à l'élément 0
Content que cela a pu t'aider.
Cordialement