[Calc] Convertir un nom de colonne en rang de colonne

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur : Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 14:42
Contact :

[Calc] Convertir un nom de colonne en rang de colonne

Message par bm92 »

Les méthodes .getCellRangeByPosition( ) et .getCellByPosition( ) utilisent les coordonnées X et Y de cellules.

Y est égal au numéro de ligne moins 1 (soit le rang de la ligne, en partant de zéro).

X est égal au rang de la colonne, en comptant depuis zéro pour la colonne A, ce qui oblige à compter sur ses doigts pour ne pas se tromper.
Ce serait plus clair si on pouvait désigner la colonne par son nom (colonne "M", colonne "BC").
C'est le but de cette fonction, qui renvoie l'index X correspondant au nom de la colonne:

Code : Tout sélectionner

Function indexColonne(col As String) As Long
Dim uneCellule As Object

uneCellule = thisComponent.Sheets(0).getCellRangeByName(col & "1")
indexColonne = uneCellule.CellAddress.Column
End Function
Exemple d'utilisation:

Code : Tout sélectionner

Dim maCellule As Object, mafeuille As Object
Dim x As Long, y As Long
maFeuille = thisComponent.Sheets.getByName("Feuille2")

' ici on va modifier 100 cellules de la colonne M
x = indexColonne("M")
for y = 1 to 100
  maCellule = maFeuille.getCellByPosition(x,y)
  maCellule.Value = 3.4*y
next
______
Bernard
Répondre