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 :

Détection modification de cellule et copie de contenu de cellule + username


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 19
    Points : 7
    Points
    7
    Par défaut Détection modification de cellule et copie de contenu de cellule + username
    Bonjour,

    J'ai créée un classeur afin de suivre des opérations de production selon trois états (trois colonnes distinctes à compléter avec une croix via validation de données et mise en forme conditionnelle).
    Je souhaiterais qu'en fonction du contenu de certaines cellules plage ("E14:E73")) -présence d'une "x" ou non-, effectuer une copie dans un onglet log de cette opération (toujours 3 colonnes avant) et y adjoindre le "username de l'utilisateur"


    J'ai commencé avec ce 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub WorkSheet_Change(ByVal Target As Range)
     
    If Not Intersect(Target, Range("E14:E73")) Is Nothing Then
     
    Application.ScreenUpdating = False
     
    If Target.Value = "x" Then
     
    If MsgBox("Etes-vous certain(e) de ne pas effectuer cette opération ?", vbYesNo, "Demande de confirmation") = vbYes Then
     
    Target.Offset(0, -3).Copy
     
    With Sheets("Log")
    .Select
     
    .Range("A65536").End(xlUp)(2).Select
     
    ActiveSheet.Paste
     
    .Range("A65536").End(xlUp)(3).Value = Environ("username")
     
    End With
     
    End If
     
    Application.ScreenUpdating = True
     
    End Sub
    D'avance merci pour votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Tel quel, ta macro écrit la cellule de la colonne B et deux lignes en dessous, le nom d'utilisateur. Qu'est-ce que tu souhaites ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    Merci de me répondre.

    Ce que je souhaite c'est que:
    A chaque fois que l'utilisateur saisit une croix dans cette plage de cellule ("E14:E73") et qu'il confirme, automatiquement son username et l'activité de production (en colonne B:B) soit copier coller dans une autre feuille "Log"

    Pour le moment ma macro ne fait rien du tout, la boîte de dialogue ne s'exécute même pas... je ne comprends pas

    Je joins le fichier, ce sera plus clair.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    En fait, il manquait deux "End If" à ta macro; tu dois la coller dans le module de la feuille :

    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
    Private Sub WorkSheet_Change(ByVal Target As Range)
     
    If Not Intersect(Target, Range("E14:E73")) Is Nothing Then
     
    Application.ScreenUpdating = False
     
    If Target.Value = "x" Then
     
    If MsgBox("Etes-vous certain(e) de ne pas effectuer cette opération ?", vbYesNo, "Demande de confirmation") = vbYes Then
     
    Target.Offset(0, -3).Copy
     
    With Sheets("Log")
    .Select
     
    .Range("A65536").End(xlUp)(2).Select
     
    ActiveSheet.Paste
     
    .Range("A65536").End(xlUp)(3).Value = Environ("username")
     
    End With
     
    End If
    End If
    End If
     
    Application.ScreenUpdating = True
     
    End Sub

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 19
    Points : 7
    Points
    7
    Par défaut
    D'accord merci

    Le problème c'est que j'ai déjà mis cette macro dans la feuille (suivi Prod)
    Mais elle ne s'execute toujours pas

    Je me demande si le fait d'avoir déjà une autre macro WorkSheet_SelectionChange (pour gérer mes croix) ne l'empêche pas de s'executer ?

    Merci

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Regarde le classeur joint. J'ai mis un "x" en E36; regarde le résultat sur la feuille Log. J'ai enregistré le classeur au format "xls", mais ça ne change rien.

    Je me demande si le fait d'avoir déjà une autre macro WorkSheet_SelectionChange (pour gérer mes croix) ne l'empêche pas de s'executer ?
    Non. Par contre, il faut entrer des "x" minuscules. Les majuscules ne la déclencheront pas, ou alors, il faut la changer.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2002] Copie du contenu de cellule en fonction de la date
    Par hobaken dans le forum Conception
    Réponses: 9
    Dernier message: 18/03/2013, 22h57
  2. [XL-2000] détection modification contenu cellules
    Par Noe06 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 30/05/2012, 11h22
  3. copie de contenu de cellule dans un tableau
    Par levac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/05/2007, 16h12
  4. Réponses: 4
    Dernier message: 22/01/2007, 19h51

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