conversion formule excel en VBA

melie23

XLDnaute Nouveau
Bonjour à tous !

je suis en train de réaliser une macro et j'ai un soucis !!!
je voudrais appliquer cette formule :
=SI(ET(C26<0*(K26="ST"));"CHARGEMENT";SI(((C26>0)*(K26="RE")-(K26="A0")-(K26="A1")-(K26="B0")-(K26="B1")-(K26="C0")-(K26="C1")-(K26="F0")-(K26="F1")-(K26="E0")-(K26="E1"));"MISE EN RACK";SI(K26="RC";"RECEPTION";SI(ET(C26>0*(K26="ST"));"PREPARATION DE COMMANDE";""))))

J'ai tenté une traduction en VBA :

ActiveCell.Select
ActiveCell.FormulaR1C1 = _
"=IF(((RC[-4]>0)*(RC[4]=""RE"")-(RC[4]=""A0"")-(RC[4]=""A1"")-(RC[4]=""B0"")-(RC[4]=""B1"")-(RC[4]=""C0"")-(RC[4]=""C1"")-(RC[4]=""F0"")-(RC[4]=""F1"")-(RC[4]=""E0"")-(RC[4]=""E1"")),""MISE EN RACK"","""")"
ActiveCell.Offset(1, 0).Range("A1").Select



ActiveCell.FormulaR1C1 = "=IF(RC[4]=""RC"",""RECEPTION"","""")"
ActiveCell.Offset(1, 0).Range("A1").Select


ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-4]<0*(RC[4]=""ST"")),""CHARGEMENT"","""")"
ActiveCell.Offset(1, 0).Range("A1").Select

ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-4]>0*(RC[4]=""ST"")),""PREPARATION DE COMMANDE"","""")"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

Mon problème : je veux que ces 4 formules soient appliquées dans la même cellule et actuellement seule la 1ère formule (chargement) fonctionne lorsque j'exécute ma macro.

Si vous avez besoin de plus d'info dite le moi !
Merci d'avance
 

tchangy71

XLDnaute Occasionnel
Re : conversion formule excel en VBA

Bonjour je ne suis pas sûre de moi mais tu peux peut être essayer ça :
ActiveCell.FormulaR1C1 = _
"=IF(AND(RC<0*(RC[8]=""ST"")),""CHARGEMENT"",IF(((RC>0)* (RC[8]=""RE"")-(RC[8]=""A0"")-(RC[8]=""A1"")-(RC[8]=""B0"")-(RC[8]=""B1"")-(RC[8]=""C0"")-(RC[8]=""C1"")-(RC[8]=""F0"")-(RC[8]=""F1"")-(RC[8]=""E0"")-(RC[8]=""E1"")),""MISE EN RACK"",IF(RC[8]=""RC"",""RECEPTION"",IF(AND(RC>0*(RC[8]=""ST "")),""PREPARATION DE COMMANDE"",""""))))"
Range("C26").Select
 

tchangy71

XLDnaute Occasionnel
Re : conversion formule excel en VBA

En faite j'ai utilisé l'enregistreur de macro. Je ne me sers que de ça pour convertir mes formules excel en vba. Lance l'enregistreur et fais manuellement (copier coller de la formule) ensuite récupère le code vba. Je n'ai jamais eu de problème. Ca devrait marcher !!
 

melie23

XLDnaute Nouveau
Re : conversion formule excel en VBA

Après quelques manip' de ta solution :

ActiveCell.FormulaR1C1 = _
"=IF(AND(RC[-4]<0*(RC[4]=""ST"")),""CHARGEMENT"",IF(((RC[-4]>0)* (RC[4]=""RE"")-(RC[4]=""A0"")-(RC[4]=""A1"")-(RC[4]=""B0"")-(RC[4]=""B1"")-(RC[4]=""C0"")-(RC[4]=""C1"")-(RC[4]=""F0"")-(RC[4]=""F1"")-(RC[4]=""E0"")-(RC[4]=""E1"")),""MISE EN RACK"",IF(RC[4]=""RC"",""RECEPTION"",IF(AND(RC[-4]>0*(RC[4]=""ST "")),""PREPARATION DE COMMANDE"",""""))))"

ça fonctionne, il me manque juste le language VBA pour "tirer" cette formule dans toute ma colonne G
 

tchangy71

XLDnaute Occasionnel
Re : conversion formule excel en VBA

Je peux te donner un indice il faut que tu recherche sur google l'utilisation de AutoFill
Exemple d'utilisation dans mon cas :
Cells(ligne_ecriture, 4).AutoFill Range(Cells(ligne_ecriture, 4), Cells(ligne_ecriture, 7)) 'étirer la cel (ligne_ecriture, 4) sur une même ligne
Range(Cells(ligne_ecriture, 4), Cells(ligne_ecriture, 7)).AutoFill Range(Cells(ligne_ecriture, 4), Cells(ligne_ecriture + 200, 7))
'étirer le Range(Cells(ligne_ecriture, 4), Cells(ligne_ecriture, 7) sur les lignes dessous
 

Statistiques des forums

Discussions
312 304
Messages
2 087 067
Membres
103 452
dernier inscrit
SOOSOKA