Problemes de formules dans une macro

Résolu
walyddu59 Messages postés 53 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 9 juin 2012 - 23 avril 2012 à 14:57
walyddu59 Messages postés 53 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 9 juin 2012 - 23 avril 2012 à 16:50
Bonjour ,

Je viens vous demandez votre aide car j'ai des problèmes de formules dans une macro pourtant quand je les tapes dans des cellules tout et ok , j'ai tapez d'autres formules dans ma macro tout et ok , je ne comprend pas pourquoi , j'ai pourtant bien traduit c'est formules pour ma macro les voici en espérant avoir une solution , merci . :

Code: Tout sélectionner
Range("AH2").Formula = "=IF(IS(IF(I2=" / ",0)>0,I2=I1)=TRUE,1,0)"
Range("AH2").AutoFill Destination:=Range("AH2:AH5535")

Range("AI2").Formula = "=IF(IS(IF(J2=" / ",0)>0,J2=J1)=TRUE,1,0)"
Range("AI2").AutoFill Destination:=Range("AI2:AI5535")

Range("AJ2").Formula = "=IF(IS(IF(K2=" / ",0)>0,K2=K1)=TRUE,1,0)"
Range("AJ2").AutoFill Destination:=Range("AJ2:AJ5535")

Range("AK2").Formula = "=IF(SUM(AH2:AJ2)=3,1,0)"
Range("AK2").AutoFill Destination:=Range("AK2:AK5535")

Range("AO2").Formula = "=IF(I2="a",1,if(I2="b",2,if(I2="c",3,if(I2="d",4,if(I2="e",5,if(I2="f",6,if(I2="g",7,0)))))))"
Range("AO2").AutoFill Destination:=Range("AO2:AO5535")

Range("AP2").Formula = "=IF(I2="h",8,if(I2="i",0,if(I2="j",9,if(I2="k",10,if(I2="l",11,if(I2="m",12,if(I2="n",13,0)))))))"
Range("AP2").AutoFill Destination:=Range("AP2:AP5535")


Range("AR2").Formula = "=IF(AK2>0,(AA2-AC1)*365+(AB2-AD1)*30,(AA2-AL2)*365+(AB2-AQ2)*30)"
Range("AR2").AutoFill Destination:=Range("AR2:AR5535")




Cordialement .

8 réponses

MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
23 avril 2012 à 15:20
Oups !!   Précision : il faut doubler les guillemets dans la formule.

Exemple d'une formule simple dans la cellule E3 :   =SI(D3="A";1;)

Dans la fenêtre d'exécution on obtient :   =IF(D3="A",1,)

Dans le code VBA cela se traduit par
[E3] = "=IF(D3=""A"",1,)"


___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 avril 2012 à 15:05
Bonjour,
Une formule set une chaîne de caractères :
On en prends une des tiennes :*
il te suffit de tenter voir ce qu'affiche :
MsgBox "=IF(IS(IF(I2=" / ",0)>0,I2=I1)=TRUE,1,0)"

Pour voir que tu es en erreur.
Que souhaiterais-tu donc que soit (la chaîne de caractères) cette formule ?
La réponse est dans la question
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
23 avril 2012 à 15:08
'jour ! Le plus simple pour t'en sortir seul et rapidement, tape une formule dans une cellule et
dès qu'elle est bonne, sélectionne d'abord la cellule puis dans la fenêtre Exécution de l'environnement VBA
tape ? activecell.formula et valide : tu n'auras plus qu'à recopier le résultat dans ton code ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 avril 2012 à 15:08
un indice : la gestion des guillemets "internes", pour " / "


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
walyddu59 Messages postés 53 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 9 juin 2012
23 avril 2012 à 15:17
salut merci pour vos reponses rapide , donc Ucfoutu j'ai bien fait ce que tu ma dit avec le msgbox mais elle m'affiche une erreur je vais essayer ta deuxieme solution , MarcPL je vais testé ta solution je te dit quoi , merci .

Cordialement .
0
walyddu59 Messages postés 53 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 9 juin 2012
23 avril 2012 à 15:32
oui cela se fait automatiquement quand j'enregistre la macro .
0
walyddu59 Messages postés 53 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 9 juin 2012
23 avril 2012 à 16:14
une dernière question comment enlever les #VALEUR! , le problem c'est qu'il ny a plus de valeur dans certaine cellule et la formule bloque .
0
walyddu59 Messages postés 53 Date d'inscription jeudi 29 mars 2012 Statut Membre Dernière intervention 9 juin 2012
23 avril 2012 à 16:50
J'ai trouver la solution donc je post il suffit d’insérer un code vba :

exemple avec ma formule 365*(AC4999-AA4999)+30*(AD4999-AB4999)+AF4999-AE4999

voici le code vba
=SI(ESTERREUR(TaFormule);"";Ta formule)


et voici le code avec la formule :
=SI(ESTERREUR(365*(AC4999-AA4999)+30*(AD4999-AB4999)+AF4999-AE4999);"";365*(AC4999-AA4999)+30*(AD4999-AB4999)+AF4999-AE4999)


Cordialement .
0
Rejoignez-nous