1 pièce(s) jointe(s)
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:
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