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 :

Insérer une Private Sub Worksheet dans le code d'une feuille à partir d'un module


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut Insérer une Private Sub Worksheet dans le code d'une feuille à partir d'un module
    Bonjour,
    Est il possible d'insérer une Private Sub Worksheet dans le code d'une feuille à partir d'un module?

    Je m'explique,
    J'ai 110 feuilles dans mon classeur et je voudrais que chacune fonctionne avec une Private Sub Worksheet qui varie de l'une à l'autre, je ne voudrais donc pas saisir un par un tous les codes.


    Si quelqu'un voit quelque chose, merci beaucoup

  2. #2
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,
    Je pense que tu as deux options :

    1°) Tu veux faire la même private sub pour tous. Tu peux donc insérer un module contenant ton code et tu en fais appel via tes sheets avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub nom_sub()
    call nom_fonction_module()
    end sub
    2°) J'ai vu récemment que tu peux du code VBA via une macro VBA. Orientes toi vers cette idée là qui te permettrais de créer ton code dynamiquement.

    Cordialement,

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut
    Je pense que ta première idée est pas mal du tout bien que le cas soit un peu plus compliqué.

    Le code diffère selon les feuilles, après double clic, il crée un pdf et l'envoie par mail:
    La feuille 1 crée un fichier 1.pdf puis l'envoie par mail....
    La Feuille 2, 2.......


    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        Dim Recherche As Range
    Set Recherche = Sheets("LCEPLE1").Columns("AS").Find("Liste Complémentaire", LookIn:=xlValues, LookAt:=xlWhole)
    If Not Recherche Is Nothing Then  
     
     
     
        If Range("A2") > "" And InStr(1, Cells(Target.Row, 45), "Liste Complémentaire") > 0 Then
     
         [BZ1].FormulaLocal = "=NBVAL(A2:A999)"
     
           REPONSES = Range("BZ1").Value
     
            MsgBox "Il y a " & REPONSES & " réponses LC"
     
          ENREGISTRERMODIFETMAILLCEPLE1
          EnvoimailLCEPLE1
        Else
            MsgBox "Il n'y a pas de réponses LC"
     
        End If
     End If
     
     
         Target.Offset(1, 0).Select
     
     
    End Sub
     
    Sub EnvoimailLCEPLE1()
     
     
     
    Application.Run ("'Wait'")
     
     
    Dim destinataire As String, sujet As String, body As String, fichierjoint As String, strcommand As String
    destinataire = Range("AE2")
    sujet = "RESULTAT COMMISSION"
    body = "Madame, Monsieur" & Range("BG2") & " " & Range("AA2") & " " & Range("AC2") & vbCrLf & vbCrLf & vbCrLf & vbCrLf & "Veuillez trouver, ci-joint, les rsultats de la commission"
     
     
     
    fichierjoint = "C:\Documents and Settings\X\Bureau\LISTE COMPLEMENTAIRE Y 2014 (1).pdf"
     
     
     
    strcommand = "C:\Program Files\Mozilla Thunderbird\thunderbird"
    strcommand = strcommand & " -compose " & "to='" & destinataire & "'"
    strcommand = strcommand & ",subject='" & sujet & "'"
    strcommand = strcommand & ",body='" & body & "'"
    'strcommand = strcommand & "," & "attachment=file:///" & fichierjoint
     
    strcommand = strcommand & "," & "attachment=file:///" & fichierjoint
     
     
    Debug.Print strcommand
     
    Call Shell(strcommand, vbNormalFocus)
     
     
     
     
    End Sub
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ENREGISTRERMODIFETMAILLCEPLE1
    la macro qui gère la création du pdf

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour,
    Regard ça
    Code Module de Classe1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public WithEvents Feuille As Worksheet
    Private Sub Feuille_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox Feuille.name
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public T_Feuille() As New Classe1
    Sub test()
    Dim i As Long
     
    ReDim T_Feuille(Sheets.Count)
    For i = 1 To Sheets.Count
    Set T_Feuille(i).Feuille = Sheets(i)
    Next
    End Sub
    Code ThisWorkbook : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_NewSheet(ByVal Sh As Object)
    test
    End Sub
     
    Private Sub Workbook_Open()
    test
    End Sub
    Dernière modification par Invité ; 25/04/2014 à 15h53.

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Il y a aussi l'évènement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    de l'objet ThisWorkbook

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut
    Merci beaucoup,

    J'ai essayé, le résultat que j'obtiens quand je doubleclic sur ma Feuil1 est une MsgBox avec "Feuil1" inscrit.
    J'ai du me planter???

    Je n'ai rien dans le code de ma Feuil1

Discussions similaires

  1. Réponses: 8
    Dernier message: 22/01/2015, 13h51
  2. Recherche d'un String dans le code d'une page
    Par MyWork dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/04/2007, 19h52
  3. [JS] Remplacer les mots dans le code d'une page.
    Par sansamis dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 07/01/2007, 19h06
  4. Réponses: 4
    Dernier message: 28/08/2006, 13h04
  5. Réponses: 4
    Dernier message: 08/06/2006, 09h26

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