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 :

[XL2010] Formula et référence à une autre feuille.


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut [XL2010] Formula et référence à une autre feuille.
    Bonjour à tous.

    J'aurais besoin d'aide sur un truc, j’espère que ce n'est pas une re-dite.

    Je travaille sur une userform qui remplis un tableau, y compris les formules.
    Mais ce tableau, je souhaiterai qu'il s’appuie sur les données inclues dans une autre feuille ( qui se nomme INI), données que je devrait pouvoir modifier à ma guise par la suite.

    Et la, j'ai beau essayer pas mal de choses, il me colle une erreur à chaque fois:

    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Worksheets("Fen")
            .Cells(DernLigne, 18).Formula = _
            "=RC[-7]*'INI'!D17"
    Résultat:
    =K19*INI!'D17'
    Qui me donne une erreur #NOM?.


    Alors c'est très vraisemblablement une erreur de guillemets, mais je n'arrive pas à trouver la bonne combinaison?

  2. #2
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut
    Comme un exemple vaut mieux qu'un long discours:

    exemple.xlsm

    Dans ce classeur, l'Userform remplis le tableau "Fenêtres B", en s'aidant des données entrés dans INI, ou dans Ressources (pas présent ici),
    Ultérieurement une autre macro traitera ce tableau pour l'envoyer vers "export"

    Dans le tableau, vous voyez tout de suite mon problème, le lien vers INI ne se fait pas correctement.

    Pour ceux que cela intéresse, le problème se situe vers la ligne 425 de l'userform.

    PS: Et si un gentil modo veux bien déplacer mon message, je me suis rendu compte un peu tard qu'il n'est pas à la bonne place...

  3. #3
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut Ahhhhhhhhh ca m'agace!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim i As String
    i = Cells(17, 4).Address
     
    Worksheets("Fenêtres Bernard").Cells(DernLigne, 18).Value = _
            "=RC[-7]*INI!" & i
    Et pourquoi ça ça ne marche pas!?

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour,

    quand cela ne fonctionne pas, c'est que c'est du n'importe quoi ‼ .Value n'étant pas .FormulaR1C1

    La prochaine fois, cela serait bien de poster directement dans le bon forum, là où il y a le plus de passage …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut
    Bonjour,

    Oui c'est vrai, mais cela dit, ça fait une semaine que je bloque la dessus, alors au bout d'un moment, je doit avouer que je tente tout et n'importe quoi....
    Et du coup, je viens d'essayer avec formula et formulaR1C1, et la je me prends une erreur 1004...

    En passant, vous n'auriez pas une idée pour régler mon problème?


    Et pour le forum où poster, je suis tout à fait d'accord, mais comme je ne sais pas qui contacter pour réparer cette erreur...

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    Paramétrer une formule de calculs directement dans une cellule et une fois au point, indiquer - la …


    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut
    Récapitulons:

    - Je souhaite qu'il m'inscrive sur mon tableau "=K*INI!D17"
    - Quand il me colle pas une erreur, il m'inscrit au mieux : " =K25*INI!'D17' " (du coup les *** de guillemets font tout foirer à chaque fois...)
    - J'ai testé pas mal de trucs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As String
    i = Cells(17, 4).Address
    Worksheets("Fenêtres Bernard").Cells(DernLigne, 18).FormulaR1C1 = _
            "=RC[-7]*INI!" & i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=RC[-7]*" & Worksheets("INI").Name & "!" & Cells(DernLigne, Col).Address
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=RC[-7]*(" & Worksheets("INI").Name & "!$D$17)"
    Et d'autres encore dont j'ai pas gardé la trace.

    A chaque fois avec .value et .formula (au cas où)
    J'ai changé le nom de la feuille INI, au cas où.
    J'ai essayé dans un module et non dans une userform, on ne sais jamais.


    Bon, ben la je sèche. Un paramétrage d'Excel? Je ne comprends pas du tout d'où viens le problème, avant de poster ici j'ai pas mal chercher sur le net et j'ai pas trouvé ma réponse...


    Paramétrer une formule de calculs directement dans une cellule et une fois au point, indiquer - la …
    Mais est ce que ça me permettra de modifier mes résultats à la volée?
    L'idée ici, c'est que même une fois toutes mes fenêtres faites, imaginons qu'on décide de changer mon épaisseur de baie, mon temps de main d’œuvre ou mon type de vitrage, je n'ai qu'à changer mon type sur INI et que tout se fasse tout seul...
    Ou alors je ne comprends ce que vous souhaitez me faire essayer?

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Comme dans le code initial la propriété Formula se réfère à une formule de calculs d'une cellule dans une feuille Excel,
    il n'est pas envisageable de programmer une formule ne fonctionnant déjà pas manuellement dans une cellule !

    Et sans connaître cette formule fonctionnant donc directement dans une cellule, aucune aide possible …

    En programmant cette formule en ayant activé au préalable le Générateur de macros, le code est livré sur un plateau ‼
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Marc-L Voir le message



    Comme dans le code initial la propriété Formula se réfère à une formule de calculs d'une cellule dans une feuille Excel,
    il n'est pas envisageable de programmer une formule ne fonctionnant déjà pas manuellement dans une cellule !

    Et sans connaître cette formule fonctionnant donc directement dans une cellule, aucune aide possible …

    En programmant cette formule en ayant activé au préalable le Générateur de macros, le code est livré sur un plateau ‼

    La formule de base, c'est
    12 étant un chiffre donné au pif.

    La modification de mon "truc" (j'ose a peine appeler ça macro) consiste à modifier le 14 pour le transformer en référence à une cellule donnée d'une autre feuille (D17 en l’occurrence, dans ce cas la)
    L’enregistreur de macro me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=RC[-7]*INI!R[-16]C[-14]"
    Avec une référence de cellule en RC qui ne me conviens pas du tout. Il doit être possible de bidouiller ça, mais ça me semble beaucoup moins satisfaisant qu'une référence absolue, cette cellule D17 que Excel s'obstine à appeler 'D17'.

    J'insiste la dessus, parce que j'ai au moins une vingtaine de calcul que j'aimerai indexer à une référence fixe sur la feuille INI, celui la est le premier, mais une fois que j'aurais une solution je pourrai faire l'ensemble dans la foulée!

  10. #10
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    Ça me rappelle le nombre de fois où j'ai cru devenir fou

    et si tu essayais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Formula = "=RC[-7] * " & Sheets("INI").Range("D17").Value
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  11. #11
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut
    @ pyloupylou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Formula = "=RC[-7] * " & Sheets("INI").Range("D17").Value
    Ça marche, mais ça n'est pas ce que je veux... ^^

    Du coup j'ai l'impression que ce que je voulais faire est simplement pas possible. Je vais utiliser la formule ci-dessus et faire une macro à coté pour mettre les valeurs à jours, ça va être plus long, mais plus simple.

    Merci de votre aide en tout cas!

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    Cela doit être possible mais sans la formule de calculs demandée fonctionnant directement dans une cellule …


    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Marc-L Voir le message

    Cela doit être possible mais sans la formule de calculs demandée fonctionnant directement dans une cellule …

    Je suis désolé, mais je ne comprends pas?
    J'ai donné:
    -La formule de base = K12*14
    -La formule que je veux (et qui marche dans une cellule) = K12*INI!D17
    [ d’ailleurs, ce serait à inscrire directement dans le tableau, j'écrirai = K12*INI!$D$17]
    -La formule qu'Excel inscrit systématiquement = K12*INI!'D17'

    Alors si il y a une autre formule que vous souhaitez, je ne vois pas?

  14. #14
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    INI : est-ce une autre feuille du même classeur ?


    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  15. #15
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Marc-L Voir le message


    INI : est-ce une autre feuille du même classeur ?
    Oui.
    L'idée est de paramétrer tout ce qui est "semi fixe" sur cette feuille,
    Exemple ici : le débit du chêne, on compte usuellement 14 h/m3. Imaginons que l'on décide d'utiliser un chêne un peu moins bon, et que le débit peut se faire finalement en 12H/m3, je souhaiterais que toutes mes fenêtres déjà paramétrées se modifient en conséquence d'un coup, d'où l'envie de faire passer le calcul par la cellule D17 de cette feuille la.

  16. #16
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Je ne comprends pas alors car il n'y a aucune difficulté dans cette simple formule de calculs :

    ActiveCell.Formula = "=K12*INI!$D$17" : fonctionne évidemment bien de mon côté.

    Autre voie : nommer la cellule D17 …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  17. #17
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Marc-L Voir le message



    Je ne comprends pas alors car il n'y a aucune difficulté dans cette simple formule de calculs :

    ActiveCell.Formula = "=K12*INI!$D$17" : fonctionne évidemment bien de mon côté.

    Autre voie : nommer la cellule D17 …
    Ah ouais, chez moi aussi, mais du coup le problème devait être que j'inscrivais K12 en R1C1... C'est le mélange des deux qui devais faire empêcher que ça marche. (désolé, je code en autodidacte que depuis peu, y'a des automatismes que je n'ai pas encore...)

    La cellule nommée, ça fonctionnerai avec K12 en R1C1?

    Du coup, je tente ça ce soir, merci!

  18. #18
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Et pourtant je l'avais indiqué dès mon premier message !

    Pas de souci avec une cellule nommée (si le nom de la cellule ne correspond pas à une adresse de cellule) …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  19. #19
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,

    pour toutes les subtilités de formules, le plus pragmatique reste de passer par le macro recorder, et d'adapter le code par la suite. Cela évite les errements et les séries d'échanges bien trop longs pour une erreur de syntaxe
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  20. #20
    Membre habitué

    Homme Profil pro
    Technicien métreur du batiment
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien métreur du batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 158
    Points
    158
    Par défaut
    Merci à tous pour votre aide!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/01/2015, 13h37
  2. Réponses: 7
    Dernier message: 28/01/2014, 09h53
  3. [PHPExcel] Formule qui référence une autre feuille
    Par DanTesS dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 07/04/2011, 16h21
  4. Réponses: 2
    Dernier message: 20/05/2009, 12h45
  5. Réponses: 2
    Dernier message: 25/12/2007, 17h19

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