Vba excel active workbooks

Résolu
Bonjour,

j'ai un soucis avec mon code, j'ai une erreur d'excécution 9 lorsque je veux delete un classeur appellé par une variable

voici le code :

....
Fichier = Application.GetOpenFilename
Workbooks.Open Fichier 'ouverture arborescence
classeur1 = ActiveWorkbook.Name
'MsgBox classeur1
Workbooks("classeur1.xls").Delete
....

à l'instruction Workbooks("classeur1.xls").Delete, j'ai l'indice n'appartient pas à la sélection ?
quelqu'un peut-il m'aider, merci,

aurelie
Configuration: Windows XP
Internet Explorer 7.0

7 réponses

  1. Bonjour,

    essayer comme ceci :

    Option Explicit
    
    Private Sub insérer_Click()
    
        Dim Sh As Worksheet
        Dim classeur2 As String, classeur1 As String
        Dim nom1 As String, wb As Workbook
    
        MsgBox "confirmer insérer fichier : ?", vbYesNo
    
        ' n.b. Éviter les accents de la langue française
        ' dans les instruction même si celle-ci sont des
        ' noms de fonctions ou routine que vous avez créé.
        insérer.Enabled = False
    
        Fichier = Application.GetOpenFilename
        Workbooks.Open Fichier 'ouverture arborescence
        classeur1 = ActiveWorkbook.FullName
        'MsgBox classeur1
    
        For Each Sh In Workbooks(classeur1).Worksheets
            Workbooks(classeur1).Sheets(Sh.Name).Copy _
                After:=Workbooks("Fiche_d'entretien_OSP_2008ter.xls").Sheets(5)
        Next Sh
        ' MsgBox classeur1
    
        Workbooks(classeur1).Activate
        Workbooks(classeur1).Close
        Kill classeur1
    
    End Sub
    '
    

    Lupin
    7
    1. bonsoir Lupin, Lermitte222,

      Merci pour tous vos conseils super précieux, sans vous j'y serais encore, félicitations pour vos connaissances et expériences dans ce domaine, on a besoin de personnes comme vous sur ce site.
      Consciente de vous avoir accaparés, je vous réitère encore tous mes remerciements.

      bisous à tous, aurélie.
      0
  2. Contributeur
    Bonjour,
    Pas clair du tout...
    Fichier = Application.GetOpenFilename
    Workbooks.Open Fichier 'ouverture arborescence

    'Ici je suppose que tu veux renommer le classeur 1, mais c'est pas possible d'avoir 2 classeurs du même nom dans la même instance d'excel !!
    'Donc, plutôt que de renommer classeur1; le supprimé
    'classeur1 = ActiveWorkbook.Name
    'Delete n'est pas une action valable, si tu veux fermer...
    workbooks("Classeur1").Close
    pour avoir le 'path' d'un classeur il faut qu'il ai déjà été sauver sur le DD idem pour FullName
    chemin = ActiveWorkbook.FullName
    A+
    4
    1. Esssaye de mettre le chemin complet.
      E.g. C:\DossierDeTravail\Classeur1.Xls)
      Qui plus est, avant d'effacer ton fichier, ferme le.
      0
      1. bonjour dandypunk,

        le pb c'est que je ne connais pas l'instruction ou la ligne de commande pour récupérer le chemin d'accès, je sais l'afficher dans un msgbox mais comment la récupérer pour l'insérer dans le code ? si tu connais cette instruction merci.

        aurelie76
        0
        1. Salut aurélie, essaye de remplacer Name par Path
          0
          1. Dandypunk,

            j'ai tourné le path dans tous les sens mais je n'obtiens pas le résultat souhaité. Je continue à chercher, merci pour tes conseils et aide,

            aurelie
            0
            1. Bonjur Lermitte,

              Merci de me venir en aide une fois de plus, en fait, de mon classeur principal j'ouvre l'arborescence de mon C:\ et je choisis n'importe quel document xls de C et j'insère les feuilles de ce document dans mon classeur principal. Les deux classeurs sont donc ouverts : le principale et le classeur choisi sous C:\. Une fois laes feuilles insérées dans le doc principal, je veux fermer le classeur "choisi"

              Private Sub insérer_Click()

              Dim Sh As Worksheet
              Dim classeur2 As String
              Dim classeur1 As String
              Dim nom1 As String
              Dim wb As Workbook

              MsgBox "confirmer insérer fichier : ?", vbYesNo

              insérer.Enabled = False

              Fichier = Application.GetOpenFilename
              Workbooks.Open Fichier 'ouverture arborescence
              classeur1 = ActiveWorkbook.Name
              'MsgBox classeur1

              For Each Sh In Workbooks(classeur1).Worksheets
              Workbooks(classeur1).Sheets(Sh.Name).Copy After:=Workbooks("Fiche_d'entretien_OSP_2008ter.xls").Sheets(5)
              Next Sh
              ' MsgBox classeur1

              Workbooks("classeur1.xls").Activate

              Workbooks(classeur1).Close

              et j'ai une erreur excécution 9 (l'indice n'appartient pas à la sélection.

              c'est plus compliqué que je croyais BVA, merci pour tes conseils sur les instructions.

              aurélie.
              0
              1. Contributeur
                faut mettre des guillemets
                Workbooks("classeur1.xls").Close >> s'il à déjà été sauvé, sinon
                Workbooks("classeur1").Close
                0