Code Vba
brahmi
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
S'il vous plait je veut bien transformer la fonction logique suivante en code vba:
=SI(D4="Stock";SI(JOURSEM(SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+45)+ENT(45/5)))+B4+45)=1;SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+45)+ENT(45/5)))+B4+46;SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+45)+ENT(45/5)))+B4+45);SI(JOURSEM(SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+10)+ENT(10/5)))+B4+10)=1;SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+10)+ENT(10/5)))+B4+11;SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+10)+ENT(10/5)))+B4+10))
D4: nature commande stock ou urgente
U$4:U$96: colonne des jours fériés
B4: les dates des commandes placées
j'ai essayé avec ce code mais ça pas marché
Merci d'avance
S'il vous plait je veut bien transformer la fonction logique suivante en code vba:
=SI(D4="Stock";SI(JOURSEM(SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+45)+ENT(45/5)))+B4+45)=1;SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+45)+ENT(45/5)))+B4+46;SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+45)+ENT(45/5)))+B4+45);SI(JOURSEM(SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+10)+ENT(10/5)))+B4+10)=1;SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+10)+ENT(10/5)))+B4+11;SOMMEPROD((U$4:U$96>=B4)-(U$4:U$96>=(B4+10)+ENT(10/5)))+B4+10))
D4: nature commande stock ou urgente
U$4:U$96: colonne des jours fériés
B4: les dates des commandes placées
j'ai essayé avec ce code mais ça pas marché
While Cells(j, 1) <> ""
If Range("d" & j) = "Stock" Then
ActiveCell.FormulaR1C1 = _
"=IF(WEEKDAY(SUMPRODUCT((R4C[12]:R96C[12]>=RC[-7])-(R4C[12]:R96C[12]>=(RC[-7]+45)+INT(45/5)))+RC[-7]+45)=1,SUMPRODUCT((R4C[12]:R96C[12]>=RC[-7])-(R4C[12]:R96C[12]>=(RC[-7]+45)+INT(45/5)))+RC[-7]+46,SUMPRODUCT((R4C[12]:R96C[12]>=RC[-7])-(R4C[12]:R96C[12]>=(RC[-7]+45)+INT(45/5)))+RC[-7]+45))"
else
ActiveCell.FormulaR1C1 = _
"=IF(WEEKDAY(SUMPRODUCT((R4C[12]:R96C[12]>=RC[-7])-(R4C[12]:R96C[12]>= (RC[-7]+10)+INT(10/5)))+RC[-7]+10)=1,SUMPRODUCT((R4C[12]:R96C[12]>=RC[-7])-(R4C[12]:R96C[12]>=RC[-7]+10)+INT(10/5)))+RC[-7]+11,SUMPRODUCT((R4C[12]:R96C[12]>=RC[-7])-(R4C[12]:R96C[12]>=(RC[-7]+10)+INT(10/5)))+RC[-7]+10))"
endif
End If
j = j + 1
Wend
Merci d'avance
A voir également:
- Code Vba
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Scanner qr code pc - Guide
2 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 586
bonjour, pourquoi fais-tu cela?
tu ne nous montres qu'une partie de ton code.
il est recommandé de ne pas utiliser "active" et "select", donc pas non plus "activecell".
tu écris "cela ne marche pas", sans décrire ce qui se passe.
tu ne nous montres qu'une partie de ton code.
il est recommandé de ne pas utiliser "active" et "select", donc pas non plus "activecell".
tu écris "cela ne marche pas", sans décrire ce qui se passe.
Bonjour
une petite remarque, dans cet extrait
45/5 est une valeur fixe => 9. Ent(45/5) c'est donc toujours 9.
On a donc:
Que l'on peut réduire à
Et comme ce type de calcul se répète plusieurs fois dans ta formule, il y a moyen de simplifier un peu partout. Non seulement c'est plus lisible, mais moins y'a de calculs inutiles et plus ça se fait vite.
une petite remarque, dans cet extrait
(B4+45)+ENT(45/5)
45/5 est une valeur fixe => 9. Ent(45/5) c'est donc toujours 9.
On a donc:
(B4+45)+9
Que l'on peut réduire à
B4 + 53
Et comme ce type de calcul se répète plusieurs fois dans ta formule, il y a moyen de simplifier un peu partout. Non seulement c'est plus lisible, mais moins y'a de calculs inutiles et plus ça se fait vite.
Merci bien pour votre réponse je suis débutant en programmation, en excel la fonction marche bien, s'il vous plait aider moi à transformer la fonction excel en code vba excel.
le code voulu consiste à ajouter 45 jours ouvrables pour les commandes de stock et 10 jours ouvrables pour les commandes urgentes à une date en tenant compte des jours fériés sans que le dernier jour coïncide avec un dimanche ou un jour férié. ensuite étaler ce code le long de la table
En général, on utilise VBA quand on ne peut pas résoudre le problème avec Excel !
Si la formule marche bien, gardes la.
Si tu veux qu'elle "s'étale", utiliss un tableau structuré Excel
Ici un excellent cours VBA gratuit pour débutants :
http://bidou.ftp-developpez.com/Cours/VB/VB-excel2.pdf