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 :

Enregistrer sous et supprimer une partie du code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 169
    Par défaut Enregistrer sous et supprimer une partie du code
    Bonjour à tous,
    J'ai fait un fichier dont le but est
    1. lister des personnes : j'ai userform1 qui contient entre autres choses une listbox1. Cette listbox1 est alimentée au fil du temps.
    2. sauvegarder une copie de ce fichier pour chaque personne listée dans la listbox1, en enlevant la partie du code et notamment l'userform1.

    Voici mon code actuel :
    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
     
    Private Sub BtCréerFichier_Click()
    Dim i As Integer
    Dim fich As String, dep As String
    Dim Cel As Range
    Dim Depart As Long
    Dim FName As String
    Dim VBComp
     
        Application.ScreenUpdating = False
        FName = BrowseFolder("Select A Folder")
        If Dir(FName, vbDirectory) <> vbNullString Then    
           For i = 0 To Listbox1.ListCount - 1
           Set Cel = Sheets(1).Columns("B").Find(what:=Me.Listbox1.List(i, 0), LookIn:=xlValues, lookat:=xlWhole)
                    If Not Cel Is Nothing Then
                        Depart = Cel.Row
                        Sheets(1).Range("C" & Depart).Value = Sheets(1).Range("C" & Depart).Value + 1
                        dep = Sheets(1).Range("D" & Depart).Value
                    End If
               fich = Me.Listbox1.List(i, 0) & " (" & dep & ")"
               Sheets(3).Range("B1").Value = Me.Listbox1.List(i, 0)
               Sheets(3).Range("B2").Value = dep
               ActiveWorkbook.SaveCopyAs Filename:=FName & fich
     
                Set VBComp = ThisWorkbook.VBProject.VBComponents("Userform1")
                ActiveWorkbook.VBProject.VBComponents.Remove VBComp
                ActiveWorkbook.Save
                ActiveWorkbook.Close
               Set Cel = Nothing
               Application.EnableEvents = True
            Next i
            Listbox1.Clear
         End If
        Application.ScreenUpdating = True
    End Sub
    Evidemment, ce code ne fonctionne pas comme je le souhaiterais... Pouvez-nous me donner un petit coup de main svp ?
    Merci de votre indulgence,
    Amicalement

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    qu'est-ce qui ne fonctionne pas comme tu le souhaiterais ? Un peu de matière et d'explication t'amènera à des interventions des contributeurs du forum.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 169
    Par défaut
    Bonjour joe.levrai,
    Merci pour ta réponse.
    Mon code actuel sauvegarde bien une copie du fichier en le renommant, mais supprime l'userform1 dans le fichier initial et non pas dans la copie nominative qui est faite...
    Dis moi si c'est un peu plus clair.
    Merci beaucoup

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Remplace le Thisworkbook de la ligne 25 par Activeworkbooks

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 169
    Par défaut
    MERCI !!
    C'est impeccable !
    J'ai une ultime question : toujours avec le même fichier initial. A l'ouverture de ce fichier, l'userform1 s'affiche.
    Le soucis apparaît avec les copies de fichier dans lesquels l'userform1 a été supprimé (grâce à joe.levrai).
    Je pensais conditionner l'affichage de l'un ou l'autre userform grace au code suivant.
    Mais lorsque j'ouvre l'une de ces copies, j'obtiens une erreur de compilation "Variable non définie", ce qui logique puisque cet userfom1 a été supprimé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
        If Sheets(1).Range("A1") = 0 Then
            Userform1.Show 0 'ici j'obtiens une erreur de compilation
        Else
            Userform2.Show 0
        End If
    end sub
    Comment est-ce que je peux m'en sortir?
    Merci beaucoup

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Si le souhait est de supprimer cette procédure, tu peux éventuellement faire un tour par ici : http://silkyroad.developpez.com/VBA/...cEditor/#LIV-D

    tu as un code prêt à l'emploi.

Discussions similaires

  1. Supprimer une partie de code par l'interpreteur
    Par mr_samurai dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/04/2008, 16h40
  2. [JTextField] Supprimer une partie du texte
    Par jean_bobi dans le forum Composants
    Réponses: 4
    Dernier message: 26/09/2005, 16h22
  3. [VBA][Excel]Supprimer une partie du texte d'une grosse liste
    Par annedeblois dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/09/2005, 18h15
  4. une partie du code a disparu
    Par recup dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 08/03/2005, 11h08
  5. Indenter une partie du code
    Par KooX dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/05/2004, 18h38

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