VBA - Aidez moi

Vinceb9 -  
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

4 réponses

Pitu Messages postés 1441 Date d'inscription   Statut Contributeur Dernière intervention   125
 
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)

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
0
Vinceb9
 
Merci pour ta reponse, mais serait-il possible de faire ça sans toggle bouton car sur un devis ça le fait pas trop
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Un modèle sans VBA Voir ce classeur
A+
0
Vinceb9
 
Bon ben tanpis merci quand meme
0
Pitu Messages postés 1441 Date d'inscription   Statut Contributeur Dernière intervention   125
 
Attends, attends ... ya peut-être (sans doute) moyen de mettre le code VBA sur une action sur une cellule plutôt que sur un toggle button ...
0
Vinceb9
 
Ba oui je pense aussi ... quelqu'un m'a donner ca mais sans explication

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
0
Pitu Messages postés 1441 Date d'inscription   Statut Contributeur Dernière intervention   125
 
Je reviens sur ce que j'ai dit : Si tu gardes le toggle button, mais que tu lui modifies la valeur de sa propriété PrintObject pour mettre False, ton bouton ne sortira pas à l'impression.
Ca t'irait ?
0
Vinceb9
 
Ba ouai mais cest chian si il faut a chaque cliquer sur le bouton parce que nous on va tout remplir à la tabulation :s
0
Vinceb9
 
par hasard t'as d'autre talent que le VBA du style HTML ?
0