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 :

Répéter macro selon cellule sélectionnée [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 252
    Par défaut Répéter macro selon cellule sélectionnée
    Bonjour,


    Grâce à l'aide de JoeJoeH dans un de mes fils précédents, j'ai abouti à ce code qui répond parfaitement à mes attentes :


    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
     
    Sub CréationDossier()
     
    '***COPIER CELLULE DU DOCUMENT ACTIF VERS DOCUMENT MODELE***
       Range("A12").Copy
       Workbooks.Open Filename:= _
       "C:\Documents and Settings\Pierre\Fiche marché_.xls"
       Range("A1").Select
       ActiveSheet.Paste
     
    '***CREATION DES DOSSIERS***
       MkDir "P:\2069" & Range("A1").Value
       MkDir "P:\2069" & Range("A1").Value & "\aPréparation"
       MkDir "P:\2069" & Range("A1").Value & "\bPublication"
       MkDir "P:\2069" & Range("A1").Value & "\dAnalyse"
     
    '***ENREGISTREMENT AVEC VALEUR CELLULE DANS NOUVEAU DOSSIER***
       ActiveWorkbook.SaveAs Filename:= _
       "P:\2069" & Range("A1").Value & "\Fiche marché_" & Range("A1").Value
       ActiveWindow.Close
     
    End Sub
    Cette macro se met en marche quand on clique sur A12.

    Je souhaiterais améliorer ce code de la manière suivante : quand on clique sur A13 c'est A13 qui est copié, quand on clique sur A14 c'est A14 qui est copié, ... Le reste du code ne change pas.

    Je pense qu'il faut utiliser SelectionChange mais je ne vois pas comment agencer le tout.

    Merci.

    PS : je n'ai pas continué sur l'ancien fil car le problème est différent.

  2. #2
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    je te conseille plutôt BeforeDoubleClick
    pour lancer ta macro
    et remplacer le range("A12") par activecell
    bon j'ai pas testé mais ça me parait plus à même de répondre à une manipulation sur une feuille : avec le change tu lancerais ta macro dès que tu cliques ( et tu copy au clic y compris le clic malheureux)

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 252
    Par défaut
    Bonjour,


    Bon j'ai regardé un peu ce que je pouvais faire.
    Voilà le code qui fonctionne mais qui ne fait pas ce que je veux :

    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
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
     
    '***COPIER CELLULE DU DOCUMENT ACTIF VERS DOCUMENT MODELE***
       ActiveCell.Copy
       Workbooks.Open Filename:= _
       "C:\Documents and Settings\Pierre\Fiche marché_.xls"
       Range("A1").Value = ActiveCell.Value
     
     
    '***CREATION DES DOSSIERS***
       MkDir "P:\2069" & Range("A1").Value
       MkDir "P:\2069" & Range("A1").Value & "\aPréparation"
       MkDir "P:\2069" & Range("A1").Value & "\bPublication"
       MkDir "P:\2069" & Range("A1").Value & "\dAnalyse"
     
    '***ENREGISTREMENT AVEC VALEUR CELLULE DANS NOUVEAU DOSSIER***
       ActiveWorkbook.SaveAs Filename:= _
       "P:\2069" & Range("A1").Value & "\Fiche marché_" & Range("A1").Value
       ActiveWindow.Close
     
    End Sub

    Le code ouvre bien le fichier, créé les dossiers, fait une copie de "Fiche marché_" mais ne copie pas la valeur de la cellule où j'ai double cliqué...


    PS : comme vous le constaterez je ne brille pas en vba

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    il faut toujours éviter d'utiliser les ActiveCell, ActiveWorkBook, Select, Range non-préfixé du nom de la feuille....
    qui ne font qu’alourdir le code et cause des "bugs"...


    Pour agir sur la cellule cliqué tu as l'objet "Target" en paramètre de ta fonction événementielle

    Pour ouvrir un classeur utilise une variable Workbook qui te permet ensuite d'agir sur ce classeur..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim wbModele As  as WorkBook
     
    set wbModele =Workbooks.Open ( Filename:=  "C:\Documents and Settings\Pierre\Fiche marché_.xls" )
     
    (...)
    wbModele.SaveAs Filename:= _
       "P:\2069" & Target.Value & "\Fiche marché_" & Target.Value
       wbModele.Close
    pour copier ta valeur précise la feuille de destination (je suppose que c'est la 1° du classeur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     wbModele.sheets(1).Range("A1").Value = Target.Value

  5. #5
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    je voyais plus un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim valeur
    valeur= activecell.value
    range("a1").value=valeur

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 33
    Par défaut
    Bonjour,

    ça ne marche pas en utilisant "Target" à la place de "Activecell"?

    edit : erf trop lent

  7. #7
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    curieux que le "target" ne fonctionne pas , c'est nettement plus pur comme codage

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne comprends pas non plus que le Target ne fonctionne pas
    Si je reprends ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    '***COPIER CELLULE DU DOCUMENT ACTIF VERS DOCUMENT MODELE***
       ActiveCell.Copy 
       Workbooks.Open Filename:= _
       "C:\Documents and Settings\Pierre\Fiche marché_.xls"
       Range("A1").Value = ActiveCell.Value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    '***COPIER CELLULE DU DOCUMENT ACTIF VERS DOCUMENT MODELE***
       Workbooks.Open Filename:= _
       "C:\Documents and Settings\Pierre\Fiche marché_.xls"
       Application.ActiveWorkbook.ActiveSheet.Range("A1") = Target.Value
    Copiera la valeur de la cellule où l'on a cliqué vers la cellule A1 du classeur que l'on vient d'ouvrir et sur la feuille qui sera active au moment de son ouverture.
    Je me rallie tout à fait à la remarque de BBIL. Il faut préciser le nom du classeur, le nom de la feuille etc... Cela évite bien des surprises.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Macro choisir colonne selon cellule selectionnée
    Par hernesto dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/03/2014, 02h30
  2. [XL-2007] Répéter une macro selon la valeur d'une ComboBox
    Par Jeromeric dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/12/2011, 14h02
  3. [XL-2002] Macro Format cellule selon selection
    Par hpone dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 03/02/2011, 17h51
  4. Revenir sur la cellule sélectionné après exécution d'une macro
    Par Daniel-Gérald dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2007, 22h50
  5. Réponses: 3
    Dernier message: 18/06/2005, 01h31

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