convertir formule en code vba

Accueil – Le CFO masqué Forums Excel convertir formule en code vba

  • Ce sujet contient 4 réponses, 4 participants et a été mis à jour pour la dernière fois par Axel, le il y a 4 années et 4 mois.
5 sujets de 1 à 5 (sur un total de 5)
  • Auteur
    Articles
  • #59250
    cavila
    Participant

    bonjour tt le monde je cherche a savoir si y possibilité de convertir ces formule en vba ou une autre manier de les accélérés au moment du calcule elles me permit d’affiche les résultat suivant les sorties des produits avec les quantités les prix et selon leur catégorie selon la date inséré dans(A6) et voila exemple de formule utiliser dans le tableau AGRO:
    1/pour affiche les articles son doublons dans (A17) Voila la formule

    =INDEX(Mouvement!$F$1:$F$9959;MIN(SI((Mouvement!$O$7:$O$9959=”Agro”)*(Mouvement!$C$7:$C$9959=$A$6)*(NB.SI(A$16:A16;Mouvement!$F$7:$F$9959)=0);LIGNE(Mouvement!$F$7:$F$9959))))&””

    2/pour affiche les quantités dans (B17)Voila la formule

    =SI($A17=””;””;SOMMEPROD((Mouvement!$F$7:$F$9949=$A17)*(Mouvement!$C$7:$C$9949=$A$6)*(Mouvement!$G$7:$G$9949)*(Mouvement!$B$7:$B$9949=”sortie”)))

    3/pour affiche les PRIX dans (C17)Voila la formule

    =SI($A17=””;””;RECHERCHEV($A17;Mouvement!$F$7:$H$9985;3;0))

    le même principe avec le tableau Légumes et….:
    1/pour affiche les articles son doublons dans (G17) Voila la formule
    =INDEX(Mouvement!$F$1:$F$9985;MIN(SI((Mouvement!$O$7:$O$9985=”Legumes”)*(Mouvement!$C$7:$C$9985=$A$6)*(NB.SI(G$16:G16;Mouvement!$F$7:$F$9985)=0);LIGNE(Mouvement!$F$7:$F$9985))))&””

    2/pour affiche les quantités dans (H17)Voila la formule

    =SI(G17=””;””;SOMMEPROD((Mouvement!$F$7:$F$9948=$G17)*(Mouvement!$C$7:$C$9948=$A$6)*(Mouvement!B6:B9947=”Sortie”)*(Mouvement!$G$7:$G$9948)))

    merci et je vous joint mon classeur

    • Ce sujet a été modifié le il y a 4 années et 4 mois par cavila.
    #59255
    Stéphane Lorin
    Participant

    Bonjour
    Difficile de vous aider sans votre fichier
    La liste sans doublon peux-être obtenue facilement avec un tableau croisé en ajoutant un segment pour choisir la date.
    Powerquery pourrait être également très utile.
    SOMME.SI.ENS remplace souvent avantageusement SOMMEPROD depuis plusieurs versions d’Excel
    les fonctions tableaux sont utiles pour éviter les plages du type $C$7:$C$9948

    Sinon dans votre première formule pour identifier les valeur sans doublon, il est étonnant que votre INDEX commence en ligne 1 mais que les autres fonctions commencent en ligne 7

    Cordialement
    Stéphane

    #59256
    Consultant No.24
    Participant

    Bonjour,

    Je ne reviendrais pas sur les bonnes réflexions que vous a proposé SL. Mais il est certains que INDEX sur près de 10000 lignes cela peut ralentir selon votre PC et surtout votre version d’Excel.

    Dans tous les cas, le VBA ne vous permettra pas d’aller plus vite, car ce dernier ne fait qu’utiliser des fonctionnalités d’Excel sans intervention manuel.

    J’aurais plutôt tendance à utiliser les tableaux et PowerQuery.
    Cordialement
    Cathy

    #59266
    cavila
    Participant

    bonjour SL désolie je n’arrive pas a joindre le fichier pour l INDEX qui commence par la ligne 1 et les autres fonctions commencent en ligne 7 le bute et d”afficher rien dans les cellule des tableaux si y a pas de sortie de la date indique dans (A6)(pour ligne 1 F1 =cellule vide dans l’ongle mouvement
    exmp.rar: Désolé, ce type de fichier n’est pas autorisé pour des raisons de sécurité.
    exmp.xlsm: Désolé, ce type de fichier n’est pas autorisé pour des raisons de sécurité.
    exmp.rar: Désolé, ce type de fichier n’est pas autorisé pour des raisons de sécurité.

    • Cette réponse a été modifiée le il y a 4 années et 4 mois par cavila.
    • Cette réponse a été modifiée le il y a 4 années et 4 mois par cavila.
    #59465
    Axel
    Participant

    Bonjour, je vous propose de copier la formule, activer enregistrer macro, coller la formule et arrêter l enregistrement. Puis changer les lignes des cells (ligneàmodifier, colonneàne pas toucher) faire une procédure qui commence de ligne debut à ligne fin. Ainsi la procédure donnera des valeurs. Il n y aura plus de formule.

5 sujets de 1 à 5 (sur un total de 5)
  • Vous devez être connecté pour répondre à ce sujet.