Python : Stipulez le NOM de la colonne avec excelwriter

Résolu
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

  1. Contributeur
    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"?
    1. 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….
      1. Contributeur
        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.
    2. 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
      1. Contributeur
        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.
    3. 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 ….
      1. Contributeur
        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
                                          })
        
    4. Un grand merci pour ta solution @yg_be.

      C'était juste cela que je voulais faire et ça marche impeccablement.
      1. Contributeur
        Parfait! Peux-tu alors marquer la discussion comme résolue?