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 :

executer une macro quand on change la valeur d'une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut executer une macro quand on change la valeur d'une cellule
    bonsoir à tous,
    j'ai créé un doc dans lequel je souhaite automatiser une action.
    Pour les cellules A15 à A32 j'ai créé des listes de noms. Quand je modifie une de ces cellules, je souhaite que d'autres cellules soient complétées.
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Select Case ActiveCell.Value
     
    Case "Christophe"
     
    ActiveCell.Offset(0, 1).Value = "D1 Open"
    ActiveCell.Offset(0, 2).Value = "15/01/1969"
    ActiveCell.Offset(0, 4).Value = "100"
     
    case "Benoit"
    ActiveCell.Offset(0, 1).Value = "SENIOR"
    ActiveCell.Offset(0, 2).Value = "21/02/1973"
    ActiveCell.Offset(0, 4).Value = "130"
    ...
    End Select
    je souhaite que ce code puisse s'exécuter quand je change la valeur l'une des cellules de A15 à A32 (je répète que chacune de ces cellules sont préremplies d'une liste de noms)

    J'ai pu lire dans quelques forums l'utilisation de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    C'est peut etre une solution à mon problème mais je ne sais l'utiliser

    Merci pour votre aide
    Benoit.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Avec cela tu devrais être dé-coincé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
     
        MsgBox (Target.Row & " " & Target.Column & "  " & Target.value)
        Variable = Target.Value
        V_ligne = Target.Row
        V_col = Target.Column
     
    End Sub

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Benwad et le forum
    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
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Count > 1 Then Exit Sub
    ' si on a modifié plus d'une cellule (par copier/coller), on sort
    If Intersect(Target, Range("A15:A32")) Is Nothing Then Exit Sub
    'si les cellules modifiées ne sont pas dans la plage, sortir
    Select Case Target
        Case "Christophe"
            Target.Offset(0, 1) = "D1 Open"
            Target.Offset(0, 2) = "15/01/1969"
            Target.Offset(0, 4) = "100"
        Case "Benoit"
            Target.Offset(0, 1) = "SENIOR"
            Target.Offset(0, 2) = "21/02/1973"
            Target.Offset(0, 4) = "130"
    '...
    End Select
    End Sub
    Si tu ne sais pas dèjà :
    Clic-droit sur le nom de l'onglet => Menu contextuel>>Visualiser le code
    et tu colles la macro

    J'ai fait une macro simple, qui ne fonctionne que si tu changes une seule cellule dans la plage A15:A32 sur la feuille lié au module.
    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    bonsoir à vous,

    j'ai essayé les solutions proposées, mais je n'obtiens pas de résultat.
    Ai-je bien compris ? je saisis le code proposé dans ma macro 1; et ensuite je vais dans l'une des cellules entre A15 et A32 Mais rien ne se passe. En fait ce que je voudrais c'est que dès que sélectionne un nom dans une cellule (par exemple je choisis "Wadoux Benoit" dans A16 je veux que les autres cellules D16 et G16 soit complétées automatiquement.

    Merci pour vos lumières...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Quand je saisis le code de "gorfael" et ensuite quand je veux retrouver ma macro en faisant "outils", "macro", je ne la vois plus....???????

  6. #6
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    Bonjour,

    As-tu coller le code dans la feuille correspondante ou dans un module?

    Exécute la macro pas à pas (avec un point d'arrêt) et donne nous en des nouvelles (est-ce qu'il utilise le target? Est-ce que la cellule est dans l'Intersect?)

    Ça va nous aider!

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    bonsoir drakkar_agfa,
    en fait j'ai saisi le code suivant
    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
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Count > 1 Then Exit Sub
    ' si on a modifié plus d'une cellule (par copier/coller), on sort
    If Intersect(Target, Range("A15:A32")) Is Nothing Then Exit Sub
    'si les cellules modifiées ne sont pas dans la plage, sortir
    Select Case Target
        Case "Christophe"
            Target.Offset(0, 1) = "D1 Open"
            Target.Offset(0, 2) = "15/01/1969"
            Target.Offset(0, 4) = "100"
        Case "Benoit"
            Target.Offset(0, 1) = "SENIOR"
            Target.Offset(0, 2) = "21/02/1973"
            Target.Offset(0, 4) = "130"
    '...
    End Select
    End Sub
    dans la feuil1.
    J'ai voulu faire fonctionner ma macro en pas à pas mais je ne la voit plus dans "outils" "macro"
    Je ne comprends pas?????

  8. #8
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    C'est normal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Premièrement, Private.
    Deuxièment, la macro s'active en changent le contenue d'une cellule. "Worksheet_Change"

    En changeant une cellule, la macro s'active et vérifie si la cellule fait partie du Range, si oui, alors il entre dans le Select Case.

    Meilleur façon de tester est de changer une cellule de ta plage!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/07/2012, 11h13
  2. lancer une macro en fonction de la valeur d'une cellule
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/06/2008, 17h18
  3. [MySQL] Prendre la valeur d'une table et l'associer à la valeur d'une autre
    Par gandolfi dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 02/02/2008, 08h04
  4. [VBA-E] Copier une macro dans un fichier à l'aide d'une macro
    Par Capsule dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/01/2007, 20h05
  5. [C#][DataGridView] Action quand on change la valeur d'une CheckBox
    Par TheParadoX dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/09/2006, 10h08

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