Ecriture d'une ligne de commande en VB

hyo66

XLDnaute Nouveau
Bonsoir
J'ai un problème de programmation et la je sèche

J’aimerai ajouter dans les lignes de calcul de VBA Project le produit issu de 2 cellules en colonne I et J en mm dans la cellule en colonne F en m2 condition A ou en m condition B
Condition A :si X et Y sont remplis en mm le résultat doit être en m2
et
Condition B :si X est rempli en mm et Y non rempli le résultat doit être égal a X en mètre

Voici l'édition de la commande a savoir que c'est un bouton d'insertion d'une ligne avec ces calculs associés (calcul de poids et débit)



Private Sub CommandButton1_Click()

ActiveCell.Select

ActiveSheet.Unprotect password:="newton"

If ActiveCell.Row > 14 And ActiveCell.Row < Trim(Str(Range("weight").Row) - 2) Then
activerow = ActiveCell.Row + 1
Cells(activerow, 1).Select
Selection.EntireRow.Insert
Cells(activerow, 6).Formula = "=If(ESTVIDE(J" + Trim(Str(activerow)) + ");I" + Trim(Str(activerow)) + "/1000;I" + Trim(Str(activerow)) + "/1000*J" + Trim(Str(activerow)) + "/1000)"
Cells(activerow, 7).Formula = "=F" + Trim(Str(activerow)) + "*E" + Trim(Str(activerow))
Cells(activerow, 8).Formula = "=F" + Trim(Str(activerow)) + "*E" + Trim(Str(activerow)) + "*D" + Trim(Str(activerow))

Range("weight").Formula = "=SUM(H" + Trim(Str(15)) + ":H" + Trim(Str(Range("weight").Row) - 3) + ")"

myrange = Trim(Str(Range("weight").Row)) - 1 - 14

Range("F12").Formula = "=SUBTOTAL(" + Trim(Str(9)) + ",G" + Trim(Str(15)) + ":G" + Trim(Str(Range("weight").Row) - 3) + ")"
Range("H12").Formula = "=SUBTOTAL(" + Trim(Str(9)) + ",H" + Trim(Str(15)) + ":H" + Trim(Str(Range("weight").Row) - 3) + ")"

Else
ActiveCell.Select
End If

Merci d'avance a ceux qui m'aideront a corriger la ligne "Cells(activerow, 6)" qui ne marche pas
 

hyo66

XLDnaute Nouveau
Re : Ecriture d'une ligne de commande en VB

Merci de vous intéresser a mon cas

j'ai réécris la ligne comme suit

Cells(activerow, 6).Formulalocal = "=si(estvide(J + Trim(Str(activerow));"*I" + Trim(Str(activerow)) + "/10000" + Trim(Str(activerow))); "=I" + Trim(Str(activerow)) + "*J" + Trim(Str(activerow)) + "/10000" + Trim(Str(activerow)))"

mais j'ai la reponse : erreur de syntaxe !!!! et je la voie pas
peut être un œil neuf me dira ce qui manque
 

soenda

XLDnaute Accro
Re : Ecriture d'une ligne de commande en VB

Bonjour le fil, hyo66, lerexcel

Avec l'enregistreur de macro, pour la ligne suivante
Cells(activerow, 6).Formula = "=If(ESTVIDE(J" + Trim(Str(activerow)) + ");I" + Trim(Str(activerow)) + "/1000;I" + Trim(Str(activerow)) + "/1000*J" + Trim(Str(activerow)) + "/1000)"
On obtient (sous réserve d'avoir compris)
Code:
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[4]),RC[3]/1000,RC[3]*RC[4]/1000)"
Naturellement, ActiveCell est a adapter.

A plus
 

hyo66

XLDnaute Nouveau
Re : Ecriture d'une ligne de commande en VB

Ca marche

Apres une correction de coeff et avoir renommé l'Activecell

ca me donne

Cells(activerow, 6).FormulaR1C1 = "=IF(ISBLANK(RC[4]),RC[3]/1000,RC[3]/1000*RC[4]/1000)"

Merci Bcp Soenda (et les autres aussi bien sur)

A propos c'est quoi ton enregistreur de macro ????? ca a l'air de bien marcher
 
Dernière édition:

hyo66

XLDnaute Nouveau
Re : Ecriture d'une ligne de commande en VB

J'aimerai ajouter a la condition si résolue précédemment une autre condition
est ce possible?
En fait il y a un troisième choix si X et Y sont vide la cellule active doit être égal a 1 (c'est le cas du calcul d'une masse unitaire)
rappel de la formule des 2 premiers choix est :

Cells(activerow, 6).FormulaR1C1 = "=IF(ISBLANK(RC[4]),RC[3]/1000,RC[3]/1000*RC[4]/1000)"
 

Statistiques des forums

Discussions
312 197
Messages
2 086 104
Membres
103 118
dernier inscrit
mlaf4032