conversion formule excel en VBA

  • Initiateur de la discussion Initiateur de la discussion melie23
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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 !!
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
604
  • Question Question
XL pour MAC boucle couleur
Réponses
25
Affichages
1 K
Réponses
22
Affichages
3 K
Retour