IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

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


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Points : 26
    Points
    26
    Par défaut Modifier une cellule et lancer une macro à partir d'un point donné
    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 exempe, 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.


    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    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

  2. #2
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je ne sais pas si j'ai bien tout compris mais il me semble que si tu chargeais tes données déjà saisies dans ton formulaire, l'utilisateur change uniquement les valeurs voulues et on renvoit le tout sur ta feuille

    Comme ça pas besoin de tout ressaisir

    Tu dis si ça te convient

    à bientôt

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Il faudrait quelque chose comme ça oui... En fait le tableau est remplit pour un premier "cycle" et ensuite il me faut pouvoir juste changer une cellule et que le calcul se fasse et que le tableau se modifie.

    Ce que je n'arrive pas à dire à excel de commencer à un endroit du tableau.
    J'aimerai faire ce que tu dis mais je ne vois pas comment m'y prendre, car tout ce que j'ai codé pour le moment partait d'un point de départ et je faisais un offset, mais là ça ne marche pas du coup comme je ne sais pas ce que l'utillisateur va modifier

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Personne ne peut m'indiquer une démarche à suivre ? Je suis un peu perdue là hélas, ça m'aiderait beaucoup !

Discussions similaires

  1. [XL-2010] Insérer bouton dans une cellule et lancer macro avec l'adresse de la cellule
    Par Phifou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2014, 10h43
  2. Réponses: 7
    Dernier message: 13/12/2008, 09h31
  3. différencier une cellule vide d'une cellule nulle
    Par schwarzy2 dans le forum VB.NET
    Réponses: 4
    Dernier message: 02/09/2008, 13h50
  4. incrémenter une cellule jusqu'a une cellule variable
    Par derf3183 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/07/2006, 14h48
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo