Utilisation de fonction correctement Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
g
gloutoni
Membre habitué
Membre habitué
Messages : 149
Inscrit le : 12 février 2015
Version d'Excel : 2010

Message par gloutoni » 6 avril 2015, 16:14

Bonjour,

J'ai ce code simple, mais je souhaiterais que ces 2 fonctions fonctionne correctement :
Sub Test()
	Dim A as integer
	Dim B as integer
	Dim C as integer
	Dim D as boolean
	D = False
	
	A = cells(1,1).value
	B = cells(2,1).value

	C = calcul(A, B)
	
	D = valide(C,D)
	
	if D = True then
		msgbox("VALIDE")
	else
	        msgbox("INVALIDE")
	end if
End Sub

Function calcul(A,B)
	'calcul à faire + retourner'
	AxB
End Function

Function valide(ByVal C As String, ByRef D As Boolean)
	if C = 2 then
		D = true
	else
		D = false
	end if
End Function
La fonction calcul devrait permettre d'effectuer le calcul et la valide permet de changer D (boolean) en true ou false selon un simple test.

Comment communiquer des variables à des fonctions et retourner un boolean, ou alors communiquer des variables et retourner les variables modifié ?

D'avance merci pour votre aide.
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 791
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 6 avril 2015, 17:59

  Bonjour.
Function Calcule(A As Long, B As Long) As Long
         Calcule = A * B
End Function

Function Valide(C As Long) As Boolean
         Valide = C = 2
End Function
    
Sub Test()
    If Valide(Calcule(Cells(1).Value, Cells(2, 1).Value)) Then MsgBox ("VALIDE") Else MsgBox ("INVALIDE")
End Sub
  Sinon droit au but :
Sub Test2()
    MsgBox IIf(Cells(1).Value * Cells(2, 1).Value = 2, "VALIDE", "INVALIDE")
End Sub
g
gloutoni
Membre habitué
Membre habitué
Messages : 149
Inscrit le : 12 février 2015
Version d'Excel : 2010

Message par gloutoni » 6 avril 2015, 18:58

Merci cela fonctionne en fait ce n'est pas tant la simplicité, c'est le fonctionnement que je voulais comprendre.

Sujet résolu merci beaucoup, considérer la fonction fille comme un objet dans la fonction mère, je pense avoir compris.

Merci

Mais pourquoi pour les variables de types intéger tu ne met pas "integer" comme type dans les parenthèse de la fonction ?
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 791
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 6 avril 2015, 19:29

   Le produit d'Integer pouvant dépasser la capacité du type Integer, mieux vaut utiliser le type Long

  Exemple :
Sub Demo()
    Dim A As Integer
        A = 200 * 170 
End Sub
  Pour les paramètres de la fonction, tu peux utiliser Integer, tant que les valeurs ne dépassent pas son cadre …
g
gloutoni
Membre habitué
Membre habitué
Messages : 149
Inscrit le : 12 février 2015
Version d'Excel : 2010

Message par gloutoni » 6 avril 2015, 22:57

Noté merci
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message