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 :

Copie de formule du code VBA vers une cellule avec Cells(,) [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Par défaut Copie de formule du code VBA vers une cellule avec Cells(,)
    Bonjour à tous,

    Tout d'abord petite explication générale de l'utilisation de VBA dans mon cas :

    J'ai plusieurs feuilles avec des formats de tableaux différent qui sont lié par des calculs très simples. La macro va me permettre malgré l'éventuel décalage entre colonnes de trouver les valeurs de la bonne cellule. Par exemple j'ai deux tableaux 3(col.)*3(lin.) où ma formule est en deuxième colonne. La formule pointe vers une autre feuille sur deux tableau 1*1. si l'on effectue bêtement la copie de la formule entre les deux premiers tableaux, on trouvera un mauvais résultats dans le second vu qu'il pointera dans le vide.

    Pour cela j'ai monté cette macro mais j'ai un petit souci lié je pense à la fonction Cells. Tout d'abord 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    For i = 0 To n - 1
     
    frett_def = "Empilage!" & Cells(29, 67 + i * 3 + i)  'Localisation du frettage en definition
            Dext = "Empilage!" & Cells(15, 67 + i * 3 + i)  'Localisation du diametre exterieur de la piece male
            frett_serv = "Empilage!" & Cells(199, 67 + i * 3 + i)  'Localisation du frettage en service
     
            Cst_fmont = "Constantes_de_frettage!" & Cells(18, 69 + i)
            Cst_fmef = "Constantes_de_frettage!" & Cells(38, 69 + i)
            Cst_ffonc = "Constantes_de_frettage!" & Cells(58, 69 + i)  'Localisation des constantes de frettages des pieces femelles au montage en mef et en service
     
            Cst_Mmont = "Constantes_de_frettage!" & Cells(10, 69 + i)
            Cst_Mmef = "Constantes_de_frettage!" & Cells(30, 69 + i)
            Cst_Mfonc = "Constantes_de_frettage!" & Cells(50, 69 + i)  'Localisation des constantes de frettages des pieces males au montage en mef et en service
     
            P_serv = frett_serv & "/" & Dext & "/" & "(" & Cst_ffonc & "-" & Cst_Mfonc & ") * 0.001" 'Explicitation de la formule de la pression de service
            xlBook.Sheets.Item("Empilage").Cells(198, 3 + 3 * i + i) = P_serv  'Insertion dans la cellule de destination
     
            y = frett_def & "/" & Dext & "/" & "(" & Cst_fmont & "-" & Cst_Mmont & ") * 0.001" 'Explicitation de la formule de la pression de contact au montage
            xlBook.Sheets.Item("Detail_des_effets").Cells(57, 3 + 3 * i + i) = y  'Insertion dans la cellule de destination
     
            y = frett_def & "/" & Dext & "/" & "(" & Cst_fmef & "-" & Cst_Mmef & ") * 0.001" 'Explicitation de la formule de la pression de contact en mef
            xlBook.Sheets.Item("Detail_des_effets").Cells(68, 3 + 3 * i + i) = y  'Insertion dans la cellule de destination
     
            y = frett_serv & "/" & Dext & "/" & "(" & Cst_ffonc & "-" & Cst_Mfonc & ") * 0.001" 'Explicitation de la formule de la pression de contact en service
            xlBook.Sheets.Item("Detail_des_effets").Cells(79, 3 + 3 * i + i) = y  'Insertion dans la cellule de destination

    Le but de ce code est de localiser tout d'abord des valeurs présente dans les cellules de mon fichier puis d'effectuer des calcules relativement simples avec une incrémentation.
    Seul petit souci lors de l’exécution de cette macro, dans les de destination, le calcul n'est pas fait. En effet lorsque je veux envoyer mes résultats de "P_serv" ou "y" dans leur cellules respectives on trouve écrit "Empilage!/Empilage!/(Constantes_de_frettage!-Constantes_de_frettage!) * 0.001".

    Le signe "=" a disparu. Seulement, lorsque je le rajoute, une erreur se produit dans l'exécution de la macro (Erreur de syntaxe).

    Cela est il lié à la fonction Cells? y'a t il un moyen de le contourner?

    Merci d'avance pour vos réponses! (Au besoin le fichier complet est joint).

    Omnbre
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Avant que je lise tout, peut-être que l'utilisation de INDIRECT te simplifiera la vie :

    pointe sur la cellule A1 de Feuil1 où que tu recopies la formule.

  3. #3
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Par défaut
    Bonjour, et merci de ta réponse rapide

    Malheureusement j'avais déjà entrepris d'utiliser cette fonction mais elle ne se prête pas à mon cas

    L'explication que j'ai fourni n'est pas très claire et je pense que regarder le fichier excel t'éclaireras plus!

    Merci!

    Omnbre

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    OK

    Quand je descends ton code, la première cellule (C198) contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Empilage!/Empilage!/(Constantes_de_frettage!-Constantes_de_frettage!) * 0.001
    qui correspond à la variable "P_serv". Or quand tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlBook.Sheets.Item("Empilage").Cells(198, 3 + 3 * i + i)
    C'est comme si tu écrivais (c'est sous-entendu) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlBook.Sheets.Item("Empilage").Cells(198, 3 + 3 * i + i).Value

    alors qu'il faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlBook.Sheets.Item("Empilage").Cells(198, 3 + 3 * i + i).Formula
    Ensuite il faut faire précéder "P_serv" d'un "=", comme toutes les formules. Cependant, ça ne fonctionne pas encore. Dis-moi la formule que tu souhaites savoir en C198.

  5. #5
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Juin 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2015
    Messages : 35
    Par défaut
    Ah oui entendu pour le .formula, cela permet donc d'expliciter la formule?
    Pour le résultat que je souhaite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Empilage!C198 = Empilage!C199/Empilage!C15/(Constantes_de_frettage!E58-Constantes_de_frettage!E50)*0.001
    Effectivement je viens de me rendre compte d'une autre erreur dans mon code. J'avais à la base utiliser des chr et donc référencé les numéro de colonne en ascii Pour les 9 premiers calculs il faut donc remplacer la deuxième référence de cellule par la réf ascii.
    On trouve donc pour les trois premiers calculs en second termes : 3+3*i+i et pour les 6 autres calculs 5+i.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Est-ce que ça résout complètement ton problème ?

    Tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Empilage!C198 = Empilage!C199/Empilage!C15/(Constantes_de_frettage!E58-Constantes_de_frettage!E50)*0.001
    Ce n'est pas une formule. Est-ce que, en C198, la formule doit être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Empilage!C199/Empilage!C15/(Constantes_de_frettage!E58-Constantes_de_frettage!E50)*0.001
    Actuellement, "P_serv" contient :

    "Empilage!/Empilage!/(Constantes_de_frettage!-Constantes_de_frettage!) * 0.001"

    Où est-ce que je prends E50 et E58 ? ce sont des constantes ?

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

Discussions similaires

  1. [XL-2010] Traduire une formule en code VBA
    Par thomasdu40 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/07/2012, 09h39
  2. [XL-2007] Macro ou code VBA d'un formule Gauche et Recherche
    Par ghisunit dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/03/2012, 22h36
  3. Ajout d'une formule par code vba
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/05/2011, 09h50
  4. code VBA copie colle cellule d'1 fichier excel à 1autre
    Par tony020422 dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 03/06/2009, 18h47
  5. Parseur formule Excel <-> Code VBA
    Par gretch dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2007, 18h08

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