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 :

Déplacer une feuille vers un classeur fermé


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut Déplacer une feuille vers un classeur fermé
    Salut à toute la communauté des développeurs

    J'ai essayé grace aux aux ancien sujets postés sur le forum, de déplacer une feuille de mon classeur vers un autre qui est fermé.
    Voilà le code que j'utilise:

    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
    Option Explicit
    Dim obj As Sheets
    Dim Valeur As String
     
    Private Sub Recherche_OK_Click()
    On Error GoTo Gerreur
    Début:
    If ComboBox1 = "" Then
    MsgBox "Faites votre choix !", vbExclamation
    ComboBox1.SetFocus
    Exit Sub
    End If
    MsgBox " Êtes-vous sûr de vouloir archiver " & ComboBox1 & " ?", vbCritical + vbYesNoCancel + 256, "Attention"
     If vbYes Then
    Dim lerep
    lerep = ActiveWorkbook.Path
    With Application.FileSearch
            .NewSearch
            .LookIn = lerep
            .Filename = ComboBox1 & ".xls"
            .MatchTextExactly = True
            .Execute
     
    End With
     
        Sheets(ComboBox1.Text).Move After:=Workbooks("archive.xls").Sheets(3)
    For Each obj In ActiveSheet.Shapes
            obj.Delete
        Next
        ActiveWorkbook.Save
        ActiveSheet.name = Valeur
     
        ActiveWorkbook.Close (True)
     End If
     If vbNo Then
     Unload Me
     Else
     ComboBox1.SetFocus
     End If
     
    Exit Sub
    Gerreur:
    If Err.Number = 9 Then
    Beep
                    MsgBox "Attention !" & ComboBox1.Text & " n'existe pas!"
                    ComboBox1.SetFocus
    End If
     
    End Sub
    Mon code ne fonctionne que si le classeur d'archivage est ouvert.
    le chemin d'accès est au classeur d'archivage est : C:\Documents and Settings\kedas\Bureau\Archive.


    S'il vous plait quelqu'un aurait une astuce pour mieux adapter ce code ?

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Kedas,

    Regardez ici si vous trouvez ce qui vous convient :

    http://silkyroad.developpez.com/VBA/ClasseursFermes/

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Salut jean jacques

    J'ai beau essayé de nombreuses combinaisons. Toujours
    j'ai même adapté ce code propose par SilkyRoad mais le code fonctionne seulement si le classeur destination est ouvert.

    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
    Private Sub essai_OK_Click()
        Dim Cn As ADODB.Connection
        Dim oCat As ADOX.Catalog
        Dim Fichier As String
        Dim Feuille As ADOX.Table
     
        Fichier = "C:\Documents and Settings\Mr TAMO\Bureau\essaie\new.xls"
     
        Set Cn = New ADODB.Connection
        Set oCat = New ADOX.Catalog
     
        Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
     
        Set oCat.ActiveConnection = Cn
     
        On Error Resume Next
         If ComboBox1 = "" Then
    MsgBox "Saisissez un article !", vbExclamation
    ComboBox1.SetFocus
     
    End If
    MsgBox " Êtes-vous sûr de vouloir supprimer l'article " & ComboBox1 & " ?", vbCritical + vbYesNoCancel + 256, "Attention"
     If vbYes Then
     
        Sheets(ComboBox1.Text).Copy After:=Workbooks("new.xls").Sheets(2)
     
     End If
     If vbNo Then
     Unload Me
     Else
     ComboBox1.SetFocus
     End If
        On Error GoTo 0
     
     
        Set Feuille = Nothing
        Set oCat = Nothing
        Cn.Close
        Set Cn = Nothing
    End Sub
    Ou est ce que je fais faux bond alors ?

    Merci de votre aide

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    déplacer une feuille de mon classeur vers un autre qui est fermé.
    Déplacer une feuille dans un classeur fermé, pas à ma connaissance, mais écrire dans une feuille d'un classeur fermé le contenu de la feuille à déplacer, ça c'est possible.
    Par contre, en créant une nouvel instance d'Excel et en ouvrant le fichier en question, je ne sais pas. L'intérêt de cette dernière méthode si elle est réalisable ? Je ne vois pas.
    Qu'est-ce qui t'ennuie dans le fait d'ouvrir le fichier ?

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Il n'est pas possible de copier une feuille dans un classeur fermé. Toutes les techniques utilisables amèneront à ouvrir le classeur.

    Par contre, tu peux récupérer, modifier, ajouter ou supprimer des données dans un classeur fermé pour autant que la feuille qui contient les données soit organisée comme une table de données, en respectant donc certains principes de base.

    Tu peux aussi, en sql, créer une table dans un classeur fermé, ce qui créera un nouvel onglet dans le classeur, avec les intitulés des champs en ligne 1. Cela te permet de créer des ongles d'archives organisés comme des tables de données.

    Pour cela, voir les tutos de silkyroad, et lire les fils de discussion ici et .

    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Salut

    Déplacer une feuille dans un classeur fermé, pas à ma connaissance, mais écrire dans une feuille d'un classeur fermé le contenu de la feuille à déplacer, ça c'est possible.
    Qu'est-ce qui t'ennuie dans le fait d'ouvrir le fichier ?
    Il n'est pas possible de copier une feuille dans un classeur fermé. Toutes les techniques utilisables amèneront à ouvrir le classeur.
    Merci pour ces explications.

    En fait puisque l'opération d'archivage ne se fait pas au quotidien, je ne voyais pas l'importance d'ouvrir le classeur chaque fois que je travaille. Bon là maintenant c'est plus clair.
    Néanmoins j'ai essayé juste pour l'opération d'ouvrir le classeur d'archive et de le fermé une fois l'opération terminé, mais là je coince encore : "L'indice n'appartient pas a la sélection".
    par contre si dans ce classeur d'archivage je crée une feuille ayant le même nom que celui à copier, tout se passe bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks.Open "C:\Documents and Settings\Mr TAMO\Bureau\essaie\essaie.xls"
        Sheets(ComboBox1.Text).Copy After:=Workbooks("essaie.xls").Sheets(3)
        Workbooks("essaie.xls").Close (True)

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Le plus simple ne serait-il pas de placer la feuille copiée derrière toutes les autres?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets(ComboBox1.Text).Copy After:=Workbooks("essaie.xls").Sheets(sheets.count)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par kedas
    Néanmoins j'ai essayé juste pour l'opération d'ouvrir le classeur d'archive et de le fermé une fois l'opération terminé, mais là je coince encore : "L'indice n'appartient pas a la sélection".
    par contre si dans ce classeur d'archivage je crée une feuille ayant le même nom que celui à copier, tout se passe bien.
    Tu peux répéter ?
    Le code que tu nous mets est-il celui qui buggue ?
    D'après ce que je peux comprendre, ton problème semblerait venir du fait que tu ouvres un fichier Essai.xls, qui devient le classeur actif. Si tu cherches à copier la feuille depuis le classeur contenant ta macro, alors précise l'origine de la feuille.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks.Open "C:\Documents and Settings\Mr TAMO\Bureau\essaie\essaie.xls"
        Thisworkbook.Sheets(ComboBox1.Text).Copy After:=Workbooks("essaie.xls").Sheets(3)
        Workbooks("essaie.xls").Close (True)
    A la place de ThisWorkbook, tu peux mettre le nom du classeur concerné -> Workbooks("NomClasseur.xls")
    A+

  9. #9
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Salut

    Merci à Pierre et OusK

    Voilà enfin mon code pour " Déplacer" une feuille vers un classeur "fermé" :

    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
    Private Sub Archive_OK_Click()
    On Error GoTo Gerreur
    Début:
    If ComboBox1 = "" Then
    MsgBox "Saisissez un article !", vbExclamation
    ComboBox1.SetFocus
    Exit Sub
    End If
    MsgBox " Êtes-vous sûr de vouloir supprimer l'article " & ComboBox1 & " ?", vbCritical + vbYesNo+ 256, "Attention"
     If vbYes Then
    Application.ScreenUpdating = False
    Workbooks.Open "C:\Documents and Settings\Mr TAMO\Bureau\essaie\essaie.xls"
    Workbooks("MotDePasse.xls").Sheets(ComboBox1.Text).Copy After:=Workbooks("essaie.xls").Sheets(Sheets.Count)
    Workbooks("essaie.xls").Close (True)
    Application.DisplayAlerts = False
    Workbooks("MotDePasse.xls").Sheets(ComboBox1.Text).Delete
    Application.DisplayAlerts = True
     End If
     If vbNo Then
     Unload Me
     Else
     ComboBox1.SetFocus
     End If
    Exit Sub
    Gerreur:
    If Err.Number = 9 Then
    Beep
                    MsgBox "L'article " & ComboBox1.Text & " n'existe pas!"
                    Workbooks("essaie.xls").Close
                    ComboBox1.SetFocus
    End If
     
    End Sub
    Pour le moment tout va bien.
    Pour faire un peu mieux j'ai voulu associer au code un PROGRESSBAR pendant l'exécution du code. Seulement mes recherches sur les fameux progressbars ne m'ont pas permis d'associer mon code.

    Quelle astuce pourrais je utiliser maintenant ?

    Merci encore a tous

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

Discussions similaires

  1. Extraire une feuille d'un classeur fermé vers un classeur ouvert
    Par Kutoh dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/08/2013, 11h23
  2. Ajouter une feuille dans un classeur fermé
    Par SilkyRoad dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/12/2011, 15h38
  3. aller sur une feuille d'un classeur fermé par formule
    Par ericdev67 dans le forum Excel
    Réponses: 4
    Dernier message: 17/01/2011, 19h40
  4. Obtenir le nom d'une feuille d'un classeur fermé
    Par maurice_rismo dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 19/08/2009, 15h51
  5. [VBA] Transférer une feuille dans un classeur fermé
    Par Dephi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/07/2007, 12h11

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