IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Probleme avec formula


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Par défaut Probleme avec formula
    Bonjour les amis,
    Je viens de débuter dans le VBA et je bloque dans le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim e, p, i, j As Integer
     
    Set F2 = Worksheets("data")
    Set F4 = Worksheets("test")
    Set F5 = Worksheets("resultat")
     
    e = F2.Range("J25").Value
    p = F2.Range("J26").Value
     
    For i = 3 To 21
    j = i + 1
     
     F5.Range("Ai").Formula = "SI(F4.range("B3").value=0;0;SI(F2.range("Ij").value=1;F4.range("B3").value*e;SOMMEPROD(F2.Range("I4").value:F2.Range("I22").value;F4.range("B3").value:F4.range("B21").value)*e*(1-p)/p*F2.range.value("Jj")/(SOMME(F2.Range("J4").value:F2.Range("J22").value)-SOMMEPROD(F2.Range("J4").value:F2.Range("J22").value;F2.Range("I4").value:F2.Range("I22").value))))"
    Il me marque une erreur dans la formule :/

    Merci pour toute aide

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    712
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 712
    Par défaut
    Bonjour,

    Il y a plusieurs soucis:
    - La propriété Formula prend les formules en anglais. Si tu veux saisir ta formule en français sous VBA, il faut utiliser la propriété FormulaLocal.

    - La formule doit commencer par un '=' absent ici.

    - La formule doit ressembler à ce que tu aurais sous Excel et non à du code VBA: pas de Range("A1").value mais simplement A1 (en précisant le nom de la feuille si différent de la feuille où tu mets la formule; comme test!A1 par exemple).
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F5.Range("A" & i).FormulaLocal = "=SI(test!B3=0;..."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F4.range("B3").value:F4.range("B21").value
    est à remplacer par si j'ai bien compris ce que tu voulais.

    - Le caractère guillemet en VBA est représenté par un double guillemet "" dans une chaîne de texte VBA.
    Ex pour comparer B1 à "toto":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F5.Range("A" & i).FormulaLocal = "B1 = ""toto"""
    - Quand tu veux utiliser la valeur contenue dans tes variables e, p ou j, il ne faut pas mettre le caractère e, p ou j mais bien la variable.
    Ainsi, ne fonctionnera pas mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F5.Range("A" & i).Formula
    si.

    Reste à voir après si la formule est bonne et sa syntaxe ok; je n'ai pas vérifié.
    Tu pourrais peut-être commencer par préparer un cas particulier de ta formule dans une case Excel et relire ensuite sa propriété Formula ou FormulaLocal sous VBA (via MsgBox ou Debug.Print) pour que tu vois à quoi ça doit ressembler (il te restera à insérer tes variables j, e et p pour passer du cas particulier à ton cas plus générique.

  3. #3
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Par défaut
    Bonjour , merci pr la réponse,

    J'ai remplacé la formule par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F5.Range("A" & i).FormulaLocal = "=SI(test!B3=0;0;SI(data!(I & j)=1;data!B3*e;SOMMEPROD(data!I4:I22;test!B3:B21)*e*(1-p)/p*data!(J & j)/(SOMME(data!J4:data!J22)-SOMMEPROD(data!J4:data!J22;data!I4:data!I22))))"
    Ca va mieux sauf que quand j'execute la macro il me marque : Erreur d'execution 424 , objet non trouvé :/

    Ca veut dire quoi précisemment?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    712
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 712
    Par défaut
    Bonjour,

    Il y a un net progrès en effet, mais tu as encore laissé les j, e et p comme faisant partie de la formule au lieu de récupérer leur valeur.
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F5.Range("A" & i).FormulaLocal = "=SI(test!B3=0;0;SI(data!(I & j)=1;data!B3*e;SOMMEPROD(...
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F5.Range("A" & i).FormulaLocal = "=SI(test!B3=0;0;SI(data!I" & j & "=1;data!B3*" & e & ";SOMMEPROD(...
    "data!J4:data!J22" est correct mais plus digeste si écrit comme ça: "data!J4:J22".

  5. #5
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 3
    Par défaut
    Bonjour , merci encore pour votre aide

    donc si j'ai bien compris, il faut mettre le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F5.Range("A" & i).FormulaLocal = "=SI(test!B3=0;0;SI(data!I " & j & " =1;data!B3 * " & e & ";SOMMEPROD(data!I4:I22;test!B3:B21)* "&e&" * (1 - "&p&" )/"&p&"  *data!J" & j & "/(SOMME(data!J4:J22)-SOMMEPROD(data!J4:J22;data!I4:I22))))"
    Mais Il me marque une erreur de syntaxe :/

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Attention aux espaces

    Sinon privilégie formula pour portabilité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F5.Range("A" & i).FormulaLocal="=SI(test!B3=0;0;SI(data!I" & j & "=1;data!B3 * " & e & ";SOMMEPROD(data!I4:I22;test!B3:B21)*" & e & "*(1-" & p & ")/" & p & "*data!J" & j & "/(SOMME(data!J4:J22)-SOMMEPROD(data!J4:J22;data!I4:I22))))"

Discussions similaires

  1. [VBA-E] Probleme avec proprièté formula
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/11/2006, 22h33
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo