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. 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
    1. 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. 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