Macro pour executer une formule
Bonjour,
J'ai une formule répétitive dans mon fichier (SI(Z3<>1;"";SI((ET(OU(A3=$AJ$3;A3="");(L3-$AH$3)>=0;OU(P3="produit";P3="à compléter";P3="à produire")));"EDI";SI(ET(K3="MAL";($AH$3-L3)<=3;($AH$3-L3)>0;P3<>"produit";P3<>"inactif");"EDI";SI(Z3<>1;"";SI(ET(K3<>"MAL";N3<>"";($AH$3-L3)<=3;($AH$3-L3)>0;OU(P3="à produire";P3="à compléter"));"EDI REPPRISE";SI(ET(OU(A3=$AJ$3;A3="");3<($AH$3-L3);L3>=$AI$3;N3<>"";OU(P3="à produire";P3="à compléter"));"EDI REPRISE";SI(ET(N3="";(L3-$AI$3)>0;($AH$3-M3)<=3;OU(P3="à compléter";P3="à produire";P3="produit"));"V";"")))))))
j'ai essayé d'enregistrer une MACRO simple pour exécuter cette formule à chaque demande, mais j'ai un bug (apparemment la source de ce bug est la longueur de ma formule puisque lorsque j'ai utilisé une autre formule plus simple tout marche bien)
Est ce que quelqu'un peut me donner le bon code pour ce type de Macro sachant que le résultat doit être dans la colonne AA de mon fichier Excel ?
Merci d'avance
Je pense que le mieux est de vous joindre mon fichier avec mon besoin : en fait je voulais exécuter les formules suivantes :
Dans la colonne AA : SI(Z3<>1;"";SI((ET(OU(A3=$AJ$3;A3="");(L3-$AH$3)>=0;OU(P3="produit";P3="à compléter";P3="à produire")));"EDI";SI(ET(K3="MAL";($AH$3-L3)<=3;($AH$3-L3)>0;P3<>"produit";P3<>"inactif");"EDI";SI(Z3<>1;"";SI(ET(K3<>"MAL";N3<>"";($AH$3-L3)<=3;($AH$3-L3)>0;OU(P3="à produire";P3="à compléter"));"EDI REPPRISE";SI(ET(OU(A3=$AJ$3;A3="");3<($AH$3-L3);L3>=$AI$3;N3<>"";OU(P3="à produire";P3="à compléter"));"EDI REPRISE";SI(ET(N3="";(L3-$AI$3)>0;($AH$3-M3)<=3;OU(P3="à compléter";P3="à produire";P3="produit"));"V";"")))))))
Dans la colonne AE : SI(AA3="";"";SI(R3=$AK$3;"Vérifier la date fin de Subrogation";SI(ET(R3<>"";Y3=0);"A vérifier Subrogation de ce salarié";"")))
PS: je veux que ces formules s’exécutent suivant la longueur de mon fichier (nombre de lignes renseignés peut varier entre 5 et des milliers)
Pouvez vous me donner le bon code pour ma macro ?
Merci d'avance
A+
Bonjour. Bienvenue sur le Forum
1) J'ai modifié la formule
2) J'ai nommé chaque partie de la formule Formule1, Formule2, Formule3, Formule4
pour obtenir une formule finale reconstituée avec ces noms
A tester bien sur
En l'absence de noms prénoms , je suis parti avec comme base la colonne K
Cordialement
Bonjour Amadéus,
Merci beaucoup !!c'est génial
par contre, est ce que je peux l'intégrer à une autre MACRO dans un autre classeur ?
Lorsque je copie le code et je le colle dans l'autre classeur, ce ne marche pas
Peux-tu m'aider stp ?
merci
Bonjour
J'ai bien écris:
J'ai nommé chaque partie de la formule Formule1, Formule2, Formule3, Formule4
Sur ce nouveau classeur, il faut aussi copier ces noms et les formules qui sont nommées.
J'ai donc modifié le Code sur ce nouveau fichier pour intégrer la création des noms.
Sub Action()
Application.ScreenUpdating = False
ActiveWorkbook.Names.Add Name:="Formule1", RefersToR1C1:= _
"=AND(Feuil1!RC[-16]=""MAL"",(Feuil1!R3C34-Feuil1!RC[-15])<=3,(Feuil1!R3C34-Feuil1!RC[-15])>0,Feuil1!RC[-11]<>""produit"",Feuil1!RC[-11]<>""inactif"")"
ActiveWorkbook.Names.Add Name:="Formule2", RefersToR1C1:= _
"=AND(Feuil1!RC[-16]<>""MAL"",Feuil1!RC[-13]<>"""",(Feuil1!R3C34-Feuil1!RC[-15])<=3,(Feuil1!R3C34-Feuil1!RC[-15])>0,OR(Feuil1!RC[-11]=""à produire"",Feuil1!RC[-11]=""à compléter""))"
ActiveWorkbook.Names.Add Name:="Formule3", RefersToR1C1:= _
"=AND(OR(Feuil1!RC[230]=Feuil1!R3C36,Feuil1!RC[230]=""""),3<(Feuil1!R3C34-Feuil1!RC[-15]),Feuil1!RC[-15]>=Feuil1!R3C35,Feuil1!RC[-13]<>"""",OR(Feuil1!RC[-11]=""à produire"",Feuil1!RC[-11]=""à compléter""))"
ActiveWorkbook.Names.Add Name:="Formule4", RefersToR1C1:= _
"=AND(Feuil1!RC[-13]="""",(Feuil1!RC[-15]-Feuil1!R3C35)>0,(Feuil1!R3C34-Feuil1!RC[-14])<=3,OR(Feuil1!RC[-11]=""à compléter"",Feuil1!RC[-11]=""à produire"",Feuil1!RC[-11]=""produit""))"
Range("K3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Offset(0, 16).Select
Selection.FormulaR1C1 = _
"=IF(RC[-1]<>1,"""",IF(Formule1,""EDI"",IF(Formule2,""EDI REPPRISE""," & Chr(10) & "IF(Formule3,""EDI REPRISE""," & Chr(10) & "IF(Formule4,""V"","""")))))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.Offset(0, 4).Select
Selection.FormulaR1C1 = _
"=IF(RC[-4]="""","""",IF(RC[-13]=R3C37,""Vérifier la date fin de Subrogation"",IF(AND(RC[-13]<>"""",RC[-6]=0),""A vérifier Subrogation de ce salarié"","""")))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Select
End SubCordialement
Bonjour,
Merci beaucoup pour ton retour, mais je n'y arrive pas à faire fonctionner ta Macro dans un autre classeur qui contient déjà une autre MACRO
Je t'envoi un exemple de mon classeur, peux-tu stp mettre la Macro "Action" dans ce classeur ?
Merci d'avance
Bonjour
Dans le premier classeur, la Feuille est Feuil1, dans ce dernier, elle s'appelle Exemple
La commande Rechercher-Remplacer appliquée au code devrait résoudre le problème
Cordialement
Bonjour Amadéus,
Je reviens vers toi concernant la Macro :En fait je viens de détecter un écart entre le résultat donné par la Macro et celui par mes formules (Colonne AA)
Tu trouveras ci-joint le fichier pour monter l'écart :
dans la colonne AA, le résultat donné par la Macro et dans la colonne AB le résultat de la formule suivante (Colonne AA3) :
SI(Z3<>1;"";SI((ET(OU(A3=$AJ$3;A3="");(L3-$AH$3)>=0;OU(P3="produit";P3="à compléter";P3="à produire")));"EDI";SI(ET(K3="MAL";($AH$3-L3)<=3;($AH$3-L3)>0;P3<>"produit";P3<>"inactif");"EDI";SI(ET(OU(A3=$AJ$3;A3="");($AH$3-L3)>3;(L3-$AI$3)>=0;N3<>"";OU(P3="à produire";P3="à compléter"));"EDI REPRISE";SI(ET(N3="";(L3-$AI$3)>0;($AH$3-M3)<=3;M3<$AK$3;OU(P3="à compléter";P3="à produire";P3="produit"));"V";"")))))
Peux-tu jeter un coup d'oeil pour voir ce qui ne marche pas ?
un grand merci pour tes efforts
A+