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 :

Modification d'une cellule en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut Modification d'une cellule en VBA
    Bonjour tout le monde!

    Donc, voilà mon problème. J'ai 2 colonnes, la C et la D. Je voudrais que lorsque je change l'une de mes cellules dans la colonne C, ma cellule adjacente en D se modifie automatiquement selon une formule. Même chose qui se produirait lorsque je modifierais une cellule dans ma colonne D, c'est-à-dire que ma cellule adjacente en C se modifie automatiquement suivant une autre formule. Par contre, je voudrais bien entendu que ma formule s'écrase et m'inscrive uniquement le résultat en numérique. De cette façon j'irais chercher le maximum de flexibilité dans mon programme et ça empêcherait que mes utilisateurs de bousiller les formules.

    Voici mon code jusqu'à maintenant, mais on dirait qu'il ne fonctionne pas. Je ne comprends pas pourquoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Modification automatique de la cellule
     
     
     
    If Application.Intersect(Target, Me.Range("C4:C443")) Is Nothing Then Exit Sub
     
     
    Target.Offset(0, 1).Value = "=IF(RC[-1]="""","""",IF(RC[-1]=""OFF"",""OFF"",IF(ISERR((RC[-1]*24+RC[2])/24),""OFF"",IF(RC[-1]>=R3C38,((RC[-1]*24-(24-RC[2]))/24),(RC[-1]*24+RC[2])/24))))"
     
     
    End Sub

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    Bon ok, je m'excuse... je venais de réinstaller Office et j'avais oublié d'activer le système de macros...

    Mais pour les intéressés, voici à quoi ressemble mon code.

    Enjoy!

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Modification automatique de la formule
     
     
     
    If Application.Intersect(Target, Me.Range("C4:C443")) Is Nothing Then Exit Sub
     
     
    Target.Offset(0, 1).Value = "=IF(RC[-1]="""","""",IF(RC[-1]=""OFF"",""OFF"",IF(ISERR((RC[-1]*24+RC[2])/24),""OFF"",IF(RC[-1]>=R3C38,((RC[-1]*24-(24-RC[2]))/24),(RC[-1]*24+RC[2])/24))))"
     
        Target.Offset(0, 1).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     
     
    End Sub

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    Je pense que tu peux raccourcir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
    'Modification automatique de la formule
    If Application.Intersect(Target, Me.Range("C4:C443")) Is Nothing Then Exit Sub
    Target.Offset(0, 1).Formula = "=IF(RC[-1]="""","""",IF(RC[-1]=""OFF"",""OFF"",IF(ISERR((RC[-1]*24+RC[2])/24),""OFF"",IF(RC[-1]>=R3C38,((RC[-1]*24-(24-RC[2]))/24),(RC[-1]*24+RC[2])/24))))"
    Target.Offset(0, 1).Value = Target.Offset(0, 1).Value
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modification d'une cellule grace a du vba
    Par INCO13 dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 27/06/2008, 08h33
  2. Ecrire dans une cellule en VBA
    Par ade94 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/07/2007, 17h15
  3. Reference a une cellule sur VBA
    Par nicoroth dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/07/2007, 12h39
  4. Formater une cellule en VBA pour recevoir une date
    Par *.Har(d)t dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/05/2007, 17h39
  5. [OpenOffice][Tableur] [macro] Evenements : modif d'une cellule dans calc
    Par Eruil dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 23/04/2007, 16h26

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