mimalo13
Messages postés13Date d'inscriptionmercredi 24 août 2011StatutMembreDernière intervention17 janvier 2012
-
24 août 2011 à 11:20
mimalo13
Messages postés13Date d'inscriptionmercredi 24 août 2011StatutMembreDernière intervention17 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
mimalo13
Messages postés13Date d'inscriptionmercredi 24 août 2011StatutMembreDernière intervention17 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
mimalo13
Messages postés13Date d'inscriptionmercredi 24 août 2011StatutMembreDernière intervention17 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.
mimalo13
Messages postés13Date d'inscriptionmercredi 24 août 2011StatutMembreDernière intervention17 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 ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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