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 :

Vba probleme de déclaration


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par défaut Vba probleme de déclaration
    mesdames messieurs bonsoir.

    j'ai un tres petit soucis je ne sait pas si vous pouvez m'aider...

    sur VBA,

    j'ai une fonction (assez lourde qui fonctionne) " f "

    en entrer un range : x
    en sortie y=f(x) est un variante.

    lorsque je tape (dans excel) f(x) le résultat est correcte.

    cependant je souhaite faire un code :

    f(f(f(x) (faire n itération de ma fonction)
    f^n(x) = fofofofofofof(x).

    mais comme il entre un range et il sort un variant... ca bug .

    est ce que vous savez comment faire ?

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function ult(byref X as range, n as integer)
     
    u= f(x)
     
    for i=1 to n
    u=f(u)
    next
     
    ult=u
    .
    merci d'avance cher camarade

  2. #2
    Invité
    Invité(e)
    Par défaut
    Et le détail du code de la fonction qui à x associe f(x) ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 101
    Par défaut
    Et comme cela, qu'est ce que ça donnerait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function ult(byref X as range, n as integer)
     
    X= f(X)
     
    for i=1 to n
    X=f(X)
    next
     
    ult=X

  4. #4
    Membre habitué
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par défaut
    merci de vos réponse,


    le code de f() est vraiment long il fait plein de truk pas important (mais je la met en dessous si tu a du courage)


    et non ça ne marche pas ce code :mais merci smbecaria

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    Function f(ByRef sigma As Range, sigmak2 As Double, ByRef sigmak As Range, ByRef beta As Range, ByRef A As Range, ByRef Q As Range, ByRef n As Double) As Variant
     
    Dim nbeta() As Double
    Dim vectC_CsigmaC_R() As Double
    Dim final() As Double
    Dim scal As Double
    Dim scal2 As Double
     
    'Dim MatriceSigma() As Double
     
     
    Dim taille As Integer
    taille = beta.Rows.Count
     
    ReDim nbeta(1 To taille, 1 To 1)
    ReDim vectC_CsigmaC_R(1 To taille, 1 To 1)
    ReDim final(1 To taille, 1 To 1)
    'ReDim MatriceSigma(1 To taille, 1 To taille)
     
     
    'For i = 1 To taille
    'nbeta(i, 1) = nbeta.Cells(i, 1) * (1 / sigmak)
     
    'For j = 1 To taille
        'MatriceSigma(i, j) = sigma_moins_1.Cells(i, j)
    'Next j
     
     
    Dim F() As Double
    ReDim F(1 To 1, 1 To 1)
     
     
     
     
    Dim p1() As Double
    Dim P2() As Double
     
     For i = 1 To taille
     nbeta(i, 1) = beta.Cells(i, 1) * (1 / sigmak)
     Next
     
    ReDim p1(1 To taille, 1 To 1)
    ReDim P2(1 To 1, 1 To 1)
     
     
    For i = 1 To taille
    For k = 1 To taille
     
    p1(i, 1) = nbeta(i, 1) * sigma(i, k) * nbeta(k, 1) + p1(i, 1)
    Next
    Next
     
     
     
    For j = 1 To taille
    P2(1, 1) = P2(1, 1) + p1(j, 1) + 1#
    Next
     
    F = P2
     
     
     
     
    scal2 = 1 / F(1, 1)
     
     
     
    For i = 1 To taille
    vectC_CsigmaC_R(i, 1) = beta.Cells(i, 1) * scal2
    Next
     
    For i = 1 To taille
        For j = 1 To taille
        tests = sigma(i, j)
        tests = vectC_CsigmaC_R(j, 1)
        final(i, 1) = vectC_CsigmaC_R(j, 1) * sigma(i, j) + final(i, 1)
        Next
    Next
     
    'Kt = final()
     
     
     
    Dim matrix() As Double
    Dim produitMat() As Double
     
    ReDim produitMat(1 To taille, 1 To taille)
    ReDim matrix(1 To taille, 1 To taille)
     
     
    For i = 1 To taille
        For j = 1 To taille
           If j = i Then
            matrix(i, j) = 1# + (-1) * nbeta(i, 1) * final(j, 1)
            Else
           matrix(i, j) = -nbeta(i, 1) * final(j, 1)
           End If
     
      Next
      Next
     
     
    For i = 1 To taille
       For j = 1 To taille
            For l = 1 To taille
        produitMat(i, j) = matrix(i, l) * sigma(l, j) + produitMat(i, j)
         Next
        Next
    Next
     
     
    'calculate_sigma = produitMat
     
    Dim Gsigma2_aux() As Variant
    Dim Gsigma_aux() As Variant
     
     
    Gsigma2_aux = Application.Transpose(A)
     
    Gsigma_aux = Application.WorksheetFunction.MMult(produitMat, Gsigma2_aux)
     
    f = Application.WorksheetFunction.MMult(A, Gsigma_aux)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Peux-tu mettre tes lignes de codes entre balises (le symbole dans l'éditeur est '#') ?

    Si tu travailles avec des variables 'tableaux' plutôt que des 'range' qui deviennent des 'tableaux' ; ton code devrait marcher.
    Dernière modification par Invité ; 26/07/2013 à 17h10.

Discussions similaires

  1. [VBA] Probleme déclaration de variable
    Par Léponge85 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 11/06/2008, 14h57
  2. [VBA] Problem de suppression de composant
    Par jesus144 dans le forum IHM
    Réponses: 9
    Dernier message: 26/04/2006, 10h03
  3. [VBA]probleme : erreur 2001 operation annulée
    Par julio78 dans le forum Access
    Réponses: 6
    Dernier message: 09/01/2006, 15h21
  4. [VBA] Probleme de caractères spéciaux dans nom de classeur
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2005, 19h13
  5. Réponses: 10
    Dernier message: 13/06/2005, 16h02

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