Bonjour,
Remplace la dernière ligne, juste avant End Sub par :
oNom.addNewByName("Cable01" , "Feuille1.$B2:$C5" , celluleRef.CellAddress , 0 )
Après, NamedRanges correspond au conteneur qui stocke les noms de plages, et/ou formules nommées. Il est déjà affecté à la variable zonesNommees :
zonesNommees = oDoc.NamedRanges
ce n'est donc pas nécessaire de l'affecter une seconde fois à une autre variable :
oNom = ThisComponent.NamedRanges
du coup, ta dernière ligne peut aussi être :
zonesNommees.addNewByName("Cable01" , "Feuille1.$B2:$C5" , celluleRef.CellAddress , 0 )
Pour info, la programmation au pifomètre ça ne fonctionne jamais.
Edit :
idéalement, ton code devrait ressembler à cela :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Option Explicit
Sub Main
Dim oDoc As Object, celluleRef As Object, zoneDeNoms As Object
Dim maPlage As String, nomPlage As String
oDoc = Thiscomponent
celluleRef = oDoc.CurrentController.ActiveSheet.GetcellRangeByName("A1")
maPlage = "Feuille1.$B2:$C5" 'la zone à nommer
nomPlage = "Cable01" 'le nom de la zone à nommer
zoneDeNoms = oDoc.NamedRanges
If zoneDeNoms.hasByName(nomPlage) then 'si il existe déjà une zone de ce nom
zoneDeNoms.removeByName(nomPlage) 'alors on la supprime
end If
zoneDeNoms.addNewByName(nomPlage, maPlage ,celluleRef.CellAddress,0)
End Sub |
Il est nécessaire de s'assurer que le nom de plage à créer n'existe pas déjà, et le cas échéant le supprimer de la zone de noms, avant d'en créer un nouveau sinon c'est l'erreur assurée.
A+
Partager