Formule Excel

Résolu
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012 - 24 août 2011 à 11:20
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012 - 25 août 2011 à 12:35
Bonjour à tous,
Je souhaiterais créer une formule VBA dans Excel qui ressemblerait à ceci.
Malheureusement, n'étant expert en la matière, cette formule que je présente ne fonctionne pas :

If Worksheets("B").Cells("P2") = "35" Then
Worksheets("B").Cells("B9") = Worksheets("B").Cells("Y10")
If Worksheets("B").Cells(4, 22) = "36" Then
Worksheets("B").Cells("B9") = Worksheets("B").Cells("Y11")
End If
End If

A l'avance, je vous remercie pour vos réponses.

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 223
24 août 2011 à 11:25
Bonjour,

Avant d'aller réellement à l'utilisation d'une fonction personnalisée écrite sous VBA :
Pourquoi ne pas utiliser tout simplement une formule Excel dans la cellule B9 ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
24 août 2011 à 11:45
Aucun problème !
Exemple :
cette formule en B1 :
SI(A135;C1;SI(A1=36;D1))
inscrira en B1 la valeur de C1 si A1 35 ou la valeur de D1 si A1 36


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
25 août 2011 à 09:57
Je reprends mon exemple donné plus haut, mais avec cette fois-ci 3 conditions.
Observe :
SI(A135;C1;SI(A1=36;D1;SI(A1=37;E1)))
J'explique la forme générale :
=SI(condition1;resultat1;SINONSI(condition2;resultat2;SINONSI(condition3;resultat3)))
et ainsi de suite
observe le nombre de parenthèses à la fin : j'en avais 2 avant (pour 2 conditions), j'en ai 3 pour 3 conditions.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
25 août 2011 à 10:55
Je voudrais maintenant appeler ton attention sur l'utilisation de la fonction CHOISIR dans une formule.
Je t'en parle car elle parait être la mieux adaptée à ton cas (un grand nombre de conditions)

Sur une feuille vierge :
écris PAR EXEMPLE en H1 1, en I1 2, EN J1 3, en K1 4, etc ... jusqu'en Q1 10
(j'ai choisi ces données pour que tu suives visuellement mieux
mets en B1 la formule suivante :
=CHOISIR(A1-34;H1;I1;J1;K1;L1;M1;N1;O1;P1;Q1)


Qu'est 34 là-dedans ? ===>> Rien d'autre que ton 35 - 1
Que devrait faire cette formule ? ===>> regarder la valeur de A1 et lui oter 34 (on aura donc 1 si = 35, 2 si = 36, etc ...) ====>> puis lui attribuer la valeur de l'index (A1-1) de toutes les valeurs qui suivent le premier point-virgule (les valeurs des cellules)

Pour mieux comprendre ce mécanisme :
écris maintenant dans A1 une valeur quelconque, supérieure ou égale à 35 ===>> observe ce qui se passe en B1

Attention : cela implique que tu ne mets en A1 que des valeurs cohérentes et au moins égales à 35, hein (sinon : erreur dans ta cellule B1)

Je suis persuadé de ce que c'est ce mécanisme, qui convient bien à ce que tu fais. Il te faudra par contre réfléchir un peu pour bien décider des valeurs.
Amuse-toi, entraîne-toi.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3

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

Posez votre question
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012
24 août 2011 à 11:23
petite erreur

If Worksheets("B").Cells("P2") = "35" Then
Worksheets("B").Cells("B9") = Worksheets("B").Cells("Y10")
If Worksheets("B").Cells("P2") = "36" Then
Worksheets("B").Cells("B9") = Worksheets("B").Cells("Y11")
End If
End If

A l'avance, je vous remercie pour vos réponses.
0
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012
24 août 2011 à 11:33
Bonjour,

Je te remercie de répondre. Oui pourquoi pas ? Ce genre de formule pourrait fonctionner dans une cellule ? Vu qu'il y a plusieurs conditions, je pensais que cela n'était pas faisable.
0
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012
25 août 2011 à 08:18
Un grans merci pour ton aide.
0
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012
25 août 2011 à 08:19
Un grand merci pour ton aide
0
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012
25 août 2011 à 09:30
Désolé de revenir avec ce problème. La formule fonctionne très bien mais je suis limité à 2 conditions. Comment faire pour imposer une dizaine de conditions ?

si(P237;AJ14);si(P2=38;AJ15);si(P2=39;AJ16);si(P2=40;AJ17);si(P2=41;AJ18))
0
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012
25 août 2011 à 10:08
Un très grand merci pour la rapidité et le détail de ta réponse.

Bonne journée.
0
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012
25 août 2011 à 11:20
Je vais essayer, merci pour ton aide.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
25 août 2011 à 11:54
Bien.
Lorsque tu auras terminé :
toujours avec le même exemple (mêmes données et mêmes conditions), mets maintenant cette formule en B1 et observe :
=DECALER(G1;0;(A1-34);1;1)

Voilà ===>> plusieurs chemins peuvent mener à Rome, n'est-ce-pas ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
mimalo13 Messages postés 13 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 17 janvier 2012
25 août 2011 à 12:35
Effectivement toutes ces formules fonctionnent très bien. Merci pour ta patience et surtout pour avoir partagé tes connaissances.
0
Rejoignez-nous