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 :

L'indice n'appartient pas à la selection (Close)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 49
    Points : 31
    Points
    31
    Par défaut L'indice n'appartient pas à la selection (Close)
    Bonjour,

    J'ai un petit problème avec un module sur Excel.

    Je veux ouvrir un classeur, copier un champ sur mon classeur principal puis refermer le classeur annexe.

    Tout se passe bien sauf la fermeture.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim fic1 as String
    fic1 = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Donnez le nom du 1er Fichier")
     
    Application.Workbooks.Open (fic1)
    ActiveSheet.Range(plage1).Select
    Selection.Copy
    Application.ThisWorkbook.Activate
    Range("D105:E105").Offset(0, n).PasteSpecial
     
    Workbooks(fic1).Close
    '''Erreur d'execution 9 (voir titre du topic)

    Les information sur internet quant à ce problème sont très varièes mais aucune ne semble mener exactement à mon probleme.

    Merci de bien vouloir m'aider.

  2. #2
    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 546
    Points
    15 546
    Par défaut
    Il nous manque des bout mais bon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Application.Workbooks.Open (fic1)
    DoEvents 'laisse à fic1 le temps de s'ouvrir
    ActiveSheet.Range(plage1).Copy
    ThisWorkbook.Worksheets("NomDeLaFeuille").Range("D105:E105").Offset(0, n).PasteSpecial '****** là, il manque un bout *****
    DoEvents 'laisse le temps à la copie de se faire
    Activeworkbook.Close false 'ferme le fichier fic1 sans l'enregistrer
    DoEvents laisse le temps au fichier de se fermer avant de passer à la suite du code si suite il y a

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Cela ne fonctionne pas, voici le code en entier.

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Private Sub CommandButton1_Click()
    Dim fic1 As String, fic2 As String, fic3 As String, fic4 As String, fic5 As String
    fic1 = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Donnez le nom du 1er Fichier")
    fic2 = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Donnez le nom du 2ème Fichier")
    fic3 = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Donnez le nom du 3ème Fichier")
    fic4 = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Donnez le nom du 4ème Fichier")
    fic5 = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Donnez le nom du 5ème Fichier")
    Dim plage1 As String
    Dim plageso1 As String
    Dim n As Integer
    Dim ok As Boolean
    ok = False
    n = 0
    Do Until ok = True
        If ActiveSheet.Range("D6:E6").Offset(0, n) <> "" Then
            n = n + 2
        Else
            ok = True
        End If
    Loop
     
    ''''''''''''''''''''''''''''''''''''''''''''''''
    plage1 = "F4"
    ''''''''''''''''''''''''''''''''''''''''''''''''
     
    Application.Workbooks.Open (fic1)
    ActiveSheet.Range(plage1).Select
    Selection.Copy
    ActiveWorkbook.Close False
    Application.ThisWorkbook.Activate
    Range("D101:E101").Offset(0, n).PasteSpecial
     
    Application.Workbooks.Open (fic2)
    ActiveSheet.Range(plage1).Select
    Selection.Copy
    Application.ThisWorkbook.Activate
    Range("D102:E102").Offset(0, n).PasteSpecial
     
    Application.Workbooks.Open (fic3)
    ActiveSheet.Range(plage1).Select
    Selection.Copy
    Application.ThisWorkbook.Activate
    Range("D103:E103").Offset(0, n).PasteSpecial
     
    Application.Workbooks.Open (fic4)
    ActiveSheet.Range(plage1).Select
    Selection.Copy
    Application.ThisWorkbook.Activate
    Range("D104:E104").Offset(0, n).PasteSpecial
     
    Application.Workbooks.Open (fic5)
    ActiveSheet.Range(plage1).Select
    Selection.Copy
    Application.ThisWorkbook.Activate
    Range("D105:E105").Offset(0, n).PasteSpecial
     
    ''en erreur
    Workbooks(fic1).Close
    Workbooks(fic2).Close
    Workbooks(fic3).Close
    Workbooks(fic4).Close
    Workbooks(fic5).Close
    ''
     
     
    End Sub

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour,

    Essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(dir(fic1)).Close
    Cordialement,

    Tirex28/

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Ne fonctionne pas , désolé

  6. #6
    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 546
    Points
    15 546
    Par défaut
    As-tu testé mon code ?

    Et puis "ça ne fonctionne pas !" n'est pas une réponse : Message d'erreur ? Est-ce le même ? Quel est-il ? Sur quelle ligne ?
    Aide-nous à t'aider !
    A+

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    SI je dit "cela ne fonctionne pas" , c'est qu'il n'y a aucune amélioration quelque soit la solution. Sinon j'aurais dit "c'est presque ça mais j'ai une autre erreur".

    L'erreur est toujours la même indiquée lors de la création du topic.

    Le close pose problème.

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour tlm,

    Le close pose problème parce que la variable fic1 ne contient pas uniquement le nom du classeur mais son nom + son chemin complet

    Un autre bug pourrait également survenir si l'utilisateur clic sur "annuler" dans la boîte de dialogue d'ouverture de fichier.

    A tester
    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
    Private Sub CommandButton1_Click()
    Dim fic(1 To 5) As Variant
    Dim wbk As Workbook
    Dim plage1 As String
    Dim plageso1 As String
    Dim n As Integer
    Dim ok As Boolean
    Dim i As Integer
     
    ok = False
    n = 0
    Do Until ok = True
        If ActiveSheet.Range("D6:E6").Offset(0, n) <> "" Then
            n = n + 2
        Else
            ok = True
        End If
    Loop
     
    ''''''''''''''''''''''''''''''''''''''''''''''''
    plage1 = "F4"
    ''''''''''''''''''''''''''''''''''''''''''''''''
     
    For i = 1 To 5
        fic(i) = Application.GetOpenFilename("Excel Files (*.xls), *.xls", , "Donnez le nom du Fichier " & i)
    Next
     
    Application.ScreenUpdating = False
    For i = 1 To 5
        If fic(i) <> False Then
            Set wbk = Application.Workbooks.Open(Filename:=fic(i))
            ActiveSheet.Range(plage1).Copy
            Application.ThisWorkbook.Activate
            Range("D101:E101").Offset(i - 1, n).PasteSpecial
            wbk.Close
        End If
    Next
    Application.ScreenUpdating = True
     
    End Sub
    EDIT : Modification de la variable wbk, une seule suffit

  9. #9
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 49
    Points : 31
    Points
    31
    Par défaut
    Merci Beaucoup, le problème est réglé.

    Merci aussi pour le ptit coup d'optimisation

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

Discussions similaires

  1. messaged'erreur: l'indice n'appartient pas à la selection
    Par erlerwade dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/04/2012, 19h26
  2. l'indice n'appartient pas à la selection erreur 9
    Par sof78 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/08/2011, 11h19
  3. [XL-2003] Problème VBA générant du code VBA "l'indice n'appartient pas à la selection"
    Par Access Newbie dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 21/06/2011, 09h46
  4. [XL-2003] Erreur '0' : l'indice n'appartient pas à la selection
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2010, 15h51
  5. Erreur d'execution '9'. L'indice n'appartient pas à la selection
    Par goby45 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/02/2010, 15h09

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