Excel VBA
Résolu/Fermé
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
-
6 juil. 2009 à 14:30
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 7 juil. 2009 à 15:11
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 7 juil. 2009 à 15:11
A voir également:
- Excel VBA
- Liste déroulante excel - Guide
- Formule excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Mise en forme conditionnelle excel - Guide
15 réponses
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
6 juil. 2009 à 15:07
6 juil. 2009 à 15:07
pour etre peut etre un peu plus clair voila ce qu'il me fait en faisant varier la première condition de 1 à 3 donc du coup 3 fois ça.
mais ca ne fonctionne pas
End Function
merci d'avance
mais ca ne fonctionne pas
Function caf() If Cells.Value = 1 Then If Cells.Value < 19513 Then If Cells.Value = O Then caf = 441.63 Else If Cells.Value = N Then caf = 220.82 Next Next Else If Cells.Value > 19513 And Cells.Value < 43463 Then If Cells.Value = O Then caf = 278.48 Else If Cells.Value = N Then caf = 139.27 Next Next Else If Cells.Value > 43463 Then If Cells.Value = O Then caf = 167.07 Else If Cells.Value = N Then caf = 83.54 Next Next Next Next
End Function
merci d'avance
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
6 juil. 2009 à 16:13
6 juil. 2009 à 16:13
bonjour,
c'est une nonne idée d'utiliser une fonction.
mais la formulation est incorrecte.
j'utiliserai un passage de paramètres...
comme ça.
ensuite tu pourras adapter les valeurs des arguments
par exemple tu mets x=caf(range("H11"),range("J11"),Range("K11"))
Sub test()
X = caf(19513, 1, "O")
End Sub
Function caf(arg1 As Variant, arg2 As Integer, argr3 As String) As Variant
mavaleur = "OK" 'pour tester
If arg1 < 19513 Then
'cas ou arg1 <19513
If arg2 = 1 Then
'arg2 =1
If arg3 <> "O" Then
'arg3 ne contient pas O
'je fais ceci cela
caf = mavaleur
Else
'arg3 contient "O"
'idem pour le boulot
caf = mavaleur
End If
Else
'arg2 a une autre valeur
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
End If
ElseIf arg1 > 19513 And arg1 < 43363 Then
'cas ou est supérieur à 19513 et inférieur ...
If arg2 = 1 Then
'arg2 =1
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
Else
'arg2 a une autre valeur
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
End If
Else
'les autres cas ici
If arg2 = 1 Then
'arg2 =1
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
Else
'arg2 a une autre valeur
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
End If
End If
End Function
c'est une nonne idée d'utiliser une fonction.
mais la formulation est incorrecte.
j'utiliserai un passage de paramètres...
comme ça.
ensuite tu pourras adapter les valeurs des arguments
par exemple tu mets x=caf(range("H11"),range("J11"),Range("K11"))
Sub test()
X = caf(19513, 1, "O")
End Sub
Function caf(arg1 As Variant, arg2 As Integer, argr3 As String) As Variant
mavaleur = "OK" 'pour tester
If arg1 < 19513 Then
'cas ou arg1 <19513
If arg2 = 1 Then
'arg2 =1
If arg3 <> "O" Then
'arg3 ne contient pas O
'je fais ceci cela
caf = mavaleur
Else
'arg3 contient "O"
'idem pour le boulot
caf = mavaleur
End If
Else
'arg2 a une autre valeur
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
End If
ElseIf arg1 > 19513 And arg1 < 43363 Then
'cas ou est supérieur à 19513 et inférieur ...
If arg2 = 1 Then
'arg2 =1
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
Else
'arg2 a une autre valeur
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
End If
Else
'les autres cas ici
If arg2 = 1 Then
'arg2 =1
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
Else
'arg2 a une autre valeur
If arg3 <> "O" Then
'arg3 ne contient pas O
caf = mavaleur
Else
'arg3 contient "O"
caf = mavaleur
End If
End If
End If
End Function
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
6 juil. 2009 à 18:12
6 juil. 2009 à 18:12
merci pour ta réponse
je vois biens ce que tu veux me faire voir cependant je ne vois pas comment je fai appel à ma fonction dans ma feuille ???
je vois biens ce que tu veux me faire voir cependant je ne vois pas comment je fai appel à ma fonction dans ma feuille ???
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
6 juil. 2009 à 19:40
6 juil. 2009 à 19:40
up please
lorsque je met "=caf(les 3 cellules)"
je n'ai pas de valeur
merci
lorsque je met "=caf(les 3 cellules)"
je n'ai pas de valeur
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
6 juil. 2009 à 21:06
6 juil. 2009 à 21:06
up please
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
6 juil. 2009 à 21:28
6 juil. 2009 à 21:28
une macro pour tester
Sub test()
' x: variable qui reçoit le résultat de la fonction : 1 résultat et 1 seul.
'X=caf(un variant,un entier,une chaine)
'si les différentes tests donne une solution alors caf prend la valeur d'un variant (chaine ou chiffre)
'dans mon cas je lui retourne ok mais tu pourrais avoir 88.5 ou vrai
X = caf(19513, 1, "O")
'les cellules que tu testes sont en H, J, K
'tu as donc le droit d'écrire
X=caf(range("H11"),range("J11"),Range("K11"))
End Sub
Dans la fonction, je n'ai fait que t'écrire les différents cas possibles Mais dans tous les cas elle renvoie OK , en fait c'est à toi d'adapter.
Si tu as besoin de plus d'infos....
tu le dis.
A+
Sub test()
' x: variable qui reçoit le résultat de la fonction : 1 résultat et 1 seul.
'X=caf(un variant,un entier,une chaine)
'si les différentes tests donne une solution alors caf prend la valeur d'un variant (chaine ou chiffre)
'dans mon cas je lui retourne ok mais tu pourrais avoir 88.5 ou vrai
X = caf(19513, 1, "O")
'les cellules que tu testes sont en H, J, K
'tu as donc le droit d'écrire
X=caf(range("H11"),range("J11"),Range("K11"))
End Sub
Dans la fonction, je n'ai fait que t'écrire les différents cas possibles Mais dans tous les cas elle renvoie OK , en fait c'est à toi d'adapter.
Si tu as besoin de plus d'infos....
tu le dis.
A+
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
6 juil. 2009 à 23:04
6 juil. 2009 à 23:04
j'arrive à voir le message ok a l'aide d'une msgbox mais je vois pas comment faire apparaitre ok dans la cellule desirée
merci
merci
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
6 juil. 2009 à 23:07
6 juil. 2009 à 23:07
c bon pas de souci g resolu le probleme par contre je sais pas comment
merci pour tout
merci pour tout
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
7 juil. 2009 à 08:15
7 juil. 2009 à 08:15
bonjour,
je vois que tu travailles tard.
pour écrire dans une cellule...tu fais.
range("M11").value=caf(range("H11"),range("J11"),Range("K11"))
tout simplement.
je vois que tu travailles tard.
pour écrire dans une cellule...tu fais.
range("M11").value=caf(range("H11"),range("J11"),Range("K11"))
tout simplement.
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
7 juil. 2009 à 12:40
7 juil. 2009 à 12:40
voila j'ai fini de mettre toute les valeurs dont j'ai besoin mais lorsque j'utilise ma fonction dans ma feuille j'ai une erreur me disant bloc if sans end if et quand je met les endif il me dit if sans else
voila mon code (il est long désolé)
voila mon code (il est long désolé)
Function caf(arg1 As Variant, arg2 As Integer, argr3 As String) As Variant If arg1 < 19513 Then 'cas ou arg1 <19513 If arg2 = 1 Then 'arg2 = 1 enfant If arg3 <> "O" Then 'arg3 = pas moins de 3 ans caf = 220.82 Else 'arg3 = moins de 3 ans caf = 441.63 End If End If Else If arg1 < 22467 Then If arg2 = 2 Then 'arg2 = 2 enfants If arg3 <> "O" Then 'arg3 = pas moins de 3 ans caf = 220.82 Else 'arg3 = moins de 3 ans caf = 441.63 End If End If Else If arg1 < 26010 Then If arg2 = 3 Then 'arg2 = 3 enfants If arg3 <> "O" Then 'arg3 = pas moins de 3 ans caf = 220.82 Else 'arg3 = moins de 3 ans caf = 441.63 End If End If Else If arg1 > 19513 And arg1 < 43363 Then 'cas ou est supérieur à 19513 et inférieur ... If arg2 = 1 Then 'arg2 =1 enfant If arg3 <> "O" Then 'arg3 = pas moins de 3 ans caf = 139.27 Else 'arg3 = moins de 3 ans caf = 278.48 End If End If Else If arg1 > 22567 And arg1 < 49926 Then If arg2 = 2 Then 'arg2 = 2 enfants If arg3 <> "O" Then 'arg3 = pas moins de 3 ans caf = 139.27 Else 'arg3 = moins de 3 ans caf = 278.48 End If End If Else If arg1 > 26010 And arg1 < 57801 Then If arg2 = 3 Then 'arg2 = 3 enfants If arg3 <> "O" Then 'arg3 = pas moins de 3 ans caf = 139.27 Else 'arg3 = moins de 3 ans caf = 278.48 End If End If Else If arg1 > 43363 Then 'cas ou est supérieur à 43363 If arg2 = 1 Then 'arg2 =1 enfant If arg3 <> "O" Then 'arg3 = pas moins de 3 ans caf = 83.54 Else 'arg3 = moins de 3 ans caf = 167.07 End If End If Else If arg1 > 49926 Then If arg2 = 2 Then 'arg2 = 2 enfants If arg3 <> "O" Then 'arg3 = pas moins de 3 ans caf = 278.48 Else 'arg3 = moins de 3 ans caf = 139.27 End If End If Else If arg1 > 57801 Then If arg2 = 3 Then 'arg2 = 3 enfants If arg3 <> "O" Then 'arg3 = pas moins de 3 ans caf = 278.48 Else 'arg3 = moins de 3 ans caf = 139.27 End If End If End If End Function
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
7 juil. 2009 à 14:11
7 juil. 2009 à 14:11
je regarde.
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
7 juil. 2009 à 14:25
7 juil. 2009 à 14:25
en gros moi pour utiliser la fonction je me met sur ma cellule et ecrit: =caf(C10;E10;G10)
chaque cellule fai donc reference à chaque arg du code vba
merci
chaque cellule fai donc reference à chaque arg du code vba
merci
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
7 juil. 2009 à 14:34
7 juil. 2009 à 14:34
arg3 tu avais écris argr3.
donc comme tu utilisais arg3 ...mauvaise pioche il restait vide car jamais renseigné
donc comme tu utilisais arg3 ...mauvaise pioche il restait vide car jamais renseigné
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
7 juil. 2009 à 14:32
7 juil. 2009 à 14:32
il y avait des erreurs de syntaxe et une fautes d'hortographe
il faut ecrire
if condition then
elseif autre condition
elseif autre chose
endif
je n'ai pas de bug après correction
A toi de tester
Function caf(arg1 As Variant, arg2 As Integer, arg3 As String) As Variant
If arg1 < 19513 Then
'cas ou arg1 <19513
If arg2 = 1 Then
'arg2 = 1 enfant
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 220.82
Else
'arg3 = moins de 3 ans
caf = 441.63
End If
End If
ElseIf arg1 < 22467 Then
If arg2 = 2 Then
'arg2 = 2 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 220.82
Else
'arg3 = moins de 3 ans
caf = 441.63
End If
End If
ElseIf arg1 < 26010 Then
If arg2 = 3 Then
'arg2 = 3 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 220.82
Else
'arg3 = moins de 3 ans
caf = 441.63
End If
End If
ElseIf arg1 > 19513 And arg1 < 43363 Then
'cas ou est supérieur à 19513 et inférieur ...
If arg2 = 1 Then
'arg2 =1 enfant
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 139.27
Else
'arg3 = moins de 3 ans
caf = 278.48
End If
End If
ElseIf arg1 > 22567 And arg1 < 49926 Then
If arg2 = 2 Then
'arg2 = 2 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 139.27
Else
'arg3 = moins de 3 ans
caf = 278.48
End If
End If
ElseIf arg1 > 26010 And arg1 < 57801 Then
If arg2 = 3 Then
'arg2 = 3 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 139.27
Else
'arg3 = moins de 3 ans
caf = 278.48
End If
End If
ElseIf arg1 > 43363 Then
'cas ou est supérieur à 43363
If arg2 = 1 Then
'arg2 =1 enfant
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 83.54
Else
'arg3 = moins de 3 ans
caf = 167.07
End If
End If
ElseIf arg1 > 49926 Then
If arg2 = 2 Then
'arg2 = 2 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 278.48
Else
'arg3 = moins de 3 ans
caf = 139.27
End If
End If
ElseIf arg1 > 57801 Then
If arg2 = 3 Then
'arg2 = 3 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 278.48
Else
'arg3 = moins de 3 ans
caf = 139.27
End If
End If
End If
End Function
il faut ecrire
if condition then
elseif autre condition
elseif autre chose
endif
je n'ai pas de bug après correction
A toi de tester
Function caf(arg1 As Variant, arg2 As Integer, arg3 As String) As Variant
If arg1 < 19513 Then
'cas ou arg1 <19513
If arg2 = 1 Then
'arg2 = 1 enfant
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 220.82
Else
'arg3 = moins de 3 ans
caf = 441.63
End If
End If
ElseIf arg1 < 22467 Then
If arg2 = 2 Then
'arg2 = 2 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 220.82
Else
'arg3 = moins de 3 ans
caf = 441.63
End If
End If
ElseIf arg1 < 26010 Then
If arg2 = 3 Then
'arg2 = 3 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 220.82
Else
'arg3 = moins de 3 ans
caf = 441.63
End If
End If
ElseIf arg1 > 19513 And arg1 < 43363 Then
'cas ou est supérieur à 19513 et inférieur ...
If arg2 = 1 Then
'arg2 =1 enfant
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 139.27
Else
'arg3 = moins de 3 ans
caf = 278.48
End If
End If
ElseIf arg1 > 22567 And arg1 < 49926 Then
If arg2 = 2 Then
'arg2 = 2 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 139.27
Else
'arg3 = moins de 3 ans
caf = 278.48
End If
End If
ElseIf arg1 > 26010 And arg1 < 57801 Then
If arg2 = 3 Then
'arg2 = 3 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 139.27
Else
'arg3 = moins de 3 ans
caf = 278.48
End If
End If
ElseIf arg1 > 43363 Then
'cas ou est supérieur à 43363
If arg2 = 1 Then
'arg2 =1 enfant
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 83.54
Else
'arg3 = moins de 3 ans
caf = 167.07
End If
End If
ElseIf arg1 > 49926 Then
If arg2 = 2 Then
'arg2 = 2 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 278.48
Else
'arg3 = moins de 3 ans
caf = 139.27
End If
End If
ElseIf arg1 > 57801 Then
If arg2 = 3 Then
'arg2 = 3 enfants
If arg3 <> "O" Then
'arg3 = pas moins de 3 ans
caf = 278.48
Else
'arg3 = moins de 3 ans
caf = 139.27
End If
End If
End If
End Function
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
7 juil. 2009 à 14:59
7 juil. 2009 à 14:59
merci pour tout ca fonctionne comme je le voulais
un grand merci bidouilleur
un grand merci bidouilleur
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
289
7 juil. 2009 à 15:11
7 juil. 2009 à 15:11
tu penses à mettre en résolu ou signale - le à un modérateur... il le fera.
merci
Bonne journée.
R
merci
Bonne journée.
R