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 :

Calcul multiple à partir d'un tableau de référence [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut Calcul multiple à partir d'un tableau de référence
    Bonjour,

    Voici un nouveau problème auquel je suis confronté, qui semble venir d'un simple problème de boucle, mais qui est en train de me rendre fou.

    En partant d'un premier tableau de référence, de taille X*Y, je veux créer Y tableaux, les uns en dessous des autres.
    Chacun des Y nouveaux tableaux étant composés de formules de calcul faisant appel au tableau de référence, le tableau 1 se sert de la colonne 1, le tableau 2 de la colonne 2, et le tableau Y de la colonne Y.

    Mon raisonnement se décompose pour le moment en 2 étapes.

    Dans la première, j'ai simplement dupliqué Y fois le tableau de référence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        With Sheets("TCD")
            x = .Range("A" & .Rows.Count).End(xlUp).Row
            y = .Cells(1, .Columns.Count).End(xlToLeft).Column
            Z = .Range(.Cells(1, 1), .Cells(x, y))
            For i = 1 To y - 2
                .Cells(i * (x + 1) + 1, 1).Resize(x, y) = Z
            Next i
        End With
    Première étape qui s’avérera certainement inutile par la suite, mais je n'ai pas trouvé mieux pour le moment...

    Et dans la deuxième étape, je parcours chaque cellule de tous les tableaux pour y appliquer la formule (en dur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, j).FormulaR1C1 = "=(R[-17]C-R[-17]C2)^2"
    Bien sûr, cette formule fonctionne, mais uniquement pour le premier tableau résultat. Je n'arrive pas à jouer avec les variables à l'intérieur de la formule.

    J'ai testé plusieurs choses du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Cells(i, j).FormulaR1C1 = "=(R[-" & (x + 1) * j & "]C-R[-" & x + 1 & "]C2)^2"
    mais cela ne va pas du tout....

    Merci d'avance de votre aide!

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Personnellement, j'ai toujours eu du mal avec le FormulaR1C1, qui est une référence relative pas très explicite.

    Pourquoi tu n'utilise pas un Formula simple ? c'est quoi ta formule initiale dans ta case, quand tu l'écris à la main ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Merci pour ce premier retour.

    Il est vrai que j'utilise FormulaR1C1 car je l'ai appris comme ça à l'époque (via l'enregistreur de macro).

    Sinon, ma formule est : =(B1-$B2)^2

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Ta cellule B2 ne doit pas bouger ? ou le '$' qui traine c'est une faute de frappe ?

    En tout cas, avec la ligne Formula ça donnerait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, j).Formula = "=(B1-$B2)^2"
    Après, suivant tes variables et tout ça, tu peux remplacer facilement ce que tu souhaites

    Tes références peuvent par la suite être modifier, en les incluant dans tes boucles,e t en les incrémentant correctement.

    (je ne sais pas ce que représente j donc je préfère te laisser gérer cette partie-là )
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Merci,
    Je vais essayer ça dès que possible.

    Dans Formula, si je veux intégrer des variables donc, je dois procéder comme j'avais tenter de le faire dans mon premier message, en concaténant le texte de la formule et mes variables ?
    Ou bien existe t il une autre façon de procéder ?

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Normalement, c'est comme tu avais écrit

    Par ailleurs, je reviens un peu en arrière, mais :

    J'ai testé plusieurs choses du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Cells(i, j).FormulaR1C1 = "=(R[-" & (x + 1) * j & "]C-R[-" & x + 1 & "]C2)^2"
    mais cela ne va pas du tout....
    Qu'entend-tu par "cela ne va pas du tout" ? ça ne te met pas la bonne formule ? ça te fait une erreur ? quelle est la formule dans ta cellule ?

    Vu que tu vas passer par le "Formula", si jamais "ça ne va pas du tout (), essaye de nous dire ce qui ne va pas justement : erreur, formule erronée, etc...
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Je me permets de relancer ce sujet car je ne vois pas comment boucler avec Formula.

    La formule ne vaut que pour la première ligne/première colonne du premier tableau.
    Mais comment boucler sur les Y colonnes du tableau ?...

    Merci encore de votre aide.

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for j = 2 to 10
    cells(3,j).formula = "=(" & cells(1,j).address & "-$" & cells(2,j).address & ")^2"
    next j
    Cette boucle te permettra de mettre ta formule dans la 3e ligne pour chaque colonne, de la colonne 2 à 10.

    A toi de l'adapter à ton code après
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Quelle réactivité, merci !!
    Ok, je ne connaissais pas ce .address, je vais essayer ça de suite.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage de dates sur une feuille de calcul à partir d'un tableau VBA
    Par adourlot dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/11/2012, 21h59
  2. [Débutant] calcul des coeff Fourier à partir d'un tableau
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 5
    Dernier message: 15/03/2010, 09h20
  3. page web et formulaire - calcul à partir d'un tableau
    Par fuffy dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/02/2010, 12h18
  4. [XL-2003] Calcul à partir d'un tableau à double entrée
    Par Efesto dans le forum Excel
    Réponses: 8
    Dernier message: 27/11/2009, 17h14
  5. [Tableaux] Calcul d'une moyenne à partir d'un tableau
    Par Mordanus dans le forum Langage
    Réponses: 13
    Dernier message: 09/05/2007, 18h03

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