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 :

Supprimer une ligne précise dans Thisworkbook Private Sub Workbook_Open [XL-2010]


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
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut Supprimer une ligne précise dans Thisworkbook Private Sub Workbook_Open
    Bonjour.

    J'ai un souci, je n'arrive pas à supprimer une ligne précise dans Thisworkbook Private Sub Workbook_Open

    Après plusieurs recherche sur les forums , je n'ai pas trouvé de solution.

    Est-ce possible ???

    Merci d'avance pour votre réponse.

  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,

    Si il s'agit de supprimer une ligne dans le code de l'évènement Private Sub Workbook_Open(), tu peux faire comme ceci :

    par exemple pour supprimer la ligne de code MsgBox "test ligne"
    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
    Sub test()
    'Nécéssite d'activer la référence "Visual basic For Application Extensibility 5.3"
    Dim i As Integer, DebutMacro As Integer, FinMacro As Integer
     
    On Error Resume Next
     
    With ThisWorkbook.VBProject.VBComponents("Thisworkbook").CodeModule
        DebutMacro = .ProcStartLine("Workbook_Open", vbext_pk_Proc)
        FinMacro = .ProcCountLines("Workbook_Open", vbext_pk_Proc) + DebutMacro
        For i = DebutMacro To FinMacro
            If .Lines(i, 1) = "MsgBox ""test ligne""" Then
                .ReplaceLine i, ""
            End If
        Next
    End With
     
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonjour fring

    Merci de t’intéresser à mon petit problème.

    J’ai trouvé une réponse simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub SuprimerLIgneModule()
    With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .deleteLines (64)
    End With
    End Sub
    J’utilise l'Add-In MZ-Tools pour numéroter rapidement les lignes d'une macro.

    Hors MZ-Tools numérote les lignes de code uniquement par dizaine, dans mon cas la ligne n°340 correspond à la ligne 64 du Thisworkbook, par conséquent «.deleteLines (340) » provoquait une erreur.

    Pour pallier à cette situation, je souhaiterais utiliser la procédure pour « Automatiser la numérotation des lignes » que j’ai trouvée dans le tuto Visual Basic Editor de Silkyroad.developpez.com, elle fonctionne parfaitement.

    Par contre la procédure pour supprimer la numérotation bug et affiche le message suivant « Erreur de compilation : Instruction incorrecte à l’extérieure d’une procédure ».

    Là, ça coince, je n’arrive à régler ce problème.

    As-tu une solution car ces 2 procédures de Silkyroad sont très pratiques lorsque le nombre de lignes de code est important.

    As-tu une solution stp.

  4. #4
    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
    Là franchement je ne procéderais pas comme ça, supprimer une ligne de code par son n° sans se soucier de ce qu'elle contient afin de vérifier que c'est la bonne ligne (et dans la bonne procédure) c'est aller droit dans le mur...

    Par contre, dans le code que je te proposais, tu peux en effet remplacer .ReplaceLine i, "" par .DeleteLines i

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Oups !!!

    J'ai pas vérifier, mais sauf erreur de ma part tu as modifier ta première réponse ?

    Je test ton code qui est très intéressant et je te réponds.

    @ +

  6. #6
    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
    Citation Envoyé par modus57 Voir le message
    sauf erreur de ma part tu as modifier ta première réponse ?
    oui

  7. #7
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Citation Envoyé par modus57 Voir le message
    Hors MZ-Tools numérote les lignes de code uniquement par dizaine,


    Avant d'accuser des outils excellents et de plus gratuits, ça serait bien de faire l'effort de lire les notices ou de scanner les possibilités de ceux-ci....

    D'après-toi l'option incrément, à quoi sert-elle ?

    Nom : Ormonth-Data.jpg
Affichages : 480
Taille : 157,6 Ko

    juste pour ce point, sinon je suis totalement de l'avis de Fring
    Là franchement je ne procéderais pas comme ça, supprimer une ligne de code par son n° sans se soucier de ce qu'elle contient afin de vérifier que c'est la bonne ligne (et dans la bonne procédure) c'est aller droit dans le mur...
    cordialement,

    Didier

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    J'insiste un peu

    non désolé, je ne vois pas où est le problème, en reprenant ta ligne de code chez moi elle est bel et bien supprimée, les guillemets et les parenthèses sont correctement positionnés.
    Chez moi lorsque la ligne de code est indentée çà fonctionne pas, par contre si elle l'est çà fonctionne ?


    Bonjour Ormonth

    J'accuse pas MZ-Tools qui est un excellent outils, j'utilise rarement la numérotation des lignes et j'ai zappé l'option incrément.

    Néanmoins MZ-Tools numérote les lignes de code, il exclu les lignes vides
    et commentées, ai-je manqué une option, dans mon cas la ligne n°34 correspond à la ligne 64 du Thisworkbook.

    Cordialement modus57

  9. #9
    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
    Citation Envoyé par modus57 Voir le message
    Chez moi lorsque la ligne de code est indentée çà fonctionne pas
    aah oui en effet...je n'avais pas testé avec l'indentation du code, tu as bien fait d'insister

    essaie comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = DebutMacro To FinMacro
      If .Lines(i, 1) Like "*Worksheets(""AIDE"").Range(""A1"").Value = ""AIDE Version ("" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name)) & "")""" Then
          .ReplaceLine i, ""
      End If
    Next

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

Discussions similaires

  1. [VBA] Comment supprimer une ligne entiere dans excel
    Par babouoles dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 06/07/2017, 08h34
  2. Ecrire à une ligne précise dans un fichier
    Par Valkirion dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2007, 15h18
  3. [VBA Excel] Userform pour supprimer une ligne précise
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 14h32
  4. [MySQL] Supprimer une ligne afficher dans une base de donnée
    Par julienchpt dans le forum PHP & Base de données
    Réponses: 31
    Dernier message: 14/10/2005, 15h45
  5. [HTML] Se placer à une ligne précise dans un tableau
    Par seb55555 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/10/2004, 15h06

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