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 :

Attribuer des valeurs à des cellules Excel depuis vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Actuaire
    Inscrit en
    Mars 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Swaziland

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 9
    Par défaut Attribuer des valeurs à des cellules Excel depuis vba
    Bonjour,
    Je cherche à transférer des valeurs obtenue depuis une macro vba sur une feuille Excel mais l'erreur #VALEUR apparaît. J'ai créé un code plus simple pour comprendre le mécanisme mais ça ne marche pas non plus :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Function mult(chf As Double) As Double
     
    Dim i As Integer
    Worksheets("Feuil1").Activate
    For i = 1 To 10
        mult = mult + chf * i
        Worksheets("Feuil1").Range("A" & i).Value = mult
    Next i
     
    End Function
    Le but serait que les valeur de "mult" de chaque i se trouve dans la Feuille "Feuil1" et dans les cellules A1, A2 etc.

    Je vous remercie d'avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Pense a utiliser la balise code, ça le rend bien plus lisible.

    Pas de soucis chez moi avec ta macro:
    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
    Option Explicit
     
    Function mult(chf As Double) As Double
     
    Dim i As Integer
    Worksheets("Feuil1").Activate
    For i = 1 To 10
    mult = mult + chf * i
    Worksheets("Feuil1").Range("A" & i).Value = mult
    Next i
     
    End Function
     
    Sub test()
    mult (2.5)
    End Sub
    Quand je lance macro de test j'ai bien les résultats de A1 à A10 et sans erreur

  3. #3
    Membre du Club
    Femme Profil pro
    Actuaire
    Inscrit en
    Mars 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Swaziland

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 9
    Par défaut
    Merci!

    Par ailleurs je n'arrive toujours pas à implémenter ça dans mon vrai code... (J'ai coupé des parties qui ne sont pas importantes pour cette question mais le code marche)

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    Option Explicit
    Public Function AvoirEpargne(Risk1 As String, Risk2 As String, Prime As Double, rend As Double, BirthDate As Date, gender As String, DateCalcul As Date, RiskAjout As String, _
    AgeAjout As Double, RiskRetrait As String, ageRetrait As Double, AgeRetraitCap As Double) As Variant
     
    Dim PrimeRisk1() As Double
    Dim PrimeRisk2() As Double
    Dim CumulAvoir As Double
    Dim AvoirAnnee() As Double
    Dim vecteur(4) As Variant
    Dim CapitalAcquis As Double
     
    Dim AvoirPrev As Double
    Dim age As Double
    Dim NmbMoisRetraite As Integer
     
    Dim ArrayRisk1 As Range
    Dim ArrayRisk2 As Range
     
    Dim AgeRetraite As Integer
     
    Dim j As Integer
    Dim i As Integer
     
    Dim colonne As Integer
     
    'Paramètres frais
    Dim FraisFixes As Double
    Dim FraisPrimes As Double
    Dim FraisAvoir As Double
    Dim AugmPrimeAnnee As Double
     
    FraisFixes = 100
    FraisPrimes = 0.05
    FraisAvoir = 0.004
    AugmPrimeAnnee = 0.01  'Taux d'augmentation des primes par années
     
    If gender = "F" Then colonne = 2 Else colonne = 3
     
    'Calcul de l'âge exact
    age = Year(DateCalcul) - Year(BirthDate) + Month(DateCalcul) / 12 - Month(BirthDate) / 12
     
    'Age Retraite en fonction du genre
     
    If gender = "F" Then AgeRetraite = 64 Else AgeRetraite = 65
     
    'Calcul du nombre de mois avant retraite
     
    NmbMoisRetraite = ((AgeRetraite - age) * 12)
     
    ReDim PrimeRisk1(NmbMoisRetraite)
    ReDim PrimeRisk2(NmbMoisRetraite)
     
     
    'Definition des plages ou rechercher les primes de risque en fonction des offres chosie
     
    Set ArrayRisk1 = ThisWorkbook.Sheets(Risk1).Range("A1:C100")
    Set ArrayRisk2 = ThisWorkbook.Sheets(Risk2).Range("A1:C100")
     
     
    ' Création Array pour les primes de risk 1 & 2 et pour l'avoir de chaque année
     
    For j = 1 To NmbMoisRetraite
        PrimeRisk1(j) = Application.WorksheetFunction.VLookup(Int(age + i / 12), ArrayRisk1, colonne, False) * (1 + AugmPrimeAnnee) ^ (j - j + j / 12.1)
        PrimeRisk2(k) = Application.WorksheetFunction.VLookup(Int(age + k / 12), ArrayRisk2, colonne, False) * (1 + AugmPrimeAnnee) ^ (j - j + j / 12.1)
    Next j
     
     
    ' Calcul avoit total mensuel
     
    For l = 1 To NmbMoisRetraite
        AvoirAnnee(l) = Prime - PrimeRisk1(l) - PrimeRisk2(l)  - FraisPrimes * (PrimeRisk1(l) + PrimeRisk2(l) ) - FraisFixes / 12
    Next l
     
    'Boucle Calcul de l'avoir à la retraite
     
    CumulAvoir = 0
     
    For i = 1 To NmbMoisRetraite
    CumulAvoir = CumulAvoir * (1 + rend / 12) ^ (1 / 12) + AvoirAnnee(i) * (1 - FraisAvoir / 12)
    Next i
    En gros j'aimerai que les valeurs de CumulAvoir (dernière ligne du code) apparaissent directement dans la feuille "réserves"

    J'ai essayé avec le code =

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 1 To NmbMoisRetraite
    CumulAvoir = CumulAvoir * (1 + rend / 12) ^ (1 / 12) + AvoirAnnee(i) * (1 - FraisAvoir / 12)
    Worksheets("réserves").Range("A"&i).value = CumulAvoir
    Next i
    une idée ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Vérifie le contenu de chaque variable pour voir là où ça se passe mal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 1 To NmbMoisRetraite
    debug.print CumulAvoir 
    debug.print rend 
    debug.print AvoirAnnee(i)
    debug.print FraisAvoir 
    debug.print CumulAvoir 
     
    CumulAvoir = CumulAvoir * (1 + rend / 12) ^ (1 / 12) + AvoirAnnee(i) * (1 - FraisAvoir / 12)
    Worksheets("réserves").Range("A"&i).value = CumulAvoir
    Next i

  5. #5
    Membre du Club
    Femme Profil pro
    Actuaire
    Inscrit en
    Mars 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Swaziland

    Informations professionnelles :
    Activité : Actuaire
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2022
    Messages : 9
    Par défaut
    Les variables semblent toutes fonctionner d'après la fenêtre exécution

    Par ailleurs ce code me renvoie l'erreur #VALEUR!

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Peux tu montrer le code complet par lequel tu appelles cette fonction

Discussions similaires

  1. recherche valeur dans cellule excel depuis un vbs
    Par Gamack dans le forum VBScript
    Réponses: 4
    Dernier message: 07/01/2014, 17h21
  2. Lire des cellules Excel depuis Access
    Par planete.gonz dans le forum VBA Access
    Réponses: 4
    Dernier message: 08/01/2009, 11h40
  3. Rechercher une valeur dans fichier Excel depuis VBA Access
    Par tribaleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 14h10
  4. [VBA-E] écrire dans un range de cellules excel depuis VBA
    Par pro64 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/03/2007, 17h22
  5. [VBA-E]Largeur des cellules Excel adaptée au contenu de la cellule
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/05/2006, 08h33

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