Petitjean315
Messages postés2Date d'inscriptionsamedi 27 mars 2010StatutMembreDernière intervention28 mars 2010
-
27 mars 2010 à 17:53
Petitjean315
Messages postés2Date d'inscriptionsamedi 27 mars 2010StatutMembreDernière intervention28 mars 2010
-
28 mars 2010 à 22:59
Bonjour a tous.
Je dois actuellement réaliser un projet Excel avec du VBA. J'ai écris des formules sous Excel et je suis actuellement en train de les insérer dans du code pour que le résultat ne s'affiche que lorsque je clique sur un bouton.
Je bloque sur une formule, j'ai essayer de transformer une formule d'excel qui marche parfaitement en VBA. Le problème c'est que le résultat n'est pas du tout le même. Voici la formule excel :
Cette formule remplis normalement une plage de cellule. Voila le code VBA que j'ai écris pour remplacer cette formule :
For i = 0 To (Range("G4").Value - 1)
If (1 / (Range("c12").Value + i)) <= Range("G8").Value Then
Cells(12 + i, 5).Value = (((Range("D12").Value + i) * Range("G8").Value) - (((Range("D12").Value + i) * (Range("G8").Value) * ((Month((Range("B6").Value + i) - 1) / 12)))))
Else
Cells(12 + i, 5).Value = (Range("D12").Value + i) * (1 / (Range("C12").Value + i))
End If
Next i
Pouvez vous me dire si le code correspond bien a la formule sous excel et si jamais quel modification je dois faire pour obtenir le même résultat. Je précise que je n'ai pas fait beaucoup de VBA, je ne connais pas toutes les structures, je n'en ai testé que quelques une en cour.
Je vous remercie d'avance.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 28 mars 2010 à 01:20
Salut
Je n'est rien vu de choquant.
Le seul problème, c'est que je ne vois pas trop ce que viens faire le 'i' dans tes formules ?
Tu additionnes la valeur de 'i' aux valeurs des cellules (et pas aux adresses).
Que veux-tu faire avec ce 'i' ?
Incrémenter le NOM de la cellule ou bien sa VALEUR ?
Valeur : Ta formule est surement correcte
Nom :
Si tu dois incrémenter le NOM / Adresse de la cellule, il faut t'y prendre autrement :
-1- Enumérer les cellules incluses dans un Range :
Dim maCellule As Object
For Each maCellule In Range("C12:C255")
MsgBox maCellule.Value
Next
-2- Utiliser les cellules situées à côté de celle actuellement pointée :
Il faut utiliser Offset :
Si maCellule représente la cellule C15, maCellule.Offset(0, 1) représentera la cellule de droite, D15.
Voir l'aide dans Excel sur ce mot clé.
C'est ce genre de décalage qu'il faut utiliser si tu veux t'adresser aux cellules voisines sans les désigner expressement.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Petitjean315
Messages postés2Date d'inscriptionsamedi 27 mars 2010StatutMembreDernière intervention28 mars 2010 28 mars 2010 à 22:59
Merci beaucoup pour ta réponse, oui c'était bien pour incrémenter l'adresse de la cellule que j'avais rajouté le i je me suis rendu compte de l'erreur en te lisant. J'ai corrigé la faute ca marche beaucoup mieux ^^
Par contre j'ai une autre question, j'ai un formulaire de saisie dans lequel je dois saisir une date, cette même date doit aller dans une cellule (au format date) une fois la saisie terminer, le problème c'est que excel inverse le jour et le mois dans la cellule du coup je suis obliger de taper la date au format MM/JJ/AAAA. Y a t'il quelque chose a faire pour que la date soit au bon format ?