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

InfoPath .NET Discussion :

Formule de calcul tableau extensible


Sujet :

InfoPath .NET

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 153
    Points : 138
    Points
    138
    Par défaut Formule de calcul tableau extensible
    bonjour,

    j'ai un premier contrôle text où l'utilisateur renseigne un montant

    puis dans mon tableau extensible j'aimerais que la première ligne reprenne cette valeur en ajoutant des valeurs de la même ligne

    puis dans la deuxième, que le montant de la ligne précédente soir repris + ou - des valeurs de la même ligne etc

    soit en formule de calcul, ou soit en C#

    comment récupérer la valeur précédente ?
    et comment faire pour que seule la première ligne ait une formule différente ?

    merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Référent technique
    Inscrit en
    Juillet 2007
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Référent technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 834
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Cela est faisable en code managé assez simplement.
    Sur le changement de ta valeur en dehors de la section extensible, il faut ajouter un évènement "Changed" (infopath 2007) ou "onAfterChange" (infopath 2003).

    Ensuite il faut utiliser du "XPATH" en utilisant l'attribut "position".
    Par exemple "selectsinglenode("my:groupe2[position()=1]/my:champ1")

    Je cherche une méthode facile sans faire de code et je te mets la solution dès que je trouves.

    Cordialement.
    Rémi MATAYRON
    N'hésitez pas à visiter mon blog dédié à InfoPath et SharePoint : http://rmatayron.blogspot.com/

    Pour plus de visibilité sur le forum, marquer la question en [Résolu] lorsque la réponse fournie vous convient.

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 153
    Points : 138
    Points
    138
    Par défaut
    merci, c'est sympa,

    et faudrait aussi que ce soit compatible pour une utilisation dans le navigateur avec sharepoint

    j'ai déjà regardé ce tuto pour activer le code managé
    http://www.bizsupportonline.net/blog...point-library/

    je ne sais pas si ce sera utile

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 153
    Points : 138
    Points
    138
    Par défaut
    j'ai presque reussi avec un mélange de code managé et de formule

    code managé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public void Ligne_Changed(object sender, XmlEventArgs e)
            {
     
    XPathNavigator SoldeMoisPrecedent = this.MainDataSource.CreateNavigator().SelectSingleNode("/my:mesChamps/my:SoldeMoisPrecedent", NamespaceManager);
    XPathNavigator champ40 = this.MainDataSource.CreateNavigator().SelectSingleNode("/my:mesChamps/my:groupe3/my:Ligne/my:champ40", NamespaceManager);
    XPathNavigator champ27 = this.MainDataSource.CreateNavigator().SelectSingleNode("/my:mesChamps/my:groupe3/my:Ligne/my:champ27", NamespaceManager);
    XPathNavigator champ39 = this.MainDataSource.CreateNavigator().SelectSingleNode("/my:mesChamps/my:groupe3/my:Ligne/my:champ39", NamespaceManager);
     
    if (!SoldeMoisPrecedent.InnerXml.Equals(""))
    {
          Double doubleSoldeMoisPrecedent = Double.Parse(SoldeMoisPrecedent.Value);
          Double doublechamp27 = Double.Parse(champ27.Value);
          Double doublechamp39 = Double.Parse(champ39.Value);
     
          Double resultat = doubleSoldeMoisPrecedent + doublechamp27 - doublechamp39;
     
          champ40.SetValue("" + resultat);
    }
    }
    mais je ne comprends pas pourquoi ce code fonctionne que pour la première ligne du tableau ( mais ca m'arrange )
    les lignes suivantes ajoutés restent vide pour le contrôle 40 .... et sans la formule qui suit

    ensuite je rajoute dans la formule 40

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    ../preceding-sibling::*/my:champ40 + ../my:champ27 - ../my:champ39

    mais ca ne reprend pas la ligne précédente, mais la première ligne, donc chaque ligne utilise la première ligne pour faire son calcul

    et dans l'inspecteur de logique j'ai pour le champ40 :

    valeurs calculées par défaut
    champ40 : [introuvable] + champ27 - champ39

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 153
    Points : 138
    Points
    138
    Par défaut
    Citation Envoyé par billout rm Voir le message
    Cela est faisable en code managé assez simplement.

    Je cherche une méthode facile sans faire de code et je te mets la solution dès que je trouves.
    as tu eu un peu de temps pour chercher ?

Discussions similaires

  1. [XL-2007] une formule qui calcule la moyenne mensuelle d'un tableau de valeur
    Par skipeemed dans le forum Excel
    Réponses: 6
    Dernier message: 31/05/2011, 10h53
  2. [VBA-E] Copier une formule de calcul dans toute la ligne
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2005, 18h18
  3. Réponses: 1
    Dernier message: 05/09/2005, 19h18
  4. formule de calcul du TRI avec PL/SQL
    Par mongilotti dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 30/07/2005, 20h23
  5. Mauvais résultat aprés une formule de calcul complexe
    Par poufouille dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/12/2004, 00h12

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