Vba excel active workbooks

Résolu
aurelie76 Messages postés 88 Statut Membre -  
aurelie76 Messages postés 88 Statut Membre -
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. Utilisateur anonyme
     
    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. aurelie76 Messages postés 88 Statut Membre 3
       
      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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  3. dandypunk Messages postés 838 Statut Membre 83
     
    Esssaye de mettre le chemin complet.
    E.g. C:\DossierDeTravail\Classeur1.Xls)
    Qui plus est, avant d'effacer ton fichier, ferme le.
    0
  4. aurelie76 Messages postés 88 Statut Membre 3
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dandypunk Messages postés 838 Statut Membre 83
     
    Salut aurélie, essaye de remplacer Name par Path
    0
  7. aurelie76 Messages postés 88 Statut Membre 3
     
    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
  8. aurelie76 Messages postés 88 Statut Membre 3
     
    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. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      faut mettre des guillemets
      Workbooks("classeur1.xls").Close >> s'il à déjà été sauvé, sinon
      Workbooks("classeur1").Close
      0