Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/11/2011, 17h53   #1
Invité régulier
 
Inscription : février 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 16
Points : 7
Points : 7
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 :
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
goingoin6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 18h01   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
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 :
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
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/11/2011, 10h04   #3
Invité régulier
 
Inscription : février 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 16
Points : 7
Points : 7
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...
goingoin6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 10h29   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
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 :
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
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 10h45   #5
Invité régulier
 
Inscription : février 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 16
Points : 7
Points : 7
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.
goingoin6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 11h11   #6
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
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 :
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
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 13h36   #7
Invité régulier
 
Inscription : février 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 16
Points : 7
Points : 7
Ca fonctionne

Pour etre sure d'avoir compris, le probleme venait du fait que j'avais des feuilles graphiques? donc je ne peux pas mettre worksheets ?

merci beaucoup!
goingoin6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 14h22   #8
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Sheets désigne toutes le feuilles
Worksheets désigne les feuilles de calcule sans les feuilles graphiques.

Le code précédent avec la fonction Existe permet de palier à l'éventualité qu'une feuille n'existe pas dans le classeur telle que nommée par la concaténation de tes 2 cellules de la feuille Administration. (qui sait).
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h38.


 
 
 
 
Partenaires

Hébergement Web