Probleme VBA

Vincb9 -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

Je souhaiterais faire quelquepas simple à expliquer.
En faite avec Userform j'y arrive mais pas avec des cellules directement mais c'est peut-être impossible.

imaginez que j'ai une cellule "A1" ou j'ai mon cout de revient
en "A2" j'ai mon coeff et en "A3" j'ai mon prix de vente

Je voudrais que lorsque je modifie mon coeff le prix de vente change automatiquement et inversement or si j'ai une formule dans ces cellule je vais l'effacer en écrivant.
Je ne veux ni bouton, ni raccourcis clavier pour activer la macro
J'ai bien réussi en mettant des textbox mais je voudrais le faire sans !

Quelqu'un à une idée ??

vince

4 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    est ce que celà correspond ?

    Const plage = "B2:B3"      
    
    Private Sub Worksheet_Change(ByVal Target As Range)      
    Dim li As Long      
    If Not Intersect(Target, Range(plage)) Is Nothing Then      
      li = Target.Row      
        Select Case li      
          Case 2      
            Cells(3, 2) = Cells(2, 2) * Cells(1, 2)      
          Case 3      
            Cells(2, 2) = Cells(3, 2) / Cells(1, 2)      
        End Select      
    End If      
    End Sub  
     
        A        B   
    1  PR       12   
    2  Coeff     5   
    3  PV       60   
    

    bonne suite
    1
    1. Vincb9
       
      tu es un dieu ccm81 merci beaucoup
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    de rien
    et dieu n'a rien à voir avec tout ça

    RQ. si le pb est bouclé peux tu le (les) mettre à Résolu

    bonne suite
    0
  3. Vincb9
     
    par contre je vois marqué Const plage = "B2:B3"
    je met quoi si mon cout de revient est en D74
    mon coeff en X74 et mon prix de vente en X77 ??
    0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    Const PR = "B1"
    Const Coeff = "D2"
    Const PV = "B3"
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim plage As Range
    Dim ad As String
    Set plage = Union(Range(Coeff), Range(PV))
    If Not Intersect(Target, plage) Is Nothing Then
      ad = Target.Address
      ad = Replace(ad, "$", "")
        Select Case ad
          Case Coeff
             Range(PV) = Range(PR) * Range(Coeff)
          Case PV
             Range(Coeff) = Range(PV) / Range(PR)
        End Select
    End If
    End Sub

    et tu mets ce que tu veux pour les constantes
    bonne suite
    0