Code Vba

brahmi -  
 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é
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
brahmi
 
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 8561 Date d'inscription   Statut Membre Dernière intervention   1 780 > brahmi
 
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
Utilisateur anonyme
 
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
brahmi
 
Bonjour Mr

Merci pour votre aide ça va simplifier mieux la formule.
si vous avez le code me le communiquer .
0
Utilisateur anonyme > brahmi
 
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