IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Quel code VBA pour cette fonction.


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Quel code VBA pour cette fonction.
    Bonjour,

    Après avoir établi une formule Excel (colonne AF/AG)(dont j'ai eut du mal à en voir le bout) j'aimerai pouvoir l'utiliser en tant que fonction personnalisé. Cette fonction permettrait d'obtenir l'amortissement d'un montant en fonction de l'année demandé. (Ca se trouve... Il existe déjà une formule Excel qui me le permettait et ma fonction n'est donc peut-être pas du tout utile...

    Je vous joins le fichier pour que ce soit plus explicite. Pourriez-vous donc me dire si :
    1) Ma fonction écrite en colonne AF et AG est-elle utile ou pourrait-elle être remplacée par une fonction déjà existante?
    2) Est-il possible de mettre cette fonction en code VBA? Si oui pourriez-vous m'aider ?
    3) Excel est mon ami, VBA beacoup moins... des sites/fichiers m'interesseraient pour apprendre.

    Merci d'avance, bonne journée,

    Alex

  2. #2
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    as tu regardé du coté des fonctions finances
    pour d'autre sites de cours et d'exemple il te suffit dans un moteur de recherche de taper "Excel tableur " pour en avoir à la pelle

    www.excel.developpez.com/ ici même dans les tutos

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 925
    Points
    55 925
    Billets dans le blog
    131
    Par défaut
    Salut.

    Il existe une panoplie de fonctions financières dans Excel (voir la liste via l'assistant fonctions...

    Cela étant, il n'est que rarement possible de transformer sans l'adapter une formule excel en fonction personnalisée.

    Une fonction personnalisée est créée en VBA et le code de la fonction s'insère entre les lignes de code suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function MaFonction(...)
        ...
        ...
    end function
    Pour être utilisable au sein d'une feuille de calcul, il faut en plus que la fonction ne modifie pas le classeur, que ce soit sa structure ou des valeurs de cellules.

    Tu devras donc te farcir du VBA.

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse rapide.

    Dans ma fonction qui est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ANNEE($F3)>AG$2;0;SI(ANNEE($F3)=AG$2;(CONCATENER("31/12/";AG$2)-$D3)/(30*$G3)*$E3;SI(ANNEE(($F3+$G3*30))<AG$2;0;SI(ANNEE($F3+$G3*30)=AG$2;$E3*(12/$G3)-(CONCATENER("31/12/";ANNEE($D3))-$D3)/(30*$G3)*$E3;$E3*12/$G3))))
    Comment peut-on traduire "CONCATENER" en VBA ? Y a-t-il d'autres particularités à programmer à par des If ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Function Amortissement(Montant,Debut,Duree,Annee)
    If '(l'année de début)' Debut > Annee Then
    Amortissement = 0 Else
    If Debut(annee) = Annee Then 
    Amortissement = ((CONCATENER("31/12/";Annee) - Debut) / (30,5 * Duree) * Montant Else
    If ( Debut(annee) + Duree * 30,5 ) < Annee Then
    Amortissement = 0 Else
    If ( Debut(annee) + Duree * 30,5 ) = Annee Then
    Amortissement = Montant * (12/Duree) - ((CONCATENER("31/12/";Debut(année)) - Debut) / (30,5 * Duree) * Montant Else
    Amortissement = (Montant * 12 / Duree)
    
    End If
    End If
    End If
    End If
    End If
    End Function
    Avec
    Montant : Montant de l'amortissement
    Debut : Date du début de l'amortissement
    Duree : La durée de l'amortissement
    Annee : Année à laquelle on veut connaître l'amortissement.

    Avec 30.5 pour moyenne jours par mois. J'ai surligner en rouge mes problèmes de concatenation lorsque je veux juste l'année de début par exemple.

    Me conseillez-vous de procéder autrement ? Pourriez-vous m'aider à codifier en partie ou me corriger ?

    Merci d'avance.

    Amicalement

    Alexis

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien méthodes métrologie sur site
    Inscrit en
    Novembre 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien méthodes métrologie sur site
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 107
    Points : 114
    Points
    114
    Par défaut
    Utilise le & pour concatener sous vba !
    ex: "31/12/" & annee

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Très bien, merci. Et la fonction =Année(...) sous VBA se traduit comment ?

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien méthodes métrologie sur site
    Inscrit en
    Novembre 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien méthodes métrologie sur site
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 107
    Points : 114
    Points
    114
    Par défaut
    year(date)

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Voici mon nouveau code mais ça ne marche toujours pas. Ai-je bien fait d'ajouter "As Double" en type d'argument ? Es-ce comme cela qu'il faut faire ? Dois je aussi donner le type de Fonction ?

    Pouvez-vous m'aider à corriger mon code si vous avez un peu de temps, je vous remercie.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Function Amortissement(Montant, Debut, Duree, Annee) As Double
    If Year(Debut) > Annee Then
    Amortissement = 0
    Else
    If Debut(Annee) = Annee Then
    Amortissement = "31/12/" & Annee - Debut / (30.5 * Duree) * Montant
    Else
    If (Year(Debut) + Duree * 30.5) < Annee Then
    Amortissement = 0
    Else
    If (Year(Debut) + Duree * 30.5) = Annee Then
    Amortissement = Montant * (12 / Duree) - "31/12/" & Year(Debut) - Debut / (30.5 * Duree) * Montant
    Else
    Amortissement = (Montant * 12 / Duree)
     
    End If
    End If
    End If
    End If
    End If
    End Function

Discussions similaires

  1. [XL-2013] Quel code vba pour inserer image dans userform
    Par david.guedes dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/06/2015, 09h11
  2. Réponses: 7
    Dernier message: 10/03/2015, 14h00
  3. [XL-2002] Code VBA pour remplacer la fonction RECHERCHEV
    Par NoodleDS dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/07/2013, 09h58
  4. Quel code Vba pour action renvoyer mail
    Par AlexFred dans le forum VBA Outlook
    Réponses: 6
    Dernier message: 05/11/2012, 20h04
  5. Réponses: 3
    Dernier message: 06/09/2005, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo