VBA - Problème de formule

Résolu
cs_Vincb9 Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 24 avril 2012 - 24 avril 2012 à 15:39
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 24 avril 2012 à 17:13
Bonjour,

Je chercher à inserer une formule dans une cellule car je veux qu'elle reste dans la cellule.

J'ai mis
calc = "(Y" & no_ligne & "*AK" & no_ligne & "+AG" & no_ligne & "*AC" & no_ligne & ")/AS" & no_ligne & ")"
Sheets("2").Cells(no_ligne, 49).Value = "=IF(" & calc & "<100 , 100, " & calc & ")"


Merci d'avance pour votre aide !

vince

13 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2012 à 16:40
Voici en tout état de cause le résultat en cellule cells(3,49) pour no_ligne = 3
=IF((Y3*AK3+AG3*AC3)/AS3)<100 , 100, (Y3*AK3+AG3*AC3)/AS3))

ce qui, transformé pour excel (formulalocal en français) donne:
=SI((Y3*AK3+AG3*AC3)/AS3)<100; 100; (Y3*AK3+AG3*AC3)/AS3))

qui est en erreur, y compris entré manuellement.


________________________
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2012 à 16:57
Pourquoi c'est en erreur ucfoutu ?


Par constat ! Je ne suis même pas allé plus loin, car là, c'est du Excel et plus du VBA
Entre cela manuellement et tu le constateras également (y compris si valeur dans AS3 pour éviter une division par 0)

________________________
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2012 à 17:13
et donc :
=SI((Y3*AK3+AG3*AC3)/AS3<100; 100; (Y3*AK3+AG3*AC3)/AS3)
au lieu de
=SI((Y3*AK3+AG3*AC3)/AS3)<100; 100; (Y3*AK3+AG3*AC3)/AS3))
Et donc : changer ta chaîne à la base en conséquence.
________________________
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
3
Genildf Messages postés 270 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 30 décembre 2015 1
24 avril 2012 à 16:04
J'ai aps trou compris mais je pense que ton erreur est la :

calc =  "(Y" & no_ligne & "*AK" & no_ligne & "+AG" & no_ligne & "*AC" & no_ligne & ")/AS" & no_ligne & ")" &
Sheets("2").Cells(no_ligne, 49).Value & "=IF(" & calc & "<100 , 100, " & calc & ")"


les & autour de
Sheets("2").Cells(no_ligne, 49).Value
et le signe = qui n'a rien a faire la
0

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

Posez votre question
cs_Vincb9 Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 24 avril 2012
24 avril 2012 à 16:07
Non ca ne marche toujour pas

Je pense que ça vient de ma formule car j'en ai une autre qui a bien fonctionnée

vince
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2012 à 16:23
Bonjour,
Pas vraiment clair, mais je crois deviner que tu souhaites que la valeur de la cellule où tu mets cette formule change en fonction d'un changement dans d'autres cellules ?
Si oui : le plus simple est probablement de faire une fonction personnalisée (à mettre dans un module en public). Tu pourras ensuite te servir de cette fonction, dans une formule de cellule, exactement comme tu te sers des fonctions de Excel

Ceci étant dit, ta variable calc, telle qu'écrite, retourne une chaîne littérale de caractères et non une valeur numérique ! Bizarre !


________________________
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
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2012 à 16:27
Voilà ce que contient la variable calc : pour no_ligne = 3 ===>> la chaîne de caractères (pas une valeur, mais bel et bien une chaôine de caractères) :
(Y3*AK3+AG3*AC3)/AS3)



________________________
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
cs_Vincb9 Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 24 avril 2012
24 avril 2012 à 16:28
Désolé je débute c'est pour ça que c'est pas vraiment propre mes code mais ça ça m'embete.

Pour que tu t'imagine mieux la chose, je souhaite faire un userform où je vais choisir les différent article que je souhaite avoir dans ma cotation mais je vaus avoir des formules dans les cellules car je peut modifier une valeur et cela me changera tout...



vince
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
24 avril 2012 à 16:29
Bonjour,

Pas sur d'avoir tout compris non plus.
Mais, je pense qu'il manque une parenthese au debut (premiere ligne).

JLuc01
0
cs_Vincb9 Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 24 avril 2012
24 avril 2012 à 16:53
Pourquoi c'est en erreur ucfoutu ?

vince
0
cs_Vincb9 Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 24 avril 2012
24 avril 2012 à 16:59
D'accord très bien je peut te poser une autre question que tu arrivera à repondre vite ?

vince
0
cs_Vincb9 Messages postés 15 Date d'inscription jeudi 1 mars 2012 Statut Membre Dernière intervention 24 avril 2012
24 avril 2012 à 17:02
Je peut poser une derniere question avant de fermer cette discussion ?

vince
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2012 à 17:06
Tu peux surtout faire des tests simple de formules, hein, pour constater.
Et une autre fois : ce n'est là que la connaissance de Excel et non de VBA !
Tu as comme moi deux mains, un clavier et des neurones ?
Regarde donc (en deux minuscules tests) :
ceci :
=SI((A1+A2) /A1< 100; 100; 50)
ne provoquerait pas d'erreur

et ceci
=SI((A1+A2) /A1)< 100; 100; 50)
planterait, bien évidemment

OK ?
________________________
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
Rejoignez-nous