VBA - Aidez moi

Vinceb9 -  
Pitu Messages postés 1460 Statut Contributeur -
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. Pitu Messages postés 1460 Statut Contributeur 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
  2. 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
  3. Vinceb9
     
    Bon ben tanpis merci quand meme
    0
    1. Pitu Messages postés 1460 Statut Contributeur 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
    2. 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
    3. Pitu Messages postés 1460 Statut Contributeur 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
    4. 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
    5. Vinceb9
       
      par hasard t'as d'autre talent que le VBA du style HTML ?
      0