Code Vba

Fermé
brahmi - Modifié le 4 mars 2020 à 17:39
Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 - 5 mars 2020 à 12:55
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é
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:

2 réponses

yg_be Messages postés 23233 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 septembre 2024 Ambassadeur 1 538
4 mars 2020 à 17:43
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.
0
bonjour

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
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778 > brahmi
Modifié le 5 mars 2020 à 09:34
Bonjour,

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
0
Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 919
5 mars 2020 à 10:16
Bonjour

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.
0
Bonjour Mr

Merci pour votre aide ça va simplifier mieux la formule.
si vous avez le code me le communiquer .
0
Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 919 > brahmi
5 mars 2020 à 12:55
Non, je ne fais pas de VBA.
Mais comme Patrice l'a dit, un code VBA qui copie colle une formule, ça n'a pas trop d'intêret.
0