Appliquer une fonction colonne entière

Bonjour à tous,

largement débutant en VBA, je me suis lancé dans un projet peut être un peu trop complexe pour moi.

L'idée est qu'a partir des données qui sont renseignées par l'utilisateur sur un emprunt, excel me fournisse automatiquement le tableau d'amortissement de cet emprunt pour par la suite calculer une rentabilité du projet.

Pour le moment j'ai réussit (tant bien que mal) à ce qu'il me trace le tableau avec un nombre de ligne variables selon si le remboursement est mensuel, bi mensuel...

Mais pour ce qui est des formules je sèche complètement, j'arrive à appliquer la formule pour une cellule donnée mais impossible d'appliquer cette formule à l'ensemble des cellules de la colonne en fonction des autres valeurs calculées.

Si vous pouviez me donner une piste de recherche sur ces formules afin de continuer le projet par moi même ensuite.

Ci joint le début du projet.

Bonjour, j'avais ça pour un utilisateur du forum, ca peu peut-être servir de base de départ. Sinon sur le fil de discussion il y a eu d'autres propositions...

https://forum.excel-pratique.com/excel/condition-pour-faire-un-total-t65438-10.html

le tableau se construit en fonction des renseignements dans les cellules bleues.

Merci, c'est un bon début de réflexion,

Cependant je ne comprends pas dans le début du code lorsque tu affecte les formules les RC[-1] ou RC[-2] ainsi que le R4C2

Je me suis aperçu d'un bug donc du coup je poste la mise à jour qui prend en compte toutes les cellules bleues.

RC[-1] ou RC[-2] ainsi que le R4C2

c'est une méthode d'écriture pour définir des cellules. Ex : R signifie Row (ligne) et C column (colonne).

R2C4 = cellule $D$2.

R[2]C[4] = cellule D2

Merci

Par contre je ne vois pas à quoi sert la première ligne:

If Feuil1.Range("a6") <> "" Then Feuil1.Range("a6:E" & Range("a" & Rows.Count).End(xlUp).Row).Delete shift:=xlUp

Toujours le même problème avec RC[-1] et [-2], quel interet de mentionner une colonne négative?

If Feuil1.Range("a6") <> "" Then Feuil1.Range("a6:E" & Range("a" & Rows.Count).End(xlUp).Row).Delete shift:=xlUp

Effacer le tableau existant

Toujours le même problème avec RC[-1] et [-2], quel interet de mentionner une colonne négative?

RC[-1] se décaler d'une colonne vers la gauche

RC[1] se decaler d'une colonne vers la droite

Bonjour à tous!

Mon projet avance bien et c'est pas mal, cependant pour améliorer mon tableau d'amortissement en plus du numéro de période j'aimerais bien avoir à côté la date de l'échéance.

Pour cela j'aimerais en vba incrémenter la date située juste au dessus de la cellule à remplir. Pourtant cela ne fonctionne pas avec un code de ce genre:

If type_emprunt = "Annuités constantes" and frequence_emprunt="Annuelle" then

with feuil1

.Cells(19,1) = "=DateAdd("yyyy",1,R[-1]C)"

Au mieux j'obtiens une erreur dans la cellule #nom#

Merci pour votre aide

Bonjour, dans mon fichier, il n'y a aucune date nul part, de quelle date parlez-vous ?

Non il n'y a pas de dates dans votre fichier mais j'aimerais qu'il y en ai dans le miens avec le numéro de période (ça c'est bon) et la date de paiement. Donc si paiement mensuel j'aimerais incrémenter de mois en mois la date entrée par l'utilisateur comme étant la date de début de remboursement.

Sub test()
Dim d As Date
d = Feuil1.[a1]
For i = 2 To 12
Feuil1.Range("a" & i) = DateAdd("m", i, d)
Next
End Sub

dans se cas présent, en A1 il y a la première date. AU lancement de la macro, les douzes cellules en dessous auront la même valeur avec un mois de décallage

 Dim d as date
d = Feuil2.[B6]
For i = o to nbperiode
Feuil2.Range("b" & i +8) = DateAdd("yyyy", i, d)

Ce code fonctionne pour afficher la date de mes échéances années après années sur le bon nombre de période à partir de B8.

Cependant je souhaiterais lorsque le paiement est semestriel afficher mes date de 6 mois en 6 mois.

J'ai essayé cela

 dim d as date
d = Feuil2.[B6]
For i = 0 to nbperiode Step 6
Feuil2.Range("b" & i+8) = DateAdd("m", i, d)

Mais bien évidemment il m'écris la date une fois sur 6 :/

Comment incrémenter ma date de 6 mois sur chaque ligne de la colonne de B8 jusqu'à B8+nombre de périodes?

Une autre question, la colonne "montant échéance" me prend deux colonnes, j'aimerais pouvoir fusionner ces deux colonnes mais ligne par ligne sur le nombre de périodes correspondantes, je vous mets mon fichier pour que vous compreniez mon problème. J'ai bien essayé plusieurs solutions mais elles fusionnent toute la colonne d'un coup.

(Ne pas regarder le code il est très sale mais cela fonctionne et comme c'est mon premier projet VBA)

Merci d'avance, grâce à vous mon projet à bien avancé.

Bonjour, essayez d'incrémenter i de 6 dans la macro et non dans la définition de la boucle for

Feuil2.Range("b" & i+8) = DateAdd("m", i + 6, d)

Ainsi on incrémente de 6 mois à chaque période. A noter que ce 6 au lieu d'être un 6 pourrait être une variable si se chiffre peu changer suivant les cas. Exemple en codant de la sorte : si la cellule x =" Mensuelle" --> if range(machinchose) = mensuelle alors ma_variable = 1 . Ce qui donnerait DateAdd("m", i + ma_variable, d)

Pour la fusion des colonnes, je ne sais pas trop quoi vous répondre car en regardant le code vba...il y a plusieurs cas de figure et je n'ai pas trop compris qui fait quoi dans tous ça

Rechercher des sujets similaires à "appliquer fonction colonne entiere"