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 :

Comment copier une procédure


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Par défaut Comment copier une procédure
    Hello tout le monde du forum

    Je viens de faire la procedure SelectionChange sur une feuille ("sheet1") de mon classeur
    Ensuite je créé une autre feuille ("sheet2) dans mon classeur qui copie les données venant de la ("sheet1") et j'aimerais importé cette même procedure dans ma nouvelle feuille au moment de sa création

    Voici ma procédure :


    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
     
     
     Sub Worksheet_SelectionChange(ByVal Target As Range)
     
     If Target.Column = 2 Then
     With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$AU$1:$AU$4"
        End With
     End If
     
     If Target.Column = 5 Then
     With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$AS$1:$AS$3"
        End With
     End If
     
      If Target.Column = 22 Then
     With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$AW$1:$AW$2"
        End With
     End If
     
    End Sub

    Comment faire?

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Et si tu metais ta procédure dans ThisWorkbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    '...procédure
    End Sub
    De cette façon elle sera valable pour toutes les feuilles mais cela ne convient peut-être pas ?

  3. #3
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Par défaut
    Non fait j'ai une feuille qui n'est dans le circuit donc ce serait embêtant!

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Quel intérêt de faire ça ? Tu peux placer ta procédure dans un module standard avec le paramètre Target et l'appeler de toutes tes feuilles.
    Pour tester, dans le code de la feuille 1 tu mets ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim adres As Range
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set adres = Target
    LaMacro adres, ActiveSheet
    End Sub
    Dans un module standard, place ça
    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
    Sub LaMacro(adres As Range, FL1 As Worksheet)
        MsgBox adres.Address 'pour tester, A EFFACER
     
    If adres.Column = 2 Then
     With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$AU$1:$AU$4"
        End With
     End If
     
     If adres.Column = 5 Then
     With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$AS$1:$AS$3"
        End With
     End If
     
      If adres.Column = 22 Then
     With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$AW$1:$AW$2"
        End With
     End If
    End Sub
    Ensuite, je ne sais pas comment tu crées tes feuilles mais quand tu copies une feuille, la macro est copiée avec. tu peux tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Sheets("Feuil1").Copy After:=Sheets(Sheets.count)
    J'ai ajouté la feuille au cas où tu en aies besoin
    A+

  5. #5
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Par défaut
    Salut,

    Alors j'ai testé le code mais alors il marche à moitié que dans certaines des colonnes 2 et 5 et dans la colonne 22 il ne marche pas du tout

    j'avais le même souci avant sans même copier la procédure....

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

Discussions similaires

  1. comment appeler une procédure événementielle
    Par OutOfRange dans le forum Débuter
    Réponses: 8
    Dernier message: 03/06/2005, 20h32
  2. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 20h55
  3. Comment Copier une table dans un fichier?
    Par thx2003 dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/12/2003, 13h09
  4. Comment copier une clé de la base des registres ?
    Par annecyrond dans le forum Langage
    Réponses: 2
    Dernier message: 16/09/2003, 08h53
  5. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 16h54

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