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 :

appel de fonctions pour faire calculs dans une procédure sub


Sujet :

Macros et VBA Excel

  1. #21
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Regarde ton post #1 où apparait cboParoiAsso?
    Que de temps gâché.

  2. #22
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 201
    Points : 73
    Points
    73
    Par défaut
    en effet iam sorry.

    cboParoiAsso permet de déterminer alphaM si c'est le plancher qui est selectionné dans cboTypParoi et AlphaP si c'est le mur qui est selectionné dans cboTypParoi et donc cboTypParoi donne soit AlphaM soit AlphaP selon la selection (mur ou plancher) autrement dit AlphaM et AlphaP "coexistent"

    On va y arriver

  3. #23
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 201
    Points : 73
    Points
    73
    Par défaut
    C'est bon j'ai réussi j'ai créé deux fonctions que voici:

    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
     
     '''''sous-routine pour le coefficient de Sabine
     
    'Paramètres de la fonction:
    'Tb: Tableau de données
    'i Ligne de données
    'Mur: Optionnel, Omise ou True pour cboTypParoi.Text="Mur". False pour cboTypParoi.Text="Plancher"
     
    Public Function AlphaMur(ByVal Tb As Variant, ByVal i As Byte) As Double
    Dim Inpt As Variant
    Dim str As String
    Dim n As Byte
     
    If i <= UBound(Tb, 1) Then
        If UserForm1.cboTypParoi.Text = "Mur" Then
            str = UserForm1.cboMatParoi.Text
            Select Case str
                Case "Béton dense": n = 3
                Case "Béton léger": n = 4
                Case "Parpaings pleins": n = 5
                Case "Parpaings creux": n = 6
                Case "Brique pleine": n = 8
                Case "Brique creuse": n = 7
                Case "Pan de bois": n = 9
                Case "Pan de fer": n = 10
                Case "Moellon": n = 11
            End Select
        ElseIf UserForm1.cboTypParoi.Text = "Plancher" Then
            str = UserForm1.cboNatParoi.Text
            Select Case str
                Case "Dalle béton", "Dalle béton sur poutrelle métallique", "Dallage sur terre plein", "Bac collaborant", "Chape béton": n = 3
                Case "Plancher bois": n = 13
                Case "Poutrelle métallique": n = 14
            End Select
     
        End If
        If n > 0 Then AlphaMur = Tb(i, n)
    End If
    End Function
    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
    Public Function AlphaPlancher(ByVal Tb As Variant, ByVal i As Byte) As Double
    Dim Inpt As Variant
    Dim str As String
    Dim n As Byte
     
    If i <= UBound(Tb, 1) Then
        If UserForm1.cboTypParoi.Text = "Mur" Then
            str = UserForm1.cboParoiAsso.Text
            Select Case str
                Case "Dalle béton", "Dalle béton sur poutrelle métallique", "Dallage sur terre plein", "Bac collaborant", "Chape béton": n = 3
                Case "Plancher bois": n = 13
                Case "Poutrelle métallique": n = 14
            End Select
        ElseIf UserForm1.cboTypParoi.Text = "Plancher" Then
            str = UserForm1.cboParoiAsso.Text
            Select Case str
                Case "Béton dense": n = 3
                Case "Béton léger": n = 4
                Case "Parpaings pleins": n = 5
                Case "Parpaings creux": n = 6
                Case "Brique pleine": n = 8
                Case "Brique creuse": n = 7
                Case "Pan de bois": n = 9
                Case "Pan de fer": n = 10
                Case "Moellon": n = 11
            End Select
     
        End If
        If n > 0 Then AlphaPlancher = Tb(i, n)
    End If
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AlphaM = AlphaMur(Inpt, i)                           
        AlphaP = AlphaPlancher(Inpt, i)
        Debug.Print i, AlphaP, AlphaM
    cette fois SI cboTypParoi.text="Mur" alors AlphaM = AlphaMur et AlphaP = AlphaPlancher et SI cboTypParoi.text="Plancher" alors AlphaM = AlphaPlancher et AlphaP = AlphaMur il ne rste plus qu'à y mettre une condition du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If UserForm1.cboTypParoi.Text = "Mur" Then
        A = (AlphaP * ((2 * CDbl(UserForm1.TxtLargPlanch.Value) * CDbl(UserForm1.TxtLongPlanch.Value))))  + ((AlphaM * CDbl(UserForm1.TxtHteurPlaf.Value) 
       ElseIf UserForm1.cboTypParoi.Text = "Plancher" Then
          A = (AlphaM * ((2 * CDbl(UserForm1.TxtLargPlanch.Value) * CDbl(UserForm1.TxtLongPlanch.Value))))  + AlphaP * CDbl(UserForm1.TxtHteurPlaf.Value) 
     End If
    et le tour est joué

    Merci pour votre aide j'y serai pas arrivé sans vous!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Fonction pour remplacer String dans une feuille
    Par Canyata dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/08/2014, 13h37
  2. Appeler la fonction qui se trouve dans une classe
    Par guichardmaxime dans le forum C++
    Réponses: 4
    Dernier message: 23/06/2014, 16h37
  3. Réponses: 9
    Dernier message: 09/05/2013, 17h27
  4. Réponses: 2
    Dernier message: 11/03/2011, 21h17
  5. une fonction pour le bgcolor dans une datatable
    Par ghnawfal dans le forum JSF
    Réponses: 2
    Dernier message: 09/04/2008, 13h33

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