Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/09/2011, 18h02   #1
Invité de passage
 
Inscription : mai 2008
Messages : 27
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 27
Points : 3
Points : 3
Par défaut Log10 en VBA ne fonctionne pas

Bonjour
j'ai réalisé une fonction personnalisée le log10 décimal qui n'existe pas dans excel VBA.
Je souhaiterai l'insérer dans mon code sub principal, mais ça ne marche pas j'obtiens que des 0 dans mon tableau.
merci pour votre aide bien cordialement
herbine
HERBINE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 18h24   #2
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonsoir,

Il faudrait que tu poste ton code.

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2011, 18h37   #3
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 706
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 706
Points : 3 627
Points : 3 627
Salut, le Log de base 10 sous VBA ?
Code :
Application.WorksheetFunction.Log10(12.555)
car effectivement sans plus d'explications, difficile de faire mieux
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 07h26   #4
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour,

Si mes souvenirs sont bons, le Log de base 10 n'existe sous Excel 2003 (il existe bien sûr sous 2007 et +), pour ça j'utilisais la fonction suivante :
Code :
1
2
3
4
5
6
 
Function Log10(Valeur As Double) As Double
 
    Log10 = Log(Valeur) / Log(10#)
 
End Function
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 07h31   #5
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 706
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 706
Points : 3 627
Points : 3 627
Salut,à priori c'est faux, car même sous 97, l'exemple donné plus haut :
Code :
Application.WorksheetFunction.Log10(12.555)
fonctionne
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 08h15   #6
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Alors autant pour moi !
Désolé d'avoir dis une bêtise

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 08h47   #7
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 706
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 706
Points : 3 627
Points : 3 627
Salut, pas grave car même si chez moi cela fonctionne ( j'ai quand même 97 2002 et 2007 qui cohabitent ) et donc j'ai bien écrit "à priori"
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 18h31   #8
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Log 10 existait bien sous 97, il est employé p42 ici :
Programmer efficacement avec Excel en VBA http://bidou.developpez.com/tutoriels/ExcelVBA/ - tagué 97 "Cet article contient du code compatible avec les versions Excel 97 et supérieures."

et il est cité dans un livre sur Excel 97 de Corinne Hervo

cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 07h21   #9
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonjour à toutes et tous,

La question que je me pose, c'est pourquoi Herbine réinvente la roue ?
Je n'ai plus VB6 installé pour vérifier, cette fonction existait-elle dans VB6 ?

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/09/2011, 10h54   #10
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 706
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 706
Points : 3 627
Points : 3 627
Salut, seul Log ( Log Népérien Ln ou Log de Base e ) existait sous VB6
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 12h53   #11
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
OK kiki29, il me semblai bien que cette fonction n'existait pas à un moment donné et j'ai mélangé VB (VB6) et VBA.

Je te remercie pour la précision.

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 05h59   #12
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 398
Points : 14 398
Envoyer un message via Skype™ à Pierre Fauconnier
Salut.

Juste pour la précision, LOG10 n'existe pas en VBA pur.
Code :
application.worksheetfunction.log()
est l'utilisation en VBA d'une fonction EXCEL et nécessite que la librairie Excel soit cochée. C'est naturel avec Excel, mais ce code ne fonctionnera pas en VBA Access, VBA Word ou VB6 (sans cocher une référence à Excel).

Pour info, en Excel ( et donc aussi en VBA avec worksheetfunction), LOG(x) ou LOG10(x), c'est la même chose puisque LOG(), qui admet un second paramètre facultatif pour spécifier la base, prend 10 par défaut.

Par contre, la contrepartie Excel de LOG() VBA est LN().

En en VBA pur, la solution de Theze ( Log(Valeur) / Log(10#) ) me semble la meilleure alternative.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 07h58   #13
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 706
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 706
Points : 3 627
Points : 3 627
Salut,bref après toutes ces digressions logarithmiques on attend toujours le code d'Herbine
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/09/2011, 07h59   #14
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Citation:
Envoyé par Theze Voir le message
La question que je me pose, c'est pourquoi Herbine réinvente la roue ?
Oui, la question est là car VBA pur ou non, le fonction voulue est native sous 2003 (vérifié) et le code qui suit est OK sous 2003 (vérifié)

Code :
1
2
3
4
Sub Loglog()
 
MsgBox Application.WorksheetFunction.Log10(365)
End Sub
Donc soit elle bloque dans un contexte particulier qui reste à préciser, soit comme le dit Hervé...

cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h15.


 
 
 
 
Partenaires

Hébergement Web