VBA - Aidez moi
Vinceb9
-
Pitu Messages postés 1441 Date d'inscription Statut Contributeur Dernière intervention -
Pitu Messages postés 1441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voila mon probleme:
Je cherche un code VBA pour faire des calcul, je m'explique :
j'ai une feuille excel pour faire des devis
Imaginons une cellule a1 ou j'ai le total du cout de revient unitaire
une cellule a2 ou j'ai le coefficient à appliquer et une cellule a3 ou j'ai le prix de vente unitaire
je souhaiterais pouvoir modifier aussi bien le coeff, qui me donnera le resultat du prix de vente que le prix de vente, qui me recalculera le coeff or si j'ai des formules dans ces celllules je vais les effacer en changeant le coeff ou le rix de vente
Aidez moi !
Merci
Voila mon probleme:
Je cherche un code VBA pour faire des calcul, je m'explique :
j'ai une feuille excel pour faire des devis
Imaginons une cellule a1 ou j'ai le total du cout de revient unitaire
une cellule a2 ou j'ai le coefficient à appliquer et une cellule a3 ou j'ai le prix de vente unitaire
je souhaiterais pouvoir modifier aussi bien le coeff, qui me donnera le resultat du prix de vente que le prix de vente, qui me recalculera le coeff or si j'ai des formules dans ces celllules je vais les effacer en changeant le coeff ou le rix de vente
Aidez moi !
Merci
4 réponses
Bonjour,
Avec un toggle button, qui basculerait d'un mode de calcul à l'autre, ça donnerait ça (j'y ai ajouté l'encadrement de la zone de saisie)
Voir le classeur ci-joint : https://www.cjoint.com/?BCcmutPNxoI
Avec un toggle button, qui basculerait d'un mode de calcul à l'autre, ça donnerait ça (j'y ai ajouté l'encadrement de la zone de saisie)
Private Sub ToggleButton1_Click() If ToggleButton1 Then Range("A2").Value = Range("A2").Value Range("A3").Formula = "=A1*A2" Range("A3").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Range("A2").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With Else Range("A3").Value = Range("A3").Value Range("A2").Formula = "=A3/A1" Range("A2").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Range("A3").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End If End Sub
Voir le classeur ci-joint : https://www.cjoint.com/?BCcmutPNxoI
Merci pour ta reponse, mais serait-il possible de faire ça sans toggle bouton car sur un devis ça le fait pas trop
Ba oui je pense aussi ... quelqu'un m'a donner ca mais sans explication
Avant toute procédure
Puis ces deux procédures
Avant toute procédure
Dim toto As Boolean
Puis ces deux procédures
Private Sub Worksheet_Change(ByVal Target As Range) Static toto As Boolean If Target = Range("A2") And Not toto Then toto = CInt(Target.Value) Range("A2").Value = Range("A1").Value * Range("A2").Value / 100 toto = True End If End Sub Private Sub azWorksheet_SelectionChange(ByVal Target As Range) If toto = True Then toto = False End Sub