VBA - Aidez moi

Fermé
Vinceb9 - 2 mars 2012 à 11:50
Pitu Messages postés 1441 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 - 2 mars 2012 à 14:28
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 jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125
2 mars 2012 à 12:21
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
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 dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
2 mars 2012 à 13:44
Bonjour,
Un modèle sans VBA Voir ce classeur
A+
0
Bon ben tanpis merci quand meme
0
Pitu Messages postés 1441 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125
2 mars 2012 à 13:57
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
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 jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125
2 mars 2012 à 14:03
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
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
par hasard t'as d'autre talent que le VBA du style HTML ?
0