OVH Cloud OVH Cloud

Formule Logarithmique avec LN

7 réponses
Avatar
Redtym
Bonjour;
Je recherche un peu d'aide.

Je souhaiterais savoir s'il était possible de faire une formule LN avec des cases vide, car je souhaite calculer y=yaln(x)+b pour ma création de formule.

=pente(yy;ln(xx))
=ordonne.origine(yy;ln(nn))

Pour cela j'utilise VBA afin d'aller chercher des valeurs sauf que j'ai aussi des cases vides et ça la fonction LN ne supporte pas.

Avez-vous des suggestions?

7 réponses

Avatar
Michd
Bonjour,
Avant d'utiliser ta formule, tu testes le contenu de la cellule
Exemple : Le double test est nécessaire, car une cellule au
format standard peut contenir du texte ou du numérique.
C'est le caprice de la fonction "isnumeric()"
With Worksheets("Feuil1")
If .Range("B1") <> "" And IsNumeric(.Range("B1")) Then
x = Application.Ln(.Range("B1"))
End If
End With
MichD
Avatar
redtym
Le mercredi 14 Mars 2018 à 12:51 par Redtym :
Bonjour;
Je recherche un peu d'aide.
Je souhaiterais savoir s'il était possible de faire une formule LN avec
des cases vide, car je souhaite calculer y=yaln(x)+b pour ma création de
formule.
=pente(yy;ln(xx))
=ordonne.origine(yy;ln(nn))
Pour cela j'utilise VBA afin d'aller chercher des valeurs sauf que j'ai aussi
des cases vides et ça la fonction LN ne supporte pas.
Avez-vous des suggestions?
Merci mais,
Les problème c'est qu'avec ma macro je demande beaucoup de données car je fais des filtres avancer pour compiler tous mes données, mais certaines lignes non pas de valeur et du coup quand je souhaite faire Ln d'une plage avec des cases vides la formule ne fonctionne pas
Macro:
Sub Donnée_Ln2()
'
' Donnée_Ln2 Macro
'
Application.DisplayAlerts = False
' Suppresion des méssages d'erreur car pas de place
Sheets("Calcul").Range("AA4:AJ300").ClearContents
Sheets("DEB").Range("D2:AC447").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("G3:G4"), CopyToRange:=Range("AA3:AD4"), Unique:= _
False
Sheets("Broyage").Range("D1:U272").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("G3:G4"), CopyToRange:=Range("AE3:AF4"), Unique:= _
False
Sheets("C+P").Range("D1:AC472").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("G3:G4"), CopyToRange:=Range("AG3:AJ5"), Unique:= _
False
Application.DisplayAlerts = True
Range("G4").Select
End Sub
Cdt
Avatar
Michd
Si la cellule est vide, la fonction LN retourne une erreur #nombre!
Je ne peux pas modifier cela. Je n'y peux pas grand-chose...
Tu pourrais dans ton filtre éliminer les cellules vides de cette colonne de
la plage résultat.
MichD
Avatar
Michd
Tu pourrais dans ton filtre éliminer les cellules vides de cette colonne de
la plage résultat.
Juste un petit exemple de critère de filtre avancé utilisant une formule:
Plage de critère : E1:E2
E1 tu laisses totalement vide ou tu utilises une étiquette qui n'apparaît
pas ton tableau des données
E2 : La formule : =ET(A2="A";ESTNUM(B2))
En supposant que tu veux filtrer la colonne A ayant le contenu A et obtenir
seulement les lignes où il y a un nombre dans la colonne B
MichD
Avatar
redtym
Le mercredi 14 Mars 2018 à 12:51 par Redtym :
Bonjour;
Je recherche un peu d'aide.
Je souhaiterais savoir s'il était possible de faire une formule LN avec
des cases vide, car je souhaite calculer y=yaln(x)+b pour ma création de
formule.
=pente(yy;ln(xx))
=ordonne.origine(yy;ln(nn))
Pour cela j'utilise VBA afin d'aller chercher des valeurs sauf que j'ai aussi
des cases vides et ça la fonction LN ne supporte pas.
Avez-vous des suggestions?
Oui je suis d'accord avec toi mais je ne sais pas comment faire. :s
Avatar
Michd
Au besoin, pour insérer la formule donnée dans une cellule :
Range("E1") totalement vide
Range("E2").Formula = "=AND(A2=""A"",ISNUMBER(B2))"
Zone de critère : Range("E1:E2")
MichD
Tu pourrais dans ton filtre éliminer les cellules vides de cette colonne de
la plage résultat.
Juste un petit exemple de critère de filtre avancé utilisant une formule:
Plage de critère : E1:E2
E1 tu laisses totalement vide ou tu utilises une étiquette qui n'apparaît
pas ton tableau des données
E2 : La formule : =ET(A2="A";ESTNUM(B2))
En supposant que tu veux filtrer la colonne A ayant le contenu A et obtenir
seulement les lignes où il y a un nombre dans la colonne B
MichD
Avatar
HB
Bonsoir,
Le 14/03/2018 à 13:17, Michd a écrit :
Bonjour,
Avant d'utiliser ta formule, tu testes le contenu de la cellule
Exemple : Le double test est nécessaire, car une cellule au
format standard peut contenir du texte ou du numérique.
C'est le caprice de la fonction "isnumeric()"
With Worksheets("Feuil1")
   If .Range("B1") <> "" And IsNumeric(.Range("B1")) Then
       x = Application.Ln(.Range("B1"))
   End If
End With
MichD

En toute rigueur, il faut que l'argument X
soit strictement positif pour Ln(X) existe.
ce qui va faire un test un peu plus long mais qui évitera
d'éventuelles surprises plus tard.
Sinon la formule dans la cellule peut mettre LN(B2) si LN(B2) ne
retourne pas un erreur ; c'est finalement plus clair ;o)
dans VBA
pour mettre la formule en D2
Range("D2").Formula = "=IF(ISERROR(LN(B2)),"""",LN(B2))"
HB
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus