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 07/01/2012, 12h15   #1
Invité de passage
 
Inscription : octobre 2004
Messages : 13
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 13
Points : 2
Points : 2
Par défaut problème avec une fonction utilisé en tant que formule

Salut,
Je suis entrain de faire un classeur de simulation. Pour cela je doit calculer une cellule en fonction des résultats d'une autre feuille.
J'ai réalisé une macro pour réaliser cela. Elle fonctionne sans erreur lorsque je la test avec une procédure "test" mais dès que je l'utilise dans une formule le code plante après
Code :
.Range("H6") = ortFacette
sans émettre de code d'erreur et insère "#VALEUR" dans la cellule.

Quelqu'un aurait une solution?

Merci

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
Public Function testCalculCr(nLigne As Integer) As Double
 
    Dim cell As Range
    Dim feuillePoutre As Worksheet
    Set feuillePoutre = Worksheets("calcul de poutre")
    Set cell = Worksheets("calcul d'une portion de came").Range("F" & nLigne)
    testCalculCr = calculCr(cell, feuillePoutre)
 
End Function
 
Public Function calculCr(ByVal cellCourrante As Range, ByRef feuillePoutre As Worksheet) As Double
 
    Dim nbligne As Integer
    Dim valCr As Double
    Dim ortFacette As Double
    Dim Flobjectif As Double, alpha As Double, Lreelle As Double
    Dim Flcourant As Double, effortCourant
    Dim i As Integer
 
    'Worksheets("calcul de poutre").Select
    'Dim feuillePoutre As Worksheet
    'Set feuillePoutre = Worksheets("calcul de poutre")
 
 
    ortFacette = cellCourrante.Offset(0, 7).Value
 
    'initialisation du calcul
    With feuillePoutre
        .Range("H6") = ortFacette
        Flobjectif = .Range("H7")
    End With
 
    effortCourant = 1
    i = 0
 
    Do
        With feuillePoutre
           .Range("D9") = effortCourant
           Flcourant = .Range("H12")
        End With
        effortCourant = effortCourant + (Flobjectif - Flcourant) / Math.Abs((Flobjectif - Flcourant)) * 0.5
        i = i + 1
    Loop While (Math.Abs((Flobjectif - Flcourant)) > 10 ^ -1) Or i > 1000
 
    calculCr = feuillePoutre.Range("H13")
 
End Function
alex288 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 14h05   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Attention, à partir d'une formule, tu ne peux pas modifier le contenu d'une cellule autre que celle qui contient la formule.

Si par exemple tu mets ta formule dans la cellule B17, seule le contenu de B17 changera lorsque ta formule renverra une valeur. Tu ne peux pas changer le contenu de B18 par exemple.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 16h04   #3
Invité de passage
 
Inscription : octobre 2004
Messages : 13
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 13
Points : 2
Points : 2
Merci, c'est dommage d'avoir cette limitation...
Je vais penser différemment ma résolution...

Merci
Alex
alex288 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h37.


 
 
 
 
Partenaires

Hébergement Web