Python : Stipulez le NOM de la colonne avec excelwriter

Résolu/Fermé
Gpep_3923 Messages postés 7 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 2 mai 2022 - Modifié le 29 avril 2022 à 18:05
yg_be Messages postés 23313 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 - 2 mai 2022 à 13:29
Bonjour la communauté.

Je m'adresse à vous car je suis bloqué sur quelque chose qui semble simple mais qui me pose beaucoup de problèmes.

Après mon traitement dans python je génère le résultat dans un fichier excel. J'utilise donc la librairie excelwriter.

Je voudrais pouvoir ajouter un format via conditional_format mais en spécifiant le nom de la colonne (et non pas via la position où elle se trouve ==> "N" dans ce cas) :

Voici le code :

  
worksheet.conditional_format("$N$1:$N$%d" % (number_rows),
                                 {"type": "formula",
                                  "criteria": '=INDIRECT("N"&ROW())="False"', 
                                  "format": header_format
                                  })    


Selon le projet, la colonne n'est pas toujours en N...

Comment puis-je faire ?

Je voudrais simplement référencer le nom de la colonne (au lieu du N)...

Avec toutes les recherches que j'ai faites, j'ai l'impression que cela n'existe pas... Je viens m'en assurer en vous le demandant, mais ce serait un énorme manquement dans python...

Bonne journée et merci d'avance à tous.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.



Configuration: Windows / Edge 100.0.1185.50

5 réponses

yg_be Messages postés 23313 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 Ambassadeur 1 552
29 avril 2022 à 18:02
bonjour,
Qu'appelles-tu "nom" d'une colonne dans une feuille Excel?
A ma connaissance, cela n'existe pas: ni les lignes, ni les colonnes n'ont de nom.
Peux-tu montrer à quoi ressemblerait ton code avec ce "nom"?
0
Gpep_3923 Messages postés 7 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 2 mai 2022 1
29 avril 2022 à 19:43
Je me rends compte que je me suis mal exprimé…

Je voulais dire le nom de l'en-tête de colonne :



Du coup le nom de l'entête de colonne dans ce cas est AO….
0
yg_be Messages postés 23313 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 1 552
29 avril 2022 à 20:57
C'est le contenu de la cellule en première ligne de la colonne?
A toi alors de programmer la recherche dans la première ligne, pour trouver où cette valeur est présente.
Comment réussis-tu dans Excel à "facilement" utiliser ce "nom" dans des formules?
Plutôt qu'un énorme manquement dans Python, cela me semble une énorme manquement dans ta logique d'utilisation de Excel.
0
Gpep_3923 Messages postés 7 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 2 mai 2022 1
Modifié le 30 avril 2022 à 11:34
Je pense que vous ne m'avez pas compris ... Je sais
comment encoder le nom de l'entête de la colonne via
une variable qui forcément possèdera le nom de
l'entête de la colonne ... Dans ce cas DO... ça c'est ok
! Ce n'est pas du tout ça mon soucis ! C'est juste que
je ne trouve pas la syntaxe pour écrire cette variable
qui va remplacer le N dans ce cas là. C'est
simplement ça que je demande. Mais si vous ne
savez pas comment ça fonctionne ne vous inquiétez
pas ce n'est pas grave. Merci
0
yg_be Messages postés 23313 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 1 552
30 avril 2022 à 11:49
Si tu as une variable qui contient "DO", il faut que le programme cherche dans quelle colonne se trouve cette valeur.
Cela te donnera une autre variable avec la position de cette colonne ("O").
Tu utiliseras ensuite cette dernière variable dans l'instruction.

Si tu programmais dans Excel (en VBA), tu ferais de même.
0
Gpep_3923 Messages postés 7 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 2 mai 2022 1
30 avril 2022 à 12:18
Oui mais là synthaxe avec ma variable à remplacer à la place du N ne fonctionnera pas puisque le N est entre guillemet … Comment adapter la syntaxe pour intégré cette variable qui contient la chaîne de caractère ….
0
yg_be Messages postés 23313 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 1 552
30 avril 2022 à 15:21
ainsi:
ncol= "N"
number_rows = 123
s1= "$" + ncol + "$1:$" + ncol + str(number_rows)
s2= '=INDIRECT("' + ncol + '"&ROW())="False"'
print("s1:",s1)
print("s2:",s2)
worksheet.conditional_format(s1 ,
                                 {"type": "formula",
                                  "criteria": s2, 
                                  "format": header_format
                                  })
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gpep_3923 Messages postés 7 Date d'inscription vendredi 27 mars 2020 Statut Membre Dernière intervention 2 mai 2022 1
2 mai 2022 à 11:58
Un grand merci pour ta solution @yg_be.

C'était juste cela que je voulais faire et ça marche impeccablement.
0
yg_be Messages postés 23313 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 novembre 2024 1 552
2 mai 2022 à 13:29
Parfait! Peux-tu alors marquer la discussion comme résolue?
1