1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    mai 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : mai 2018
    Messages : 1
    Points : 1
    Points
    1

    Par défaut [calc] macro nommer plage de cellule

    Bonsoir,

    Habitué à travailler sous excel, je dois convertir un fichier contenant des macros sous calc, et cela me pose quelques problèmes.
    Je n'arrive notamment pas à nommer une plage de cellule. J'ai fait des tests avec ce que j'ai pu trouver sur le net, mais ça plante toujours.

    Je joins en PJ le fichier de test pour cette fonctionnalité.
    Quelqu'un peut-il m'aider ?
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    octobre 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : octobre 2016
    Messages : 32
    Points : 52
    Points
    52

    Par défaut

    Bonjour,

    Remplace la dernière ligne, juste avant End Sub par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zonesNommees = oDoc.NamedRanges
    ce n'est donc pas nécessaire de l'affecter une seconde fois à une autre variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oNom = ThisComponent.NamedRanges
    du coup, ta dernière ligne peut aussi être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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+

Discussions similaires

  1. [LibreOffice][Tableur] Macro Renommer Plage de cellules active
    Par Philallright dans le forum OpenOffice & LibreOffice
    Réponses: 11
    Dernier message: 18/10/2016, 09h19
  2. [OpenOffice][Tableur] [Macro] Fusionner une plage de cellule
    Par Jgotheboss dans le forum OpenOffice & LibreOffice
    Réponses: 5
    Dernier message: 26/06/2016, 18h41
  3. Réponses: 1
    Dernier message: 22/05/2015, 15h58
  4. appliquer une macro a une plage de cellule variable
    Par johndeuf dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/11/2006, 16h18
  5. Macro en fonction d'une sélection de plage de cellules.
    Par Labiche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/08/2006, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo