Création d'une Function

Bonjour,

Je viens demander votre aide car je n'arrive pas à faire fonctionner la fonction que j'ai créée,

Je souhaite calculer une valeur à partir de 2 critères en parcourant un tableau.

ma fonction est la suivante :

la valeur string de Cluster est recherchée, Si DRP vaut "Oui" alors il additionne les valeurs de CPU ou RAM ou Allocated Storage

Function DRP(Cluster, CPU_RAM_Alloc) As Integer 'exemple =DRP("CLUSTER22";"CPU") sortirai la valeur "4"

    Call Macro1

    DRP = DRPDATA

End Function

Sub Macro1()

    Dim DRPDATA As Integer

    With Sheets("Feuil1")

        lastrow = .Range("B65000").End(xlUp).Row
        DRPDATA = 0

        For i = 2 To lastrow

            If .Cells(i, 2).Value = Cluster Then

                If .Cells(i, 6).Value = "Oui" Then

                    If CPU_RAM_Alloc = "CPU" Then DRPDATA = DRPDATA + .Cells(i, 3).Value

                    If CPU_RAM_Alloc = "RAM" Then DRPDATA = DRPDATA + .Cells(i, 4).Value

                    If CPU_RAM_Alloc = "Alloc" Then DRPDATA = DRPDATA + .Cells(i, 5).Value

                End If

            End If

        Next

    End With

End Sub

Le fichier est joint,

Merci de votre lecture.

11classeur1.xlsm (15.92 Ko)

Bonjour,

une proposition de correction

Function DRP(Cluster, CPU_RAM_Alloc) As Integer
 'exemple =DRP("CLUSTER22";"CPU") sortirai la valeur "4"

    Dim DRPDATA As Integer
    With Sheets("Feuil1")
           lastrow = .Range("B65000").End(xlUp).Row
        DRPDATA = 0
        For i = 2 To lastrow 
            If .Cells(i, 2).Value = Cluster Then
                If .Cells(i, 6).Value = "Oui" Then
                    If CPU_RAM_Alloc = "CPU" Then DRPDATA = DRPDATA + .Cells(i, 3).Value
                    If CPU_RAM_Alloc = "RAM" Then DRPDATA = DRPDATA + .Cells(i, 4).Value
                    If CPU_RAM_Alloc = "Alloc" Then DRPDATA = DRPDATA + .Cells(i, 5).Value
                End If
            End If
        Next
    End With

    DRP = DRPDATA

End Function

les variables déclarées (implicitement ou explicitement) à l'intérieur d'une procédure ou d'une fonction, ne sont pas connues en dehors de celle-ci.

dans ton code initial, quand tu lances macro1 à partir de ta fonction DRP, les variables cluster, CPU_RAM_ALLOC sont des variables différentes de celles définies dans DRP, de même DRPDATA.

Merci pour ton aide, cela fonctionne parfaitement

EDIT : Création d'un nouveau post

Rechercher des sujets similaires à "creation function"