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 :

Commenter du code (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 averti
    Homme Profil pro
    Responsable de trafic
    Inscrit en
    Février 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de trafic
    Secteur : Transports

    Informations forums :
    Inscription : Février 2017
    Messages : 46
    Par défaut Commenter du code (via une MACRO)
    Bonjour,

    J'ai trouvé ce sujet https://www.developpez.net/forums/d1...er-code-macro/ sur le forum qui permet de supprimer une partie définie d'un code.

    J'aimerais une solution moins radicale qui permet d'avoir la possibilité de "commenter" certaines lignes de "ThisWorkbook" (ensuite la macro enregistre le fichier sous un emplacement de mon archive) puis dans un second temps un code permet de "décommenter" les procédures ciblées de "ThisWorkbook".
    En fait, lors de la création de mon archive (le code permettant de créer le backup est déjà créé) j'aimerais que certains codes ne soient plus actifs car non nécessaires pour un fichier d'archive.

    Par contre je ne sais pas si une telle chose est possible en VBA
    Mon besoin est de figer une procédure dans Thisworkbook qui créé des fichiers temporaires dans un emplacement précis pour indiquer à n'importe quel utilisateur en lecture seule qui verrouille le fichier. Cette procédure ne sera plus utile pour un fichier d'archive.

    Voici mon début de codage :

    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
     
     
    Sub Archiver()
     
        Dim Nbr As Variant
        Dim AdresseCell As Variant
     
        Dim objShell As Object, objFolder As Object, oFolderItem As Object
        Dim Chemin As String, NomComplet As String
     
     
    ' ICI ON METTRA LE CODE QUI DESACTIVERA DES PROCEDURES DE THISWORKBOOK
     
     
        'On fait une sauvegarde du fichier avant rénitialisation
     
     
    '.xlsm = 5
    '.xls = 4
    wk = ActiveWorkbook.Name
    LeNom = Left(wk, Len(wk) - 5) & " (copie de sauvegarde)" & ".xlsm" 'A adapter
     
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
     
    On Error Resume Next
    Set oFolderItem = objFolder.Items.Item
    Chemin = oFolderItem.Path
     
    ActiveWorkbook.SaveCopyAs Chemin & "\" & LeNom   'à adapter
     
        MsgBox "Le fichier va être rénitialisé"
     
    ' ICI ON METTRA LE CODE QUI REACTIVERA LES PROCEDURES DE THISWORKBOOK AVANT RENITIALISATION DU FICHIER
     
         With Sheets("Suivi").Select
         Nbr = Application.WorksheetFunction.CountA(Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp)))
         End With
     
         'On ajoute 2 correspondant aux lignes utilisées pour l'header du document
         AdresseCell = Nbr + 2
     
         'On compte le nombre de cellules non vides du document
         MsgBox "La dernière ligne utilisée est la ligne : " & AdresseCell
     
         'On sélectionne toutes les lignes dont la colonne C contient des cellules non vides à partir de la ligne 4
         Rows("4:" & AdresseCell).Select
     
         'On supprime la sélection
         Selection.Delete Shift:=xlUp
     
         'Rénitialisation de la première ligne
         Range("A3:M3").ClearContents
     
    End Sub
    Merci d'avance pour votre aide,
    Baptiste

  2. #2
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    Bonjour,

    Au lieux de condamner une procédure ou fonction pourquoi ne pas bloquer ce qui te permet de la lancer

    exemple: tu as un bouton pour appeler qui appel une macro quand tu souhaite selon tel ou tel chose tu bloque
    le bouton

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de trafic
    Inscrit en
    Février 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de trafic
    Secteur : Transports

    Informations forums :
    Inscription : Février 2017
    Messages : 46
    Par défaut
    Bonjour tony76,

    Pour le coup la procédure que je souhaite condamner est lancée avec :
    Private Sub Workbook_Open()
    . Et dans cette Sub j'ai d'autres codes que je souhaite garder actif.

    Le code complet
    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 Workbook_Open()
        Dim numfich As Integer
        Dim us As String
     
        'Procédure de maintenance automatique à chaque ouverture du fichier
        Sheets("Suivi").Select
        Columns("J:J").Select
        Selection.FormatConditions.Delete
        MFC
        Range("A3").Select
     
        'Vérification si le fichier est en lecture/écriture ou en lecture seule et pose d'un verrou contenant le nom de l'utilisateur qui modifie le fichier le cas échéant
        'Explications du fonctionnement de cette macro dans le LISEZ-MOI situé à la racine : K:\mon disque
     
            If Dir("K:\mon disque\lecture-seule.txt") = "" Then
            numfich = FreeFile
            Open "K:\mon disque\lecture-seule.txt.txt" For Output As #numfich
            Print #numfich, Application.UserName ' pose verrou
            Close #numfich
        Else
            numfich = FreeFile
     
            Open "K:\mon disque\lecture-seule.txt" For Input As #numfich
            Input #numfich, us
            Close #numfich
            MsgBox "Fichier en lecture seule !" & vbLf & "Utilisé par " & Application.IfError(Application.VLookup(us, Feuil7.Range("Q2:R3"), 2, False), us) ' info 
     
        End If
     
    End Sub
    Pour mon fichier archive je souhaite garder uniquement cette partie du code dans le
    Private Sub Workbook_Open()
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        'Procédure de maintenance automatique à chaque ouverture du fichier
        Sheets("Suivi").Select
        Columns("J:J").Select
        Selection.FormatConditions.Delete
        MFC
        Range("A3").Select

  4. #4
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131

  5. #5
    Membre averti
    Homme Profil pro
    Responsable de trafic
    Inscrit en
    Février 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de trafic
    Secteur : Transports

    Informations forums :
    Inscription : Février 2017
    Messages : 46
    Par défaut
    Re,

    Merci pour le lien, du coup j'ai la solution pour recréer des macro.

    EDIT
    J'ai trouvé cela mais je ne comprends pas comment sont appelés "ThisWorkbook" et "Workbook_Open" ?

    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
        'Un autre exemple pour supprimer un procédure évènementielle
        'SupprimerMacroPrecise Wb, "ThisWorkbook", "Workbook_Open"
     
    End Sub
     
     
    Sub SupprimerMacroPrecise(Wb As Workbook, Mdl As String, NomMacro As String)
        Dim Debut As Integer, Lignes As Integer
     
        With Wb.VBProject.VBComponents(Mdl).CodeModule
            Debut = .ProcStartLine(NomMacro, 0)
            Lignes = .ProcCountLines(NomMacro, 0)
            .DeleteLines Debut, Lignes
        End With
    End Sub



    Bien cordialement,
    Baptiste

  6. #6
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    Bonjour,

    Je suppose que étant donner que le code que tu veux commenté se trouve dans le Workbook_Open()et c'est elle qui se lance en premier tu dois faire appel a la fonction avant à testé....

Discussions similaires

  1. [LibreOffice][Tableur] comment protéger une feuille via une macro en n'autorisant que les cellules non protégées ?
    Par drakkar95 dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 28/11/2020, 08h37
  2. [XL-2010] Comment bloquer l'impression recto verso via une macro
    Par nejorqui dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/06/2015, 20h17
  3. Ecrire dans le code source d'une feuille via une macro?
    Par mazuno dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/07/2010, 14h48
  4. Comment supprimer des liaisons excel/powerpoint via une macro?
    Par toma65 dans le forum VBA PowerPoint
    Réponses: 18
    Dernier message: 27/06/2007, 15h32
  5. comment lancer du code depuis une macro ?
    Par faiglon dans le forum Access
    Réponses: 15
    Dernier message: 13/07/2006, 11h03

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