XL 2013 Répartition montant sur plusieurs cellules (Modification VBA)

susaita

XLDnaute Occasionnel
Bonjour,
dans le fichier ci-joint j'ai un code qui fait la répartition du montant entré en cliquant sur le bouton MO de l'onglet MO Qte
le code fonctionne très bien, j'ai juste besoin de faire une petite modification dans la dernière partie du code :

Private Function CostElement(psOTPDestination As String, poShMoQte As Worksheet) As String

Dim oRes As Range
Dim iDerLig As Integer
Dim oPlageCodeOTP As Range

'Set oRes = poPlageCodeOTP.Find(psOTPDestination, LookAt:=xlWhole)
iDerLig = poShMoQte.Range("A" & Rows.Count).End(xlUp).Row

Set oPlageCodeOTP = poShMoQte.Range("A118:A" & iDerLig)
Set oRes = oPlageCodeOTP.Find(psOTPDestination, LookAt:=xlWhole)


If oRes Is Nothing Then
CostElement = 2015
Else
CostElement = 2016
End If

Set oRes = Nothing

End Function

donc pour que le code donne 2016 comme résultat dans la colonne G de l'onglet ODA MO, ma séléction doit commencer de la cellule A118..

ce que je désire avoir c'est que le code détecte la sélection automatiquement en se basant sur le nom de la cellule, c'est a dire la sélection commence automatiquement après la cellule nomée MOI dans la colonne B de l'onglet MO Qte
 

Pièces jointes

  • Répartition.xlsm
    64.1 KB · Affichages: 35
Dernière édition:

thebenoit59

XLDnaute Accro
Bonjour Susaita.

Petite erreur dans ton énoncé, il s'agit de la colonne B sur laquelle la recherche s'effectue.
Une proposition de modification en conservant ton style de variable.

VB:
'Renvoie la valeur de CostElement
'en fonction :
'   - du "OTP de destination" (colonne L)
'   - de la plage contenants les codes OTP (onglet "MO Qte", A118:A)
'Private Function CostElement(psOTPDestination As String, poPlageCodeOTP As Range) As String
Private Function CostElement(psOTPDestination As String, poShMoQte As Worksheet) As String

    Dim oRes As Range
    Dim iDerLig As Integer, iPreLig As Integer
    Dim oPlageCodeOTP As Range

    'Set oRes = poPlageCodeOTP.Find(psOTPDestination, LookAt:=xlWhole)
    iDerLig = poShMoQte.Range("A" & Rows.Count).End(xlUp).Row
    iPreLig = Application.Match("MOI", poShMoQte.Columns(2), 0) + 1
     
    With poShMoQte
        Set oPlageCodeOTP = .Range(.Cells(iPreLig, "A"), .Cells(iDerLig, "A"))
    End With
    Set oRes = oPlageCodeOTP.Find(psOTPDestination, LookAt:=xlWhole)
   

    If oRes Is Nothing Then
        CostElement = 2015
    Else
        CostElement = 2016
    End If

    Set oRes = Nothing

End Function
 

Discussions similaires

Réponses
2
Affichages
142

Statistiques des forums

Discussions
312 156
Messages
2 085 813
Membres
102 989
dernier inscrit
Denver76