Modifier une cellule et lancer une macro à partir d'un point donné

mathidel13870

XLDnaute Nouveau
Bonjour !

J'ai un tableau qui se remplit à l'aide d'un userform et macro.
Je souhaiterai maintenant qu'une fois rempli, l'utilisateur puisse cliquer sur une cellule, la modifier et que les autres calculs se fassent automatiquement pour modifier les colonnes qui suivent.

Pour le moment, l'utilisateur indique le nombre de colonnes qu'ils souhaitent remplir et les remplit une à une, ce qui n'est pas très pratique s'il souhaite juste modifier la colonne 5 par exemple, car il est obligé de tout reremplir.
Mon problème n'est pas d'indiquer à excel qu'il doit relancer la macro, mais plutôt comment indiquer qu'il doit modifier le tableau uniquement à partir de la colonne modifiée.

Car pour le moment, je lui indique la colonne de début, l'utilisateur rentre tous les paramètres et il fait tout à partir de cette colonne et je voudrais qu'une fois les données saisies dans le formulaire, l'utilisateur change uniquement les valeurs voulues et on renvoit le tout sur ta feuille

Je ne sais pas si je suis très claire la ! Je vous mets la première partie du code en dessous, celle de l'userform

Merci pour votre coup de pouce !

Code:
Private Sub CmdValMois_Click()

'Range("B:Z").Delete




Nb_Mois = Me.TxtNbmois.Value


For i = 0 To Nb_Mois - 1

  H2HC = 75
 K = Me.TxtK.Value
    Range("B5").Offset(0, i).Value = K
    Range("B2").Offset(0, i).Formula = i + 1
    Range("B12").Offset(0, i).Formula = H2HC
    Range("B6").Offset(0, i).Formula = 9
Next i

Unload Me

UsfParametres.Show

'Nb jour
Range("B3").Formula = Nb_jour
Range("B4").Formula = Nb_jour / 30.5

'Valeur de S0
Range("B7").Formula = S0

'Valeur de SDBTO
Range("B8").Formula = SDBTO
Range("B9").Formula = S0 * SDBTO / 100

'Valeur de Nt
Range("B10").Formula = Nt

'Valeur de Temperature
Range("B11").Formula = Temp

'Valeur de Pression H2
Range("B13").Formula = ppH2

'Calcul de LHSV
exp0 = 11.0007
exp1 = 6910.93
cSDBTO = 0.0146611
cNt = 0.731505
c2_VVH = 0.415662
c3_H2HC = 0.220087
c1_ppH2 = 0.258668


    H2HCnew = 70
    Range("B18").Formula = 65
    Do
 
        Range("B14").Formula = ((K * Exp(exp0 - (exp1 + cNt * Nt + cSDBTO * (SDBTO * S0 / 100)) / (Temp + 273.15)) * (H2HC ^ c3_H2HC * ppH2 ^ c1_ppH2)) / Log(SDBTO * S0 / 100 / 9)) ^ (1 / c2_VVH)
        'Calcul du débit moyen
        Range("B15").Formula = Range("B14").Value * 180.5 * 0.83
 
        'Calcul du débit max
        If Range("B15").Value > 300 Then
            Range("B16").Formula = 300
        Else
            Range("B16").Formula = Range("B15").Value
        End If

        'Calcul H2/HC calculé
 
        If Range("B16").Value < 300 Then
            Range("B18").Formula = 4070000 * Range("B16").Value ^ (-1.912)
        Else
            Range("B18").Formula = 74.7
        End If
 
        'H2HCnew = CellB18
        H2HCnew = H2HCnew + 1
        Range("B12").Formula = H2HCnew
 'Calcul charge cumulée
        Range("B17").Formula = Range("B16").Value * Nb_jour * 24 / 1000
        
    Loop Until (Range("B18").Value - H2HCnew >= -1) And (Range("B18").Value - H2HCnew <= 1)
    
    Unload Me

For i = 0 To Nb_Mois - 2

UsfParametres.Show

'Nb jour
Range("C3").Offset(0, i).Formula = Nb_jour
Range("C4").Offset(0, i).Formula = Nb_jour / 30.5

'Valeur de S0
Range("C7").Offset(0, i).Formula = S0

'Valeur de SDBTO
Range("C8").Offset(0, i).Formula = SDBTO
Range("C9").Offset(0, i).Formula = S0 * SDBTO / 100

'Valeur de Nt
Range("C10").Offset(0, i).Formula = Nt

'Valeur de Temperature
Range("C11").Offset(0, i).Formula = Temp

'Valeur de Pression H2
Range("C13").Offset(0, i).Formula = ppH2

'Calcul de LHSV

'MsgBox exp0
'MsgBox exp1
'MsgBox cSDBTO
'MsgBox cNt
'MsgBox c2_VVH
'MsgBox c3_H2HC
'MsgBox c1_ppH2



        
        'calcul de K
       
    If Range("B17").Offset(0, i).Value < 700 Then
        Range("C5").Offset(0, i).Formula = -0.116 * Math.Log(Range("B17").Offset(0, i).Value * 1000) + 2.1676
    Else
        Range("C5").Offset(0, i).Formula = 0.7 - 1.5 * Range("B17").Offset(0, i).Value * 10 ^ -4
    End If


    H2HCnew = 70
    Range("C18").Offset(0, i).Formula = 65
Do
         
        'Calcul de VVH
        
        Range("C14").Offset(0, i).Formula = (((Range("C5").Offset(0, i).Value * Math.Exp(exp0 - (exp1 + cNt * Nt + cSDBTO * SDBTO * S0 / 100) / (Temp + 273.15))) * H2HCnew ^ c3_H2HC * ppH2 ^ c1_ppH2) / Math.Log(SDBTO * S0 / 100 / 9)) ^ (1 / c2_VVH)
 
        'Calcul du débit moyen
        Range("C15").Offset(0, i).Formula = Range("C14").Offset(0, i).Value * 180.5 * 0.83
 
        'Calcul du débit max
        If Range("C15").Offset(0, i).Value > 300 Then
            Range("C16").Offset(0, i).Formula = 300
        Else
            Range("C16").Offset(0, i).Formula = Range("C15").Offset(0, i).Value
        End If
 
        'Calcul H2/HC calculé
         If Range("C16").Offset(0, i).Value < 300 Then
            Range("C18").Offset(0, i).Formula = 4070000 * Range("C16").Offset(0, i).Value ^ (-1.912)
        Else
            Range("C18").Formula = 74.7
        End If
        

'Calcul charge cumulée
        
        Range("C17").Offset(0, i).Formula = Range("C16").Offset(0, i).Value * Nb_jour * 24 / 1000 + Range("B17").Offset(0, i).Value
        
        H2HCnew = H2HCnew + 1
        Range("C12").Offset(0, i).Formula = H2HCnew
        
    Loop Until (Range("C18").Offset(0, i).Value - H2HCnew >= -1) And (Range("C18").Offset(0, i).Value - H2HCnew <= 1)



  
Next i


 Unload Me


End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 326
Membres
111 102
dernier inscrit
driss touzi