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 :

Intégration d'une private sub "Worksheet_Change" via une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 268
    Par défaut Intégration d'une private sub "Worksheet_Change" via une macro
    Bonjour
    J'ai une sub "Worksheet_Change" qui est fonctionnelle.
    Je voudrais intégrer cette dernière dans un nouveau fichier de manière automatique.
    Je ne sais pas comment faire pour que cette dernière s'applique.

    Pour être plus clair j'ai un fichier ("fichier source") dans lequel se trouve un bouton qui execute une macro.
    Dans cette macro un nouveau fichier s'ouvre ("fichier cible"). Dans un des onglets de ce fichier deux, je souhaite associé la private sub ci dessous.

    Merci de m'aider

    ci dessus ma private sub
    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_SelectionChange(ByVal Target As Range)
     
        Dim laLigne As Integer, laColonne As Integer
        Dim d
     
        laLigne = Target.Row
        laColonne = Target.Column
     
    Range("a1") = laLigne
    Range("a2") = laColonne
     
        d = 1
        While Cells(74, d + 1) <> ""
        d = d + 1
        Wend
            If laLigne < 12 And laLigne > 1 And laColonne < 14 And laColonne > 6 Then
                ActiveSheet.ChartObjects("Graphique 1").Activate
                ActiveChart.SeriesCollection(1).Values = Range(Cells(laLigne + 72, 1), Cells(laLigne + 72, d))
                ActiveChart.ChartTitle.Text = "Génératrice " & laColonne - 6 & " ligne " & laLigne
            Else
            End If
    Cells(laLigne, laColonne).Select
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Tu ne pourrais pas créer un fichier "Template" avec la macro déjà intégrée et que tu ouvres et remplis au besoin avec ta macro plutôt que d'en créer un nouveau ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 268
    Par défaut
    je ne connais pas les fichiers "template". Peux tu m'expliquer qu'est ce que tu entends par ce terme ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    En fait c'est une feuille modèle qui a les mêmes configurations mais sans les données modifiables.
    Celle-ci peut être masquée.
    Il suffit d'en faire une copie dans le même classeur ou dans un nouveau et d'y copier les données que tu souhaites.

    Attention aussi: les Sub Worksheet_Change et Worksheet_SelectionChange sont bien différentes
    Dans ton message tu parles de Change et ton code montre SelectionChange

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 268
    Par défaut
    je ne vois pas trop comment l'appliquer dans mon cas.
    Y'aurait il une autre solution ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Parallèlement aux macros qu'on retrouve dans chaque feuille (Change, SelectionChange), on a aussi les mêmes au niveau du classeur dans ThisWorkbook
    Une différence est le paramètre Sh as Worksheet qui définit sur quelle feuille le code va s'appliquer
    C'est peut-être une solution à ton problème(?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
    End Sub
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     
    End Sub

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

Discussions similaires

  1. [AC-2003] Paramètres d'une Private Sub à une autre
    Par Arola78 dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/05/2009, 23h50
  2. [AC-2007] Appeler une Private Sub "AfterUpdate"
    Par jpg75014 dans le forum VBA Access
    Réponses: 9
    Dernier message: 04/04/2009, 08h48

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