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 :

erreur : selection de plusieurs feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut erreur : selection de plusieurs feuilles
    Bonjour,
    je souhaite selectionner plusieurs feuilles en meme temps pr lancer une impression.
    Voici mon code. L'erreur dit 'L'indice n'appartient pas a la selection' pour la ligne ThisWorkbook.Worksheets(liste).Select.
    J'ai cherché sur internet, mais je ne vois pas pourquoi ca ne fonctionne pas , j'espere que quelqu'un pourra m'aider!
    merci d'avance.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     j = 1
    For i = 276 To 286       
                 ReDim Preserve liste(j)
                liste(j) = Sheets("Administration").Cells(69, 11).Value + Sheets("Administration").Cells(i, 1).Value
     
    Next
     
    ThisWorkbook.Worksheets(liste).Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu n'as pas incrémenté le j à l'intérieur de la boucle.
    Puis est ce que tu es sur du nom (ou de l'indice des feuilles) donnée dans ta ligne 5.

    Exemple pour test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub aaa()
    Dim i As Integer, j As Integer
    Dim Liste() As String
     
    With ThisWorkbook
        For i = 1 To 5
            j = j + 1
            ReDim Preserve Liste(1 To j)
            Liste(j) = .Worksheets(i).Name
        Next i
        .Worksheets(Liste).PrintOut Copies:=1, Collate:=True
    End With
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    Bonjour,

    Merci pour ta réponse, en effet j'ai pas incrémenté ma boucle j
    le nom de mes feuilles est correct, quand je test avec un msgbox pour afficher mon tableau, ça fonctionne bien, il est bien rempli.
    Cependant le .Worksheets(Liste).PrintOut Copies:=1, Collate:=Truedonne tjr la même erreur :"l'indice n'appartient pas à la sélection"

    je ne comprend toujours pas pourquoi...

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Fais le test avec cette macro et regarde ce que tu as dans la fenêtre Exécution de ton éditeur vba (Ctrl G si elle n'est pas visible)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Bbb()
    Dim i As Integer, j As Integer
    Dim Liste() As String
     
    With ThisWorkbook
        For i = 276 To 286
            j = j + 1
            ReDim Preserve Liste(1 To j)
            Liste(j) = .Worksheets("Administration").Cells(69, 11).Value + .Worksheets("Administration").Cells(i, 1).Value
            Debug.Print "|" & Liste(j) & "|"
        Next i
    End With
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    Voici le résultat de la fenetre d'execution:

    |SA_Hyp (2)|
    |Graph_SA|
    |SA_SynCou|
    |GraphSAM_SA|
    |SA_Patient|
    |SA_R2|
    |SA_MIB|
    |SA_MIB_N2|
    |SA_R3|
    |SA_MIB_N3|
    |SA_MIB%|

    c'est bien le nom de mes feuilles.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pour être sûr de ce que tu veux imprimer, on teste l'existence des feuilles.
    En plus, il fallait mettre Sheets à la place de Worksheets car tu as des feuilles graphiques.
    Un code complet
    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
    Sub Bbb()
    Dim i As Integer, j As Integer
    Dim Liste() As String, Prem As String, Dern As String
     
     
    With ThisWorkbook
        Prem = .Worksheets("Administration").Cells(69, 11).Value
        For i = 276 To 286
            Dern = .Worksheets("Administration").Cells(i, 1).Value
            If Existe(Prem & Dern) Then
                j = j + 1
                ReDim Preserve Liste(1 To j)
                Liste(j) = Prem & Dern
            End If
        Next i
        If j > 0 Then .Sheets(Liste).PrintOut Copies:=1, Collate:=True
    End With
    End Sub
     
    Private Function Existe(ByVal Str As String)
    Dim Sh As Object
     
    If Str <> "" Then
        For Each Sh In ThisWorkbook.Sheets
            If Sh.Name = Str Then
                Existe = True
                Exit For
            End If
        Next Sh
    End If
    End Function

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

Discussions similaires

  1. [XL-2007] Erreur pour copier plusieurs feuilles dans un autre classeur
    Par manu900 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 08/02/2012, 09h31
  2. Probleme de selection de plusieurs feuilles
    Par nouha_79 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/07/2007, 03h13
  3. Réponses: 2
    Dernier message: 21/06/2007, 15h26
  4. Selection de plusieur feuille en vu de faire un .move
    Par cyraile dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2007, 17h24
  5. Selection de cellule dans plusieurs feuilles
    Par vuong1 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/04/2007, 12h48

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