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 :

Formule renvoyant une erreur [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2009
    Messages : 36
    Points : 18
    Points
    18
    Par défaut Formule renvoyant une erreur
    J'ai ces lignes de codes qui me posent problème et je ne comprends pas pourquoi, quelqu'un pourrait-il m'éclairer ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim poids As Long
    Dim nbcom,a As Integer
    With Sheets("Feuil1")
    a = .Range("A23").End(xlToRight).Column '=4
    nbcom = .Range("A3").End(xlDown).Row - 2 ' =6
    poids = .Cells(j, c.Column).Value ' =0,3577
    .Cells(24, a + nbcom + 1).Formula = "=RC[-" & nbcom + 1 & "] *" & poids 'nbcom = 6 ; poids = 0,3577 : a = 4
     
    End With
    Le problème intervient quand j'ajoute à la formule & poids
    l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(24, a + nbcom + 1).Formula = "=RC[-" & nbcom + 1 & "]"
    seule ne pose pas de problème
    J'obtiens le message d'erreur "Erreur définie par l'application ou par l'objet"

    Je ne comprends pas pourquoi, ce n'est pas la première fois que j'utilise ce genre de syntaxe et d'habitude pas de problème.

    J'ai essayé de remplacé poids par Replace(Cstr(poids),",",".") mais ca ne marche pas non plus

    Quelqu'un a une idée ?

    Merci bien !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2009
    Messages : 36
    Points : 18
    Points
    18
    Par défaut
    Bon ben je viens de trouver une 'parade':

    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
     
    Dim poids As Long
    Dim nbcom,a As Integer
    Dim formule As String
     
    With Sheets("Feuil1")
     
    a = .Range("A23").End(xlToRight).Column '=4
    nbcom = .Range("A3").End(xlDown).Row - 2 ' =6
    poids = .Cells(j, c.Column).Value ' =0,3577
    poids_str = Replace(CStr(poids), ",", ".")
    formule = "=RC[-" & nbcom + 1 & "]*" & poids_str
     
    .Cells(24, a + nbcom + 1).FormulaR1C1 = formule
     
    End With
    Je ne comprends pas pourquoi cela marche mieux que précédemment, donc si quelqu'un peut m'expliquer ca me soulagerait de l'heure que je viens de passer à chercher une solution.

    Merci bien

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Ta formule doit être du genre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(24, a + nbcom + 1).FormulaR1C1 = "=R[0]C[-" & nbcom + 1 & "]"
    Dans ta solution tu oublie de déterminer l'offset de la ligne (rows)
    A+

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2009
    Messages : 36
    Points : 18
    Points
    18
    Par défaut
    Merci de ta réponse mais cela ne marche pas mieux

    De plus j'ai eu un problème par la suite, si je ne selectionne pas la cellule avant de lui rentrer la formule, et bien il fait l'offset à partir de la dernière colonne (n°256) de la feuille...

    Bref maintenant mon code fonctionne même si le .select fait un peu tache et que je ne comprends pas pourquoi il marche mieux que ce que j'avais mis avant.

    Allé je v mettre un ch'ti 'résolu'

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

Discussions similaires

  1. [Débutant] Ma formule comporte une erreur
    Par Martipit dans le forum VB.NET
    Réponses: 9
    Dernier message: 25/04/2012, 16h16
  2. [SQUID 2.7] Renvoyer une erreur personnalisée
    Par Tristan Zwingelstein dans le forum Réseau
    Réponses: 0
    Dernier message: 31/01/2012, 09h58
  3. détecter une de toutes les commandes a renvoyé une erreur
    Par trois_1 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 02/09/2010, 16h19
  4. Renvoyer une erreur 204 sur un nom de domaine
    Par blueice dans le forum Apache
    Réponses: 2
    Dernier message: 12/02/2009, 16h30
  5. Renvoyer une erreur dans une procédure stockée
    Par SLt dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/04/2007, 18h41

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