[Résolu][Calc]cibler derniere cellule par nom

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc]cibler derniere cellule par nom

Messagepar Whiteneck » 09 Mai 2018 12:59

Bonjour

Je cherche à cibler la dernière cellule renseignée dans une zone.
J'y arrive en déterminant la zone par sa position mai plus par son nom.
Je ne sais pas d'où vient mon erreur.

Si j'écris ceci ça fonctionne :
Code : Tout sélectionner   AgrandirRéduire
oZone = oFeuille.getCellRangeByPosition(1,10,1,20) 'Zone de destination

Mais je voudrais le remplacer par cela :
Code : Tout sélectionner   AgrandirRéduire
oZone = oFeuille.getCellRangeByName("Cellule_deb","Cellule_fin") 'Zone de destination


Ce que j'ai fait :
Code : Tout sélectionner   AgrandirRéduire
Sub Dernierecellule
Dim oDoc, ofeuille, Cellule as Object
Dim oZone as Variant
Dim LigneVide, colon as long

oDoc = ThisComponent
oFeuille = oDoc.CurrentController.ActiveSheet
oFeuille = thiscomponent.Sheets.getByName("Nature")    'Feuille source

colon = oFeuille.getCellRangeByName("Cellule_deb").CellAddress.Column

oZone = oFeuille.getCellRangeByPosition(1,10,1,20) 'Zone de destination
'C'est ici que ça coince !
'oZone = oFeuille.getCellRangeByName("Cellule_deb","Cellule_fin") 'Zone de destination

LigneVide = oZone.QueryEmptyCells.RangeAddresses(0).StartRow
Cellule = oFeuille.getCellByPosition(colon, LigneVide-1)

Msgbox(Cellule.string)
end sub


Merci de votre aide :D
Pièces jointes
Dernierecellule.ods
(10.67 Kio) Téléchargé 12 fois
Dernière édition par Whiteneck le 09 Mai 2018 13:34, édité 1 fois.
LibreOffice Version: 6.0.6.2 (x64) / Windows 8.1
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 114
Inscrit le : 20 Jan 2013 12:19

Re: [Calc]cibler derniere cellule par nom

Messagepar Piaf » 09 Mai 2018 13:26

Bonjour
Tu peux tester
Code : Tout sélectionner   AgrandirRéduire
Sub Dernierecellule
Dim oDoc, ofeuille, Cellule as Object
Dim oZone as Variant
Dim LigneVide, colon as long
Dim deb as String, fin as String
   oDoc = ThisComponent
   oFeuille = oDoc.CurrentController.ActiveSheet
   oFeuille = thiscomponent.Sheets.getByName("Nature")    'Feuille source
   colon = oFeuille.getCellRangeByName("Cellule_deb").CellAddress.Column
   deb = Split(oFeuille.getCellRangeByName("Cellule_deb").AbsoluteName,".")(1)
   fin = Split(oFeuille.getCellRangeByName("Cellule_fin").AbsoluteName,".")(1)
   oZone = oFeuille.getCellRangeByName(deb & ":" & fin) 'Zone de destination
   LigneVide = oZone.QueryEmptyCells.RangeAddresses(0).StartRow
   Cellule = oFeuille.getCellByPosition(colon, LigneVide-1)
   Msgbox(Cellule.string)
end sub
A+
Libre Office Version: 6.0.6 et Apache OpenOffice 4.1.5 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5395
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Calc]cibler derniere cellule par nom

Messagepar Whiteneck » 09 Mai 2018 13:32

Merci beaucoup piaf (encore une fois), ça fonctionne très bien.
LibreOffice Version: 6.0.6.2 (x64) / Windows 8.1
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 114
Inscrit le : 20 Jan 2013 12:19

Re: [Résolu][Calc]cibler derniere cellule par nom

Messagepar Churay » 13 Mai 2018 03:20

Bonjour,

Un peu tardivement...

mais on peut faire un peu plus court....
Code : Tout sélectionner   AgrandirRéduire
Sub DerCell
Dim oDoc, ofeuille, Cellule as Object
Dim oZone as Variant
Dim LigneVide
Dim deb AS Long, fin  AS Long, Col AS Long
   oDoc = ThisComponent
   oFeuille = thiscomponent.Sheets.getByName("Nature")    'Feuille source
   col = oFeuille.getCellRangeByName("Cellule_deb").CellAddress.Column
   deb = oFeuille.getCellRangeByName("Cellule_deb").CellAddress.Row
   fin = oFeuille.getCellRangeByName("Cellule_fin").CellAddress.Row
   oZone = oFeuille.getCellRangeByPosition(Col,  deb, Col, fin) 'Zone de destination
   LigneVide = oZone.QueryEmptyCells.RangeAddresses(0).StartRow
   Cellule = oFeuille.getCellByPosition(col, LigneVide-1)
   Msgbox(Cellule.string, 32, "La dernière Cellule contient")
end sub
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
 
Message(s) : 2653
Inscrit le : 30 Avr 2009 05:54
Localisation : CATALUNYA

Re: [Résolu][Calc]cibler derniere cellule par nom

Messagepar Whiteneck » 28 Mai 2018 08:12

Un peu tardivement... Merci
LibreOffice Version: 6.0.6.2 (x64) / Windows 8.1
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 114
Inscrit le : 20 Jan 2013 12:19


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)