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 :

range.formula ne fonctionne pas, demande confirmation sur la cause


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut range.formula ne fonctionne pas, demande confirmation sur la cause
    Bonjour à tous


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    cell_devise="F5"
    cell_vdevise="P2"
     
    cell_devise1="C5"
    cell_vdevise1="O2"
     
    range(cell_devise).formula="=(" & range(cell_devise)-valo2 & ")/" & cell_vdevise
     
    range(cell_devise1).formula="=(" & range(cell_devise1)+valo & ")/" & cell_vdevise1
    Mes variables sont déclarées en string sauf les valo et valo2 qui sont double...

    La première ligne fonctionne nickel et la deuxième non, erreur '1004'.

    Cell_vdevise fait référence à une cellule où la valeur est 1 et est fixe.
    cell_vdevise1 fait référence à une cellule où la valeur bouge en continue, elle est lié un flux internet.

    C'est ma théorie pour expliquer la cause du non fonctionnement, mais je ne comprend pas parce que j'écris pas de valeur, juste la cellule, à savoir "O2", ça ne devrait pas poser de problème... sur ma feuille y a d'autres formules faisant référence à une cellule "streaming" et ça fonctionne... de même si j'écris la formule à la main sur la feuille ça fonctionne aussi.

    Peut être quelqu'un pourrait me donner une solution à ce problème s'il vous plait ?


    Ps: j'ai essayé de créer une variable avant et de l'insérer mais ça ne marche pas. J'ai fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    valo=range(cell_devise1)+valo
    range(cell_devise1).formula="=(" & valo & ")/" & cell_vdevise1


    Merci beaucoup pour le temps accordé

  2. #2
    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 256
    Points
    34 256
    Par défaut
    Salut,


    que valent valo et valo2 ?

    Peux tu nous donner la formule telle que tu aimerais qu'elle apparaisse a la fin stp ?

    UNe fois cette info obtenue, on pourra tres facilement te donner la correction du code
    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

  3. #3
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Bonjour à vous,

    Il me semble que le problème provient de la fin de votre formule, à savoir :
    La correction suivante est-elle efficace ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     & Range(cell_vdevise).Value
    Cordialement

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    valo2=1000000
    valo=867829,5582747548

    dans la cellule, je veux qu'il y ait écrit la somme de la cellule à la base additionné à valo divisé par la cellule "K2".

    Donc imaginons la cellule à la base contient 5000000 donc je veux que la cellule contienne :
    =5867829,5582747548/K2

    Voilà si vous pouvez m'éclairer.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Ben_L Voir le message
    Bonjour à vous,

    Il me semble que le problème provient de la fin de votre formule, à savoir :
    La correction suivante est-elle efficace ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     & Range(cell_vdevise).Value
    Cordialement
    bah justement je pense que le problème vient de là moi... la cellule contient un stream, une valeur qui bouge tout le temps, donc je veux pas fixer la valeur justement, je veux qu'il y ait écrit "K2" dans ma cellule.

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Range(cell_devise).Formula = "=(" & Range(cell_devise) - valo2 & ")/" & cell_vdevise
    C'est normal et prévu la pseudo référence circulaire ?
    Si oui et si cell_vdevise ou cell_vdevise=vide ou 0 tu vas avoir un #DIV/0! qui te bloquera le tour d'après.

    Sinon je mettrai :
    & Range(cell_devise).Value - ... pour être sûr d'utiliser la valeur
    eric

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    Range(cell_devise).Formula = "=(" & Range(cell_devise) - valo2 & ")/" & cell_vdevise
    C'est normal et prévu la référence circulaire ?
    Si oui et si cell_vdevise ou cell_vdevise=vide ou 0 tu vas avoir un #DIV/0! qui te bloquera le tour d'après.

    Sinon je mettrai :
    & Range(cell_devise).Value - ... pour être sûr d'utiliser la valeur
    eric
    pour le value, je dirai la même réponse que précédemment, je ne veux pas la valeur de la cellule, je veux en faire la référence, ça marche trés bien avec la ligne précédente, qui ne contient pas les mêmes variable, attention aux noms, ils se ressemblent mais ce ne sont pas les mêmes.

    Pour la référence circulaire non, car je prend la valeur de la cellule avec range et non pas justement la référence à la cellule.

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    Je viens de tester en divisant par la cellule fixe précédente, à savoir cell_vdevise et ça ne marche pas non plus, alors le problème doit venir forcément d'autre part...

  9. #9
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    J'ai du mal à te suivre, tu dis un truc :
    je ne veux pas la valeur de la cellule, je veux en faire la référence
    et son contraire :
    Pour la référence circulaire non, car je prend la valeur de la cellule
    C'est quoi la formule finale voulue dans la cellule ?
    Si tu veux la valeur c'est .value
    Si tu veux la ref c'est . address
    Ne laisse pas excel choisir en utilisant juste le range.

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par eriiic Voir le message
    J'ai du mal à te suivre, tu dis un truc :

    et son contraire :

    C'est quoi la formule finale voulue dans la cellule ?
    Si tu veux la valeur c'est .value
    Si tu veux la ref c'est . address
    Ne laisse pas excel choisir en utilisant juste le range.
    lu comme ça, oui c'est pas clair... En gros dans la cellule je veux par exemple le 100000 c'est la somme de range(cell_devise1)+valo

    Du coup j'ai essayé votre méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range(cell_devise1).formula="=" & valo & "/" & range(cell_vdevise1).Address
    mais l'erreur continue...

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    Je viens d'essayer directement d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range(cell_devise1).formula="=" & valo & "/K2"
    pour tester, ça ne fonctionne pas non plus, alors que la ligne précédente continue de fonctionner. si je remonte le code..

  12. #12
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 760
    Points : 28 618
    Points
    28 618
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Plus je lis ce que tu écris, plus je suis dans le brouillard.
    Pourrais-tu simplement écrire manuellement la formule dans Excel et nous publier celle-ci je crois qu'ensuite tu auras une réponse pertinente.
    Exemple
    Ta question bien posée se serait résumée au maximum à deux réponses.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  13. #13
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Je n'avais pas bien compris le contenu de votre feuille de calcul.
    Désolé pour ma méprise.

    Après plusieurs relecture du fil, je ne suis toujours pas sûr de bien comprendre votre besoin.
    Mais si vous souhaitez utiliser la valeur d'une cellule qui contient elle-même une référence à une autre cellule sous la forme d'une chaîne de caractères, il est probable qu'il faille passer par la fonction INDIRECT.

  14. #14
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Et bien on revient au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range(cell_devise).Formula = "=(" & Range(cell_devise).Value - valo2 & ")/" & cell_vdevise
    Range(cell_devise1).Formula = "=(" & Range(cell_devise1).Value + valo & ")/" & cell_vdevise1
    avec les cellules cell_vdevise et cell_vdevise1 différentes de 0 et non vides.
    Les ( ) sont superflues puisque ça va te donner =(49)/P2
    Et si pour toi ça ne fonctionne pas soit plus précis. Erreur ? valeur erronée ?

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    premièrement, merci pour votre temps.

    Alors je vais expliquer de nouveau en essayant d'être le plus clair possible. 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
    cell_devise="F5"
    cell_vdevise="F6"
     
    cell_devise1="G5"
    cell_vdevise1="G6"
     
    valo2 = 1 000 000
    valo = 850 000
     
     
    range(cell_devise).formula="= & range(cell_devise) - valo2 & "/" & cell_vdevise
    range(cell_devise1).formula="= & range(cell_devise1) + valo & "/" & cell_vdevise1

    les valeurs de valo et valo2 sont des exemples, ce sont toutes deux des variables, non vide et non nul.

    Du coup dans ma cellule F5 j'obtiens
    =200000/F6

    et dans ma cellule G5 j'obtiens rien car il y a erreur 1004 (erreur définie par l'application ou par l'objet), mais j'aimerai obtenir le résultat correspondant à savoir :
    =1204520/G6

    Je précise que :
    - si je remplace dans le deuxième calcul, cell_vdevise1 par cell_vdevise, ça ne fonctionne pas non plus...
    - Les cellules G5 et F5 contiennent les mêmes formules qu'écrite ci-dessus, j'actualise juste le nombre au nominateur.
    - le dénominateur (G5) est fixe
    - le dénominateur (G6) est un flux streaming
    - j'ai déjà essayé de supprimer la cellule puis d'écrire dans la cellule vide, même erreur

    Voilà, j'espère que j'ai été plus clair et que vous pourrez m'aider.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Essaye écrit de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range(cell_devise).Formula = "=" & Range(cell_devise) - valo2 & "/" & cell_vdevise
        Range(cell_devise1).Formula = "=" & Range(cell_devise1) + valo & "/" & cell_vdevise1

  17. #17
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Oudouner Voir le message
    Bonjour,

    Essaye écrit de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range(cell_devise).Formula = "=" & Range(cell_devise) - valo2 & "/" & cell_vdevise
        Range(cell_devise1).Formula = "=" & Range(cell_devise1) + valo & "/" & cell_vdevise1
    je présume que c'est pour les parenthèses et non l'espace laissé devant.

    J'ai enlevé les parenthèses, je me suis effectivement rendu compte qu'elle servait à rien mais ça ne marche pas, voir mon post précédent.

  18. #18
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    chez nous pas de soucis.
    Si tu mets un espion sur
    "=" & Range(cell_devise1) + valo & "/" & cell_vdevise1
    tu lis quoi en arrivant dessus en pas à pas ?
    eric

  19. #19
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 92
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Bonjour,

    chez nous pas de soucis.
    Si tu mets un espion sur tu lis quoi en arrivant dessus en pas à pas ?
    eric
    Bonjour

    Si je met l'espion ça me donne bien la formule, telle que je la veux...

    "=6926509,220852452/K2"

  20. #20
    Membre éprouvé
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Points : 1 141
    Points
    1 141
    Par défaut
    Votre problème, si j'ai bien compris, c'est que même directement dans Excel, sans passer par le VBA, vous n'arrivez pas à taper une formule qui fonctionne.
    Citation Envoyé par zertupo Voir le message
    - le dénominateur (G6) est un flux streaming
    Cela ne nous dit pas vraiment ce que contient la cellule. Et il semble que c'est bien de là que provient le problème.
    Diviser par "un flux streaming" n'a aucun sens pour Excel (enfin, surtout pour moi...).

    Quel type de donnée vous renvoie ce flux et comment souhaiteriez-vous la traiter ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 9
    Dernier message: 29/07/2016, 09h22
  2. [XL-2003] RANGE qui ne fonctionne pas totalement
    Par Eric26 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/02/2011, 14h37
  3. Réponses: 2
    Dernier message: 25/02/2009, 10h05
  4. [E-07] Range(Cells ne fonctionne pas
    Par Luis Vieira da Silva dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/02/2009, 20h25
  5. Réponses: 6
    Dernier message: 09/07/2004, 15h07

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