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 :

Rendre paramétrable la référence à des cellules dans une formule [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Rendre paramétrable la référence à des cellules dans une formule
    bonjour,

    je coince depuis quelque jour sur un problème de formule. je veux insérer automatiquement la formule "sommeprod" dans les ligne d'un tableau et faire référence à la 2éme colonnes de la ligne active et la première ligne de la colonne active. Pour compléter mon tableau, je fais tourner une boucle qui incrémente le numéro de ligne. A chaque lancement de ma macro j'ai un message d'erreur "erreur d’exécution 1004'

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    '************************************************************************************************
    'création des formule dans le tableau
    '************************************************************************************************
    ligne = 0
    colonne = 0
    Do While ligne <= 16
     
                Cells(2 + ligne, 3 + colonne).FormulaR1C1 = _
                    "=SUMPRODUCT((MONTH(dates)=MONTH(R[-1-ligne]C))*(reel=R[2+ligne]C2))"
                Cells(2 + ligne, 3 + colonne).Select
                Selection.AutoFill Destination:=Range(Cells(ligne + 2, 3), Cells(ligne + 2, 14)), Type:=xlFillDefault
                ligne = ligne + 1
    Loop
    Merci d'avance pour votre aide
    Raphael

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    On va commencer par éliminer les évidences : ce code, dans quoi est-il placé ? Un Sub, une fonction, un userform ?
    S'il est déposé "tel quel" dans un module, c'est sûr que ça ne fonctionnera pas.
    Si tu as procédé ainsi, je pense qu'il serait utile de voir quelques bases : http://bidou.developpez.com/article/VBA/
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Menhir Voir le message
    On va commencer par éliminer les évidences : ce code, dans quoi est-il placé ? Un Sub, une fonction, un userform ?
    S'il est déposé "tel quel" dans un module, c'est sûr que ça ne fonctionnera pas.
    Si tu as procédé ainsi, je pense qu'il serait utile de voir quelques bases : http://bidou.developpez.com/article/VBA/
    ce code est placé dans un sub.

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Est-ce que "dates", "ligne" et "réel" qui sont dans ton SOMPROD dont des noms de cellules ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Est-ce que "dates", "ligne" et "réel" qui sont dans ton SOMPROD dont des noms de cellules ?
    Dates et reel sont des cellules et ligne n'est que la variable qui me sert a incrémenter pour changer de ligne

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par raphaelm07 Voir le message
    ligne n'est que la variable qui me sert a incrémenter pour changer de ligne
    Dans ce cas, il ne doit pas rester dans le résultat final transmis à la cellule mais doit être utilisé dans VBA pour modifier le contenu de ce qui est transmis à la cellule.
    En somme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(2 + ligne, 3 + colonne).FormulaR1C1 = "=SUMPRODUCT((MONTH(dates)=MONTH(R[" & (-1-ligne) & "]C))*(reel=R[" & (2+ligne) & "]C2))"
    Tout ça, bien sûr, à condition que "dates" et "reel" soient bien des noms de cellule au sens où l'entend Excel.

    Cela dit, puisque la seule partie variable concerne les n° de ligne, je ne comprends pas pourquoi tu transmet ta formule sous le format R1C1.
    Je ne comprends pas non plus pourquoi tu transmets le numéro de ligne en référence relative dans le premier "R" alors qu’apparemment le calcul avec ligne a pour seule vocation de pointer toujours sur la même cellule. Le mettre en référence absolue serait bien plus simple.

    Citation Envoyé par raphaelm07 Voir le message
    ce code est placé dans un sub.
    Et où est placé le Sub ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Dans ce cas, il ne doit pas rester dans le résultat final transmis à la cellule mais doit être utilisé dans VBA pour modifier le contenu de ce qui est transmis à la cellule.
    En somme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(2 + ligne, 3 + colonne).FormulaR1C1 = "=SUMPRODUCT((MONTH(dates)=MONTH(R[" & (-1-ligne) & "]C))*(reel=R[" & (2+ligne) & "]C2))"
    Tout ça, bien sûr, à condition que "dates" et "reel" soient bien des noms de cellule au sens où l'entend Excel.

    Cela dit, puisque la seule partie variable concerne les n° de ligne, je ne comprends pas pourquoi tu transmet ta formule sous le format R1C1.
    Je ne comprends pas non plus pourquoi tu transmets le numéro de ligne en référence relative dans le premier "R" alors qu’apparemment le calcul avec ligne a pour seule vocation de pointer toujours sur la même cellule. Le mettre en référence absolue serait bien plus simple.


    Et où est placé le Sub ?
    Merci pour votre aide, votre apport m'a permis de solutionner mon problème.

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

Discussions similaires

  1. [XL-2010] Changer l'adresse d'une cellule dans une formule avec VBA
    Par Danner dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2016, 09h12
  2. [XL-2010] Rendre dynamique la référence à des cellules dans VBA
    Par Mistouv dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/07/2013, 21h10
  3. Problème de lecture des cellules dans une feuille Excel
    Par wangjun dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2006, 09h35
  4. Désignation des cellules dans une routine
    Par houadglaz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/09/2006, 21h26
  5. Positionner des cellules dans une page
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/10/2005, 10h25

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