IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

POWER Discussion :

Power Query : optimisation code avec condition IF


Sujet :

POWER

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut Power Query : optimisation code avec condition IF
    Bonjour,

    j'utilise le code ci-après qui est fonctionnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    //Identification des éléments de l'actif circulant
    if (Text.Start(Text.From([Compte]),2)="33") and [Solde]<0 then "Actif Circulant" else 
    if(Text.Start(Text.From([Compte]),2)="39") and [Solde]>0 then "Actif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="40") and [Solde]<0 then "Actif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="41") and [Solde]<0 then "Actif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="42") and [Solde]<0 then "Actif Circulant" else 
    if(Text.Start(Text.From([Compte]),2)="43") and [Solde]<0 then "Actif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="44") and [Solde]<0 then "Actif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="45") and [Solde]<0 then "Actif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="46") and [Solde]<0 then "Actif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="47") and [Solde]<0 then "Actif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="48") and [Solde]<0 then "Actif Circulant"
     else
    if(Text.Start(Text.From([Compte]),3)="490") and [Solde]>0 then "Actif Circulant" else 
    if(Text.Start(Text.From([Compte]),3)="491") and [Solde]>0
    then "Actif Circulant" else 
    if(Text.Start(Text.From([Compte]),3)="497") and [Solde]>0
    then "Actif Circulant"
       else 
     
    //Identification des éléments du Passif Circulant
     
    if (Text.Start(Text.From([Compte]),2)="33") and [Solde]>0 then "Passif Circulant" else 
    if(Text.Start(Text.From([Compte]),2)="39") and [Solde]>0 then "Passif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="40") and [Solde]>0 then "Passif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="41") and [Solde]>0 then "Passif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="42") and [Solde]>0 then "Passif Circulant" else 
    if(Text.Start(Text.From([Compte]),2)="43") and [Solde]>0 then "Passif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="44") and [Solde]>0 then "Passif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="45") and [Solde]>0 then "Passif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="46") and [Solde]>0 then "Passif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="47") and [Solde]>0 then "Passif Circulant" else
    if(Text.Start(Text.From([Compte]),2)="48") and [Solde]>0 then "Passif Circulant"
     else
    if(Text.Start(Text.From([Compte]),3)="490") and [Solde]<0 then "Passif Circulant" else 
    if(Text.Start(Text.From([Compte]),3)="491") and [Solde]<0
    then "Passif Circulant" else 
    if(Text.Start(Text.From([Compte]),3)="497") and [Solde]< 0 then "Passif Circulant" else 
    if(Text.Start(Text.From([Compte]),3)="499") and [Solde]> 0 then "Passif Circulant" 
       else " "
    Auriez-vous une solution pour l'optimiser, car j'imagine que cela peut-être raccourci ?

    Merci d'avance
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    Bonjour,

    Une piste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Text.Contains("33-39-40-42-42-43-44-45-46-47-48-", Text.Start(Text.From([Compte]),2) & "-")> 0 and [Solde]<0 then "Actif Circulant" else
    Cordialement.

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 565
    Par défaut
    Bonjour

    Quelques autres pistes :
    • Soit créer un table des préfixes et croiser avec la table
    • Soit utiliser la conversion en nombre pour travailler sur des groupes :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if Number.From(Text.Start(Text.From([Compte]),2))>=39 and Number.From(Text.Start(Text.From([Compte]),2))<=48 then ...

  4. #4
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 291
    Par défaut
    Bonsoir
    Attention les lignes 2 et 24 sont identiques

    Sinon il est possible également de passer par une table de seuils code et montant
    Puis de faire l'union des deux tables, de trier par ordre croissant des codes et des montants.
    Ensuite il faut recopier vers le bas la rubrique.

    Stephane

  5. #5
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 291
    Par défaut
    En complément
    Toutes les conditions de 40 à 48 peuvent être regroupées puisqu'elles ont la même règle :
    Si commence par 4 et ne commence pas par 49 ...

    Stéphane

  6. #6
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut
    Bonsoir à tous,

    Tout d'abord je vous remercie pour les différentes propositions
    Je vais les tester toutes et vous revenir pour informer de la suite.

    encore

    Citation Envoyé par Raccourcix Voir le message
    Bonsoir
    Attention les lignes 2 et 24 sont identiques
    Stephane
    Bien vu
    Merci
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Malick,

    si j'ai bien compris:
    1. Créer une table des rubriques avec le type de compte (actif/passif);
    2. Dans Power Query, amener les comptes et les rubriques;
    3. Transformer N° de compte et rubriques en valeurs textuelles;
    4. Ajouter une colonne rubrique aux comptes pour extraire la rubrique;
    5. Fusionner les requêtes sur la colonne commune.


    Nom : 2022-04-04_085033.png
Affichages : 470
Taille : 206,8 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut Malick,

    si j'ai bien compris:
    1. Créer une table des rubriques avec le type de compte (actif/passif);
    Merci pour ton retour.

    Il manque une petite chose qui chamboule l'astuce en fait et c'est ce qui a suscité la question. En fait, Pour que le compte soit is en Actif circulant ou Passif circulant, il y a le solde du compte (positif ou négatif) ) à prendre en compte. Et suivant le solde, on affecte en Actif circulant ou passif circulant.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    A part pour les comptes d'attente (499), on laisse les comptes d'actif à l'actif et les comptes de passif au passif (dans le bilan belge, c'est comme cela qu'on faisait lorsque j'étais comptable). Et pour les comptes d'attente, un prof nous avait conseillé de créé deux comptes bilantaires, un à l'actif si total au débit, un au passif si total au crédit, et on passait l'écriture au moment de la clôture.


    Il faudrait voir ta table d'écritures pour mieux comprendre la conception du classeur. Pourrais-tu produire une copie d'écran?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut
    Salut,

    Citation Envoyé par Pierre Fauconnier Voir le message
    A part pour les comptes d'attente (499), on laisse les comptes d'actif à l'actif et les comptes de passif au passif (dans le bilan belge, c'est comme cela qu'on faisait lorsque j'étais comptable).
    C'est effectivement cela, parfaitement en phase avec toi ==> J'ai mélangé les explication je pense

    En fait, la gestion des positifs ou négatifs pour moi c'était de prendre en compte dans le traitement les soldes anormalement créditeurs ou bien anormalement débiteurs. Un compte passif qui se trouve avec un solde anormalement débiteur ne sera pas intégré dans la rubrique du Passif. ==> tu vois ce que je veux dire.

    Mais j'ai adopté la démarche que tu as proposée pour d'autres reportings, je vais la mettre en pratique pour ce cas-ci aussi.

    bien
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Malick Voir le message
    [...]
    Mais j'ai adopté la démarche que tu as proposée pour d'autres reportings, je vais la mettre en pratique pour ce cas-ci aussi.[...]
    Pour le fun, tu pourrais montrer ton tableau d'écritures ou ta balance (anomymisé(e), bien sûr).
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Pour le fun, tu pourrais montrer ton tableau d'écritures ou ta balance (anomymisé(e), bien sûr).
    Bien noté. Je prépare quelque chose et vous reviens
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  13. #13
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut
    Bonjour à tous,

    avec le tableau bien paramétré suivant le plan comptable, le croisement avec les comptes de la balance comptable permettent bien d'obtenir le résultat attendu.

    Merci beaucoup à tous pour l'intérêt porté à ma requête

    POWER QUERY, un outil à connaître et utiliser pour automatiser des tâches récurrentes.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation code avec boucle
    Par phileasdav dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/09/2018, 08h43
  2. Optimisation code avec une boucle For
    Par latour500 dans le forum jQuery
    Réponses: 7
    Dernier message: 11/04/2014, 15h02
  3. Optimiser code avec date
    Par kopouge dans le forum Macro
    Réponses: 3
    Dernier message: 07/06/2010, 11h56
  4. [XL-2003] Simplifier code avec condition
    Par AMO05 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/05/2009, 12h27
  5. Code avec condition "Or"
    Par jam92400 dans le forum Access
    Réponses: 2
    Dernier message: 12/02/2007, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo