VBA - Aidez moi

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

  1. Bon ben tanpis merci quand meme
    0
    1. Contributeur
      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
    2. 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
    3. Contributeur
      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
    4. 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
    5. par hasard t'as d'autre talent que le VBA du style HTML ?
      0
  2. Merci pour ta reponse, mais serait-il possible de faire ça sans toggle bouton car sur un devis ça le fait pas trop
    0
    1. Contributeur
      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