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 :

Petit problème déclaration [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut Petit problème déclaration
    Bonjour !

    Je suis totalement nouvelle en VBA. J'ai fait une fonction pour m'aider à gagner du temps. Ma fonction comporte beaucoup de boucles et de conditions. Néanmoins tout marche sauf ceci:

    Je veux faire une fonction avec deux paramètres en entrée et en sortir une chaînes de caractères par ex 0 1.32 7.89 ... correspondant aux valeurs de mon spectre. Ces valeurs devront apparaître dans une cellule, séparés par un espace par ex (je n'ai pas trouvé de façon plus adapté étant donné que j'ai un peu près 200 fois à exécuter la fonction avec une centaines de points en sortir par fonction).

    Ma fonction est longue mais mon seul problème se résume à ce court programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Tp As Integer
    Dim Hs As Double
     
    Dim i As Integer
    Dim tab As Variant
     
     
    Function tab(Hs As Double, Tp As Integer)
            For i = 1 To 10
            tab(i) = i
            Next i
     
    End Function
    Est-ce que qqn pourrait gentiment m'aider ??

    Bonne journée !

    Caroline

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 21
    Par défaut
    Si tu as une cellule A1 avec la valeur 1.89
    Si tu as une cellule B1 avec la valeur 3.88
    Il te suffit d'écrire la formule suivante dans C1 : =A1&" "&B1
    Tu obtiendras dans C1 : 1.89 3.88

    Je ne sais pas si c'est bien cela que tu voulais ???..

  3. #3
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour,
    Citation Envoyé par Caroline_1 Voir le message
    Ma fonction est longue mais mon seul problème se résume à ce court programme:

    Dim Tp As Integer
    Dim Hs As Double

    Dim i As Integer
    Dim tab As Variant


    Function tab(Hs As Double, Tp As Integer)
    For i = 1 To 10
    tab(i) = i
    Next i

    End Function
    Et le problème est ...?
    C'est tellement bien résumé, que je ne vois pas la question! ET comme je suis imprudent, je réponds quand même.
    1) tu oublies les déclarations hors de la fonction
    2) tu essaies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function fTab(ByVal Hs As Double,ByVal Tp As Integer) as string
    Dim iTab(1 to 10) as integer
            For i = 1 To 10
                iTab(i) = i
            Next i
            fTab = join(iTab, " ")
     
    End Function
    Sans oublier que Hs et Tp devraient jouer un rôle...

    Cordialement,

    PGZ

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut
    Merci lmb19 mais non ce n'est pas ce que je recherchais. Je suis désolée je me suis en effet mal expliqué. Je vais calculer des valeurs qui seront rentrées dans mon tableau de sortie.

    En fait mon réel programme que je n'ai pas mis en entier pour ne pas encombrer est le suivant:

    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
    Dim Tp As Integer
    Dim Hs As Double
    Dim Gamma As Integer
    Dim Agamma As Double
    Dim w As Double
    Dim w2 As Double
    Dim wp As Double
    Dim sigma As Double
    Dim S As String
    Dim M0 As Double
    Dim Hs2 As Double
    Dim Agamma2 As Double
    'Dim spectrum As String
    Dim i As Integer
     
    Function spectrum(Hs As Double, Tp As Integer)
     
            'Attribution of value to gamma
            If (Tp / Sqr(Hs) <= 3.6) Then
                Gamma = 5
            End If
            If (Tp / Sqr(Hs) > 3.6) And (Tp / Sqr(Hs) < 5) Then
                Gamma = Exp(5.75 - 1.15 * Tp / Sqr(Hs))
            End If
            If (Tp / Sqr(Hs) >= 5) Then
                Gamma = 1
            End If
            'Agamma value (first)
            Agamma = 1 - 0.287 * Log(Gamma)
            'wp value
            wp = 2 * Pi / Tp
            'Spectrum construction
            For w = 2 * Pi / 18 To 2 * Pi / 7 Step 0.01
                If (w <= wp) Then
                    sigma = 0.07
                Else
                    sigma = 0.09
                End If
                S(100 * (w - 2 * Pi / 18) + 1) = (5 / 16) * (Hs ^ 2) * (wp ^ (-5)) * Exp((-5 / 4) * ((w / wp) ^ (-4))) * Agamma * Gamma ^ (Exp((-0.5) * (((w - wp) / (sigma * wp)) ^ 2)))
                Next w
            'Calculation of the spectral moments (order 0)
            M0 = 0
            For i = 1 To Len(S)
                M0 = M0 + S(i)
            Next i
            M0 = ((2 * Pi) ^ 0) * M0
            'Check of the Hs
            Hs2 = 4 * Sqr(M0)
            'Recalculation of Agamma
            Agamma2 = (Hs * Agamma) / Hs2
            'Recalculation of the spectrum
            For w2 = 2 * Pi / 18 To 2 * Pi / 7 Step 0.01
                If (w2 <= wp) Then
                    sigma = 0.07
                Else
                    sigma = 0.09
            End If
            spectrum(100 * (w2 - 2 * Pi / 18) + 1) = (5 / 16) * (Hs ^ 2) * (wp ^ (-5)) * Exp((-5 / 4) * ((w2 / wp) ^ (-4))) * Agamma2 * Gamma ^ (Exp((-0.5) * (((w2 - wp) / (sigma * wp)) ^ 2)))
            Next w2
    End Function

    Merci aussi PGZ pour ta réponse. Mais j'ai essayé ta syntaxe en rentrant ta fonction et en faisant un test en mettant =fTab(une valeur;une autre) et cela ne marche pas. Tu saurais ce qui ne va pas avec ton idée?

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    En effet, il y avait un petit pb. Au temps pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function fTab(ByVal Hs As Double, ByVal Tp As Integer) As String
    Dim i As Integer
    Dim iTab(1 To 10) As String
     
    For i = 1 To 10
        iTab(i) = i
    Next i
     
    fTab = Join(iTab, " ")
     
    End Function
    Cette fois, j'ai vérifié.

    Cordialement,

    PGZ

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Par défaut
    Merci beaucoup ! C'était rapide et très sympa à vous deux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. petit problème de déclaration de méthode
    Par zyriuse75 dans le forum Ruby
    Réponses: 1
    Dernier message: 16/11/2010, 23h05
  2. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24
  3. Réponses: 17
    Dernier message: 13/07/2004, 20h37
  4. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 12h00
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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