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 11 mois.
-
AuteurArticles
-
18 novembre 2019 à 19 h 23 min #59250cavilaParticipant
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
19 novembre 2019 à 3 h 15 min #59255Stéphane LorinParticipantBonjour
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$9948Sinon 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éphane19 novembre 2019 à 3 h 53 min #59256Consultant No.24ParticipantBonjour,
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
Cathy19 novembre 2019 à 11 h 24 min #59266cavilaParticipantbonjour 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é.27 novembre 2019 à 13 h 25 min #59465AxelParticipantBonjour, 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.
-
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.