Je voudrais créer une fonction personnalisée qui renverrait soit le résultat
de ma formule, soit «» si une des cellules utilisée dans mon calcul est vide
ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la
fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du
calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma
fonction renverrait le résultat du calcul.
Est-ce que quelqu’un a une idée ?
J’ai réussi à créer une macro qui vérifie si les antécédents de la cellule
active contiennent tous des valeurs et qui insère « VRAI » dans la cellule en
dessous si l’un des antécédents est une cellule vide, mais ça ne l’a pas
beaucoup avancé… Pour info, le code de ma macro est à la fin du message.
J’ai pensé que je pourrais insérer ma formule en tant qu’argument texte dans
la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que tous
les antécédents de ma formule contiennent des valeurs. Le hic, c’est que si
je défini l’argument de ma fonction comme une chaine de caractère, je ne sais
pas comment faire pour que vba le voit comme une formule et recherche les
antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide !
Farah
Code de ma macro :
Sub Empty_precedent()
Dim Cd As Range
Dim ok As Boolean
ok = False
Set Cd = ActiveCell.DirectPrecedents
For Each d In Cd
If IsEmpty(d) Then
ok = True
End If
Next
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Monnerie
Bonjour, on peut utliser la fonction SI, la fonction ET et la fonction ESTVIDE du style : =SI(ET(ESTVIDE(A1);ESTVIDE(B1);ESTVIDE(C1));"<<>>";C1*A1/B1) si on veut intégrer une erreur il faut intégrer ESTERREUR avec la fonction OU exemple pour A1 : OU(ESTERREUR(A1);ESTVIDE(A1)) il y a surement plus simple en macro mais je ne suis pas compétent Bon courage
"Farah" a écrit dans le message de news:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le résultat de ma formule, soit «» si une des cellules utilisée dans mon calcul est vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule active contiennent tous des valeurs et qui insère « VRAI » dans la cellule en dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas beaucoup avancé. Pour info, le code de ma macro est à la fin du message.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument texte dans la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est que si je défini l'argument de ma fonction comme une chaine de caractère, je ne sais pas comment faire pour que vba le voit comme une formule et recherche les antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub
Bonjour,
on peut utliser la fonction SI, la fonction ET et la fonction ESTVIDE
du style :
=SI(ET(ESTVIDE(A1);ESTVIDE(B1);ESTVIDE(C1));"<<>>";C1*A1/B1)
si on veut intégrer une erreur il faut intégrer ESTERREUR avec la fonction
OU
exemple pour A1 : OU(ESTERREUR(A1);ESTVIDE(A1))
il y a surement plus simple en macro mais je ne suis pas compétent
Bon courage
"Farah" <Farah@discussions.microsoft.com> a écrit dans le message de news:
499AFEB1-4B4E-4A4A-BF91-BA14FBC74B99@microsoft.com...
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le
résultat
de ma formule, soit «» si une des cellules utilisée dans mon calcul est
vide
ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la
fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du
calcul est une erreur. Si les trois cellules contiennent un nombre, alors
ma
fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule
active contiennent tous des valeurs et qui insère « VRAI » dans la cellule
en
dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas
beaucoup avancé. Pour info, le code de ma macro est à la fin du message.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument texte
dans
la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que
tous
les antécédents de ma formule contiennent des valeurs. Le hic, c'est que
si
je défini l'argument de ma fonction comme une chaine de caractère, je ne
sais
pas comment faire pour que vba le voit comme une formule et recherche les
antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide !
Farah
Code de ma macro :
Sub Empty_precedent()
Dim Cd As Range
Dim ok As Boolean
ok = False
Set Cd = ActiveCell.DirectPrecedents
For Each d In Cd
If IsEmpty(d) Then
ok = True
End If
Next
Bonjour, on peut utliser la fonction SI, la fonction ET et la fonction ESTVIDE du style : =SI(ET(ESTVIDE(A1);ESTVIDE(B1);ESTVIDE(C1));"<<>>";C1*A1/B1) si on veut intégrer une erreur il faut intégrer ESTERREUR avec la fonction OU exemple pour A1 : OU(ESTERREUR(A1);ESTVIDE(A1)) il y a surement plus simple en macro mais je ne suis pas compétent Bon courage
"Farah" a écrit dans le message de news:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le résultat de ma formule, soit «» si une des cellules utilisée dans mon calcul est vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule active contiennent tous des valeurs et qui insère « VRAI » dans la cellule en dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas beaucoup avancé. Pour info, le code de ma macro est à la fin du message.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument texte dans la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est que si je défini l'argument de ma fonction comme une chaine de caractère, je ne sais pas comment faire pour que vba le voit comme une formule et recherche les antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub
JB
Bonjour,
Function mafonction(p) Application.Volatile oper = Array("+", "-", "*", "/") temp = p For i = 0 To UBound(oper) temp = Replace(temp, oper(i), " ") Next i temp = Replace(temp, "(", "") temp = Replace(temp, ")", "") a = Split(temp, " ") For i = 1 To UBound(a) If Range(a(i)) = 0 Or Range(a(i)) = "" Then témoin = True Next If témoin Then mafonction = "" Else mafonction = Evaluate(p) End If End Function
http://cjoint.com/?dhmYWVmreP
JB
On 7 mar, 12:20, Farah wrote:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le r ésultat de ma formule, soit <<>> si une des cellules utilisée dans mon calcul es t vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la fonction retournerait <<>> si C1, A1 ou B1 sont vide ou si le résultat d u calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents d e la cellule active contiennent tous des valeurs et qui insère << VRAI >> dans la cel lule en dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas beaucoup avancé... Pour info, le code de ma macro est à la fin du mess age.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument text e dans la fonction (=MaFonction (<< C1*A1/B1 >>)), puis je pourrais vérifier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est q ue si je défini l'argument de ma fonction comme une chaine de caractère, je ne sais pas comment faire pour que vba le voit comme une formule et recherche les antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPreceden ts).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub
Bonjour,
Function mafonction(p)
Application.Volatile
oper = Array("+", "-", "*", "/")
temp = p
For i = 0 To UBound(oper)
temp = Replace(temp, oper(i), " ")
Next i
temp = Replace(temp, "(", "")
temp = Replace(temp, ")", "")
a = Split(temp, " ")
For i = 1 To UBound(a)
If Range(a(i)) = 0 Or Range(a(i)) = "" Then témoin = True
Next
If témoin Then
mafonction = ""
Else
mafonction = Evaluate(p)
End If
End Function
http://cjoint.com/?dhmYWVmreP
JB
On 7 mar, 12:20, Farah <Fa...@discussions.microsoft.com> wrote:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le r ésultat
de ma formule, soit <<>> si une des cellules utilisée dans mon calcul es t vide
ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la
fonction retournerait <<>> si C1, A1 ou B1 sont vide ou si le résultat d u
calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma
fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents d e la cellule
active contiennent tous des valeurs et qui insère << VRAI >> dans la cel lule en
dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas
beaucoup avancé... Pour info, le code de ma macro est à la fin du mess age.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument text e dans
la fonction (=MaFonction (<< C1*A1/B1 >>)), puis je pourrais vérifier que tous
les antécédents de ma formule contiennent des valeurs. Le hic, c'est q ue si
je défini l'argument de ma fonction comme une chaine de caractère, je ne sais
pas comment faire pour que vba le voit comme une formule et recherche les
antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPreceden ts).
Merci de votre aide !
Farah
Code de ma macro :
Sub Empty_precedent()
Dim Cd As Range
Dim ok As Boolean
ok = False
Set Cd = ActiveCell.DirectPrecedents
For Each d In Cd
If IsEmpty(d) Then
ok = True
End If
Next
Function mafonction(p) Application.Volatile oper = Array("+", "-", "*", "/") temp = p For i = 0 To UBound(oper) temp = Replace(temp, oper(i), " ") Next i temp = Replace(temp, "(", "") temp = Replace(temp, ")", "") a = Split(temp, " ") For i = 1 To UBound(a) If Range(a(i)) = 0 Or Range(a(i)) = "" Then témoin = True Next If témoin Then mafonction = "" Else mafonction = Evaluate(p) End If End Function
http://cjoint.com/?dhmYWVmreP
JB
On 7 mar, 12:20, Farah wrote:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le r ésultat de ma formule, soit <<>> si une des cellules utilisée dans mon calcul es t vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la fonction retournerait <<>> si C1, A1 ou B1 sont vide ou si le résultat d u calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents d e la cellule active contiennent tous des valeurs et qui insère << VRAI >> dans la cel lule en dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas beaucoup avancé... Pour info, le code de ma macro est à la fin du mess age.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument text e dans la fonction (=MaFonction (<< C1*A1/B1 >>)), puis je pourrais vérifier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est q ue si je défini l'argument de ma fonction comme une chaine de caractère, je ne sais pas comment faire pour que vba le voit comme une formule et recherche les antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPreceden ts).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub
Jacky
Bonjour,
Peut-être sans macro =SI(NB(A1:C1)<>3;"Donnée absente ou non numérique";SI(ESTERREUR(C1*A1/B1);"Erreur";C1*A1/B1)) -- Salutations JJ
"Farah" a écrit dans le message de news:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le résultat de ma formule, soit «» si une des cellules utilisée dans mon calcul est vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule active contiennent tous des valeurs et qui insère « VRAI » dans la cellule en dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas beaucoup avancé. Pour info, le code de ma macro est à la fin du message.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument texte dans la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est que si je défini l'argument de ma fonction comme une chaine de caractère, je ne sais pas comment faire pour que vba le voit comme une formule et recherche les antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub
Bonjour,
Peut-être sans macro
=SI(NB(A1:C1)<>3;"Donnée absente ou non
numérique";SI(ESTERREUR(C1*A1/B1);"Erreur";C1*A1/B1))
--
Salutations
JJ
"Farah" <Farah@discussions.microsoft.com> a écrit dans le message de news:
499AFEB1-4B4E-4A4A-BF91-BA14FBC74B99@microsoft.com...
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le
résultat
de ma formule, soit «» si une des cellules utilisée dans mon calcul est
vide
ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la
fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du
calcul est une erreur. Si les trois cellules contiennent un nombre, alors
ma
fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule
active contiennent tous des valeurs et qui insère « VRAI » dans la cellule
en
dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas
beaucoup avancé. Pour info, le code de ma macro est à la fin du message.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument texte
dans
la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que
tous
les antécédents de ma formule contiennent des valeurs. Le hic, c'est que
si
je défini l'argument de ma fonction comme une chaine de caractère, je ne
sais
pas comment faire pour que vba le voit comme une formule et recherche les
antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide !
Farah
Code de ma macro :
Sub Empty_precedent()
Dim Cd As Range
Dim ok As Boolean
ok = False
Set Cd = ActiveCell.DirectPrecedents
For Each d In Cd
If IsEmpty(d) Then
ok = True
End If
Next
Peut-être sans macro =SI(NB(A1:C1)<>3;"Donnée absente ou non numérique";SI(ESTERREUR(C1*A1/B1);"Erreur";C1*A1/B1)) -- Salutations JJ
"Farah" a écrit dans le message de news:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le résultat de ma formule, soit «» si une des cellules utilisée dans mon calcul est vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule active contiennent tous des valeurs et qui insère « VRAI » dans la cellule en dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas beaucoup avancé. Pour info, le code de ma macro est à la fin du message.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument texte dans la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est que si je défini l'argument de ma fonction comme une chaine de caractère, je ne sais pas comment faire pour que vba le voit comme une formule et recherche les antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub
JB
Bonjour,
Je suppose que Farah veut une fonction générique pour toute expression et pas seulement pour l'exemple.
JB On 7 mar, 12:57, "Jacky" wrote:
Bonjour,
Peut-être sans macro =SI(NB(A1:C1)<>3;"Donnée absente ou non numérique";SI(ESTERREUR(C1*A1/B1);"Erreur";C1*A1/B1)) -- Salutations JJ
"Farah" a écrit dans le message de new s:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le résultat de ma formule, soit «» si une des cellules utilisée dans mon calcu l est vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et l a fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résult at du calcul est une erreur. Si les trois cellules contiennent un nombre, alor s ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule active contiennent tous des valeurs et qui insère « VRAI » dans la cellule en dessous si l'un des antécédents est une cellule vide, mais ça ne l 'a pas beaucoup avancé. Pour info, le code de ma macro est à la fin du mess age.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument te xte dans la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérif ier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est que si je défini l'argument de ma fonction comme une chaine de caractère, j e ne sais pas comment faire pour que vba le voit comme une formule et recherche le s antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPreced ents).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Je suppose que Farah veut une fonction générique pour toute expression
et pas seulement pour l'exemple.
JB
On 7 mar, 12:57, "Jacky" <Dup...@marcel.fr> wrote:
Bonjour,
Peut-être sans macro
=SI(NB(A1:C1)<>3;"Donnée absente ou non
numérique";SI(ESTERREUR(C1*A1/B1);"Erreur";C1*A1/B1))
--
Salutations
JJ
"Farah" <Fa...@discussions.microsoft.com> a écrit dans le message de new s:
499AFEB1-4B4E-4A4A-BF91-BA14FBC74...@microsoft.com...
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le
résultat
de ma formule, soit «» si une des cellules utilisée dans mon calcu l est
vide
ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et l a
fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résult at du
calcul est une erreur. Si les trois cellules contiennent un nombre, alor s
ma
fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule
active contiennent tous des valeurs et qui insère « VRAI » dans la cellule
en
dessous si l'un des antécédents est une cellule vide, mais ça ne l 'a pas
beaucoup avancé. Pour info, le code de ma macro est à la fin du mess age.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument te xte
dans
la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérif ier que
tous
les antécédents de ma formule contiennent des valeurs. Le hic, c'est que
si
je défini l'argument de ma fonction comme une chaine de caractère, j e ne
sais
pas comment faire pour que vba le voit comme une formule et recherche le s
antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPreced ents).
Merci de votre aide !
Farah
Code de ma macro :
Sub Empty_precedent()
Dim Cd As Range
Dim ok As Boolean
ok = False
Set Cd = ActiveCell.DirectPrecedents
For Each d In Cd
If IsEmpty(d) Then
ok = True
End If
Next
ActiveCell.Offset(1).Value = ok
End Sub- Masquer le texte des messages précédents -
Je suppose que Farah veut une fonction générique pour toute expression et pas seulement pour l'exemple.
JB On 7 mar, 12:57, "Jacky" wrote:
Bonjour,
Peut-être sans macro =SI(NB(A1:C1)<>3;"Donnée absente ou non numérique";SI(ESTERREUR(C1*A1/B1);"Erreur";C1*A1/B1)) -- Salutations JJ
"Farah" a écrit dans le message de new s:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le résultat de ma formule, soit «» si une des cellules utilisée dans mon calcu l est vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et l a fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résult at du calcul est une erreur. Si les trois cellules contiennent un nombre, alor s ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule active contiennent tous des valeurs et qui insère « VRAI » dans la cellule en dessous si l'un des antécédents est une cellule vide, mais ça ne l 'a pas beaucoup avancé. Pour info, le code de ma macro est à la fin du mess age.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument te xte dans la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérif ier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est que si je défini l'argument de ma fonction comme une chaine de caractère, j e ne sais pas comment faire pour que vba le voit comme une formule et recherche le s antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPreced ents).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Farah
Merci à tous les trois d'avoir répondu si rapidement.
à JB: Effectivement, je cherche une fonction qui marcherait pour toute expression. J'ai pris un exemple simple, mais parfois j'ai des moyennes, des carrés, etc. Donc la fonction que vous suggérez (très astucieuse par ailleurs) ne résout pas entièrement mon problème.
à Monnerie : pour l’instant j’utilise la fonction Si, comme vous le proposez, mais c’est un peu lourd, c’est pour ça que je voulais créer une fonction personnalisée.
"JB" wrote:
Bonjour,
Je suppose que Farah veut une fonction générique pour toute expression et pas seulement pour l'exemple.
JB On 7 mar, 12:57, "Jacky" wrote:
Bonjour,
Peut-être sans macro =SI(NB(A1:C1)<>3;"Donnée absente ou non numérique";SI(ESTERREUR(C1*A1/B1);"Erreur";C1*A1/B1)) -- Salutations JJ
"Farah" a écrit dans le message de news:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le résultat de ma formule, soit «» si une des cellules utilisée dans mon calcul est vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule active contiennent tous des valeurs et qui insère « VRAI » dans la cellule en dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas beaucoup avancé. Pour info, le code de ma macro est à la fin du message.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument texte dans la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est que si je défini l'argument de ma fonction comme une chaine de caractère, je ne sais pas comment faire pour que vba le voit comme une formule et recherche les antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Merci à tous les trois d'avoir répondu si rapidement.
à JB: Effectivement, je cherche une fonction qui marcherait pour toute
expression. J'ai pris un exemple simple, mais parfois j'ai des moyennes, des
carrés, etc. Donc la fonction que vous suggérez (très astucieuse par
ailleurs) ne résout pas entièrement mon problème.
à Monnerie : pour l’instant j’utilise la fonction Si, comme vous le
proposez, mais c’est un peu lourd, c’est pour ça que je voulais créer une
fonction personnalisée.
"JB" wrote:
Bonjour,
Je suppose que Farah veut une fonction générique pour toute expression
et pas seulement pour l'exemple.
JB
On 7 mar, 12:57, "Jacky" <Dup...@marcel.fr> wrote:
Bonjour,
Peut-être sans macro
=SI(NB(A1:C1)<>3;"Donnée absente ou non
numérique";SI(ESTERREUR(C1*A1/B1);"Erreur";C1*A1/B1))
--
Salutations
JJ
"Farah" <Fa...@discussions.microsoft.com> a écrit dans le message de news:
499AFEB1-4B4E-4A4A-BF91-BA14FBC74...@microsoft.com...
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le
résultat
de ma formule, soit «» si une des cellules utilisée dans mon calcul est
vide
ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la
fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du
calcul est une erreur. Si les trois cellules contiennent un nombre, alors
ma
fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule
active contiennent tous des valeurs et qui insère « VRAI » dans la cellule
en
dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas
beaucoup avancé. Pour info, le code de ma macro est à la fin du message.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument texte
dans
la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que
tous
les antécédents de ma formule contiennent des valeurs. Le hic, c'est que
si
je défini l'argument de ma fonction comme une chaine de caractère, je ne
sais
pas comment faire pour que vba le voit comme une formule et recherche les
antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide !
Farah
Code de ma macro :
Sub Empty_precedent()
Dim Cd As Range
Dim ok As Boolean
ok = False
Set Cd = ActiveCell.DirectPrecedents
For Each d In Cd
If IsEmpty(d) Then
ok = True
End If
Next
ActiveCell.Offset(1).Value = ok
End Sub- Masquer le texte des messages précédents -
Merci à tous les trois d'avoir répondu si rapidement.
à JB: Effectivement, je cherche une fonction qui marcherait pour toute expression. J'ai pris un exemple simple, mais parfois j'ai des moyennes, des carrés, etc. Donc la fonction que vous suggérez (très astucieuse par ailleurs) ne résout pas entièrement mon problème.
à Monnerie : pour l’instant j’utilise la fonction Si, comme vous le proposez, mais c’est un peu lourd, c’est pour ça que je voulais créer une fonction personnalisée.
"JB" wrote:
Bonjour,
Je suppose que Farah veut une fonction générique pour toute expression et pas seulement pour l'exemple.
JB On 7 mar, 12:57, "Jacky" wrote:
Bonjour,
Peut-être sans macro =SI(NB(A1:C1)<>3;"Donnée absente ou non numérique";SI(ESTERREUR(C1*A1/B1);"Erreur";C1*A1/B1)) -- Salutations JJ
"Farah" a écrit dans le message de news:
Bonjour,
Je voudrais créer une fonction personnalisée qui renverrait soit le résultat de ma formule, soit «» si une des cellules utilisée dans mon calcul est vide ou contient une valeur non valide (erreur ou texte par exemple).
Par exemple, je taperai dans une cellule =MaFonction (C1*A1/B1) , et la fonction retournerait «» si C1, A1 ou B1 sont vide ou si le résultat du calcul est une erreur. Si les trois cellules contiennent un nombre, alors ma fonction renverrait le résultat du calcul.
Est-ce que quelqu'un a une idée ?
J'ai réussi à créer une macro qui vérifie si les antécédents de la cellule active contiennent tous des valeurs et qui insère « VRAI » dans la cellule en dessous si l'un des antécédents est une cellule vide, mais ça ne l'a pas beaucoup avancé. Pour info, le code de ma macro est à la fin du message.
J'ai pensé que je pourrais insérer ma formule en tant qu'argument texte dans la fonction (=MaFonction (« C1*A1/B1 »)), puis je pourrais vérifier que tous les antécédents de ma formule contiennent des valeurs. Le hic, c'est que si je défini l'argument de ma fonction comme une chaine de caractère, je ne sais pas comment faire pour que vba le voit comme une formule et recherche les antécédents. (i.e. je ne peux pas utiliser la fonction .DirectPrecedents).
Merci de votre aide ! Farah
Code de ma macro : Sub Empty_precedent()
Dim Cd As Range Dim ok As Boolean ok = False
Set Cd = ActiveCell.DirectPrecedents For Each d In Cd If IsEmpty(d) Then ok = True End If Next
ActiveCell.Offset(1).Value = ok
End Sub- Masquer le texte des messages précédents -