Par défaut Récupérer la valeur d'une cellule Excel

Résolu/Fermé
subb73 Messages postés 11 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 27 décembre 2021 - 26 déc. 2021 à 22:53
 Steph2V - 9 sept. 2022 à 23:10
Bonjour à tous,

Je souhaite récupérer la valeur d'une cellule d'un fichier Excel à partir de son nom :


import openpyxl
wb=openpyxl.load_workbook('Test.xlsm')
my_range = wb.defined_names['NOM_CELLULE']

print (my_range.attr_text)


la variable "my_range.attr_text" me renvoie l'adresse de la cellule mais je souhaiterai récupérer la valeur de la cellule.

Si quelqu'un a une idée..
A voir également:

4 réponses

subb73 Messages postés 11 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 27 décembre 2021 1
27 déc. 2021 à 01:02
Le code suivant me donne bien la valeur de la cellule nommée "SECOND" ; ça marche mais j'imagine qu'il doit y avoir plus simple ...

import openpyxl
wb=openpyxl.load_workbook('Test.xlsm')

my_range = wb.defined_names['SECOND']
dests = my_range.destinations

cells = []
for title, coord in dests:
ws = wb[title]
cells.append(ws[coord])

print(wb['Feuil1'][coord].value)
1

bonjour, je n'ai pas trouvé mieux que ça (faire une fonction qui renvoie la valeur au pire) !

import openpyxl

wb = openpyxl.load_workbook('lefichier.xlsx')

dest = wb.defined_names['nomCellule'].destinations

for sheetName, coord in dest:

    print(wb[sheetName][coord].value)  

0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
26 déc. 2021 à 23:05
Bonjour,

L'idée... serait de regarder la documentation.
Par exemple on y trouve
from openpyxl import load_workbook
wb = load_workbook(filename = 'empty_book.xlsx')
sheet_ranges = wb['range names']
print(sheet_ranges['D18'].value)

https://openpyxl.readthedocs.io/en/stable/usage.html#read-an-existing-workbook
0
subb73 Messages postés 11 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 27 décembre 2021 1
27 déc. 2021 à 00:31
Hélas, je suis vraiment novice en Python.

Dans la ligne :

print(sheet_ranges['D18'].value)


j'aimerais remplacer "D18" par le nom de la cellule ou son adresse mais je ne trouve pas...
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
27 déc. 2021 à 00:34
Si, dans ton cas, la variable sheet_ranges n''est qu'une seule cellule...
Dans ce cas tu devrais pouvoir directement lui appliquer la méthode value.
my_range.value
0
subb73 Messages postés 11 Date d'inscription dimanche 3 janvier 2010 Statut Membre Dernière intervention 27 décembre 2021 1
27 déc. 2021 à 00:42
Lorsque je mets :

print (my_range.value)


j'obtiens l'adresse et pas la valeur :

[<Cell 'Feuil1'.I17>]
Feuil1!$I$17
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
27 déc. 2021 à 01:03
Apres une petite recherche.. essaie ce code (en remplaçant par tes variables)
wb = openpyxl.load_workbook(excel_file_name) 
rng = wb.get_named_range(name_of_range).destinations[0]
sheet = rng[0]
address = rng[1].replace('$','')
val = sheet[address].value
0