[VBA-EXCEL 2003] Array exclure 2 onglets

Array exclure 2 onglets [VBA-EXCEL 2003] - VB/VBA/VBS - Programmation

Marsh Posté le 14-11-2005 à 17:22:30    

http://img276.imageshack.us/img276/2849/sanstitre24pr.th.jpg
 
 

Code :
  1. 'Cette procédure affiche le nom des feuilles d'un classeur
  2. Sub Aff_Feuilles()
  3.     Dim i
  4.      'la variable d'array
  5.      Dim ListeFeuil() As Variant
  6.      ReDim Preserve ListeFeuil(Worksheets.Count - 1)   '(-1) car les arrays commencent à 0 et pas 1
  7.      'remplir l'array
  8.      For i = 0 To (Worksheets.Count - 1)
  9.           ListeFeuil(i) = Sheets(i + 1).Name
  10.      Next i
  11.      'affecter l'array sur la listbox
  12.      ListBoxAccRapid.List() = ListeFeuil
  13.      ListBoxSuppr.List() = ListeFeuil
  14. End Sub


 
voici le code qui affiche les noms de chantier par contre je veux que la feuille "total" et "!!!base!!!" soit pas visible  

Reply

Marsh Posté le 14-11-2005 à 17:22:30   

Reply

Marsh Posté le 14-11-2005 à 17:54:42    

Re

sakuraba a écrit :

voici le code qui affiche les noms de chantier par contre je veux que la feuille "total" et "!!!base!!!" soit pas visible

Il suffit de tester les noms des feuilles (si ce n'est ni base ni total) et de diminuer la taille de ton array.
Tu obtiens :

Code :
  1. 'Cette procédure affiche le nom des feuilles d'un classeur
  2. Sub Aff_Feuilles()
  3.     Dim i
  4.      'la variable d'array
  5.      Dim ListeFeuil() As Variant
  6.      ReDim Preserve ListeFeuil(Worksheets.Count - 3)  '(-1) car les arrays commencent à 0 et (+ 2) pour les 2 feuilles exclues
  7.      'remplir l'array
  8.      For i = 0 To (Worksheets.Count - 1) 'toujours -1 car toutes les feuilles sont testées
  9.           if sheets(i+1).name <> "total" and sheets(i+1).name<>"!!!base!!!" then
  10.                    ListeFeuil(i) = Sheets(i + 1).Name
  11.           else
  12.           end if
  13.      Next i
  14.      'affecter l'array sur la listbox
  15.      ListBoxAccRapid.List() = ListeFeuil
  16.      ListBoxSuppr.List() = ListeFeuil
  17. End Sub


 
Bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 15-11-2005 à 09:06:53    

j'ai une erreur 9  
l'indice n'appartient pas à la selection

Reply

Marsh Posté le 15-11-2005 à 09:09:28    

ça vient de cette ligne  
 
ReDim Preserve ListeFeuil(Worksheets.Count - 3)  

Reply

Marsh Posté le 15-11-2005 à 09:13:51    

Tu as combien de feuilles quand ca se produit ?


---------------
Ce qui est affirmé sans preuve peut être nié sans preuve.
Reply

Marsh Posté le 15-11-2005 à 09:37:42    

2 => total et !!!base!!!

Message cité 1 fois
Message édité par sakuraba le 15-11-2005 à 09:37:59
Reply

Marsh Posté le 15-11-2005 à 10:04:12    

sakuraba a écrit :

2 => total et !!!base!!!


Ben comment tu veux faire une liste de nom de feuilles quand tu as que 2 feuilles et que ces 2 feuilles tu les exclues... enfin là c'est toi qui verra ;)
Il n'empçeche que je devais être bien fatiguée hier le code que je t'ai donné bugguais à plusieurs niveaux.
Je te le redonne corrigé avec quelques contrôles en plus :

Code :
  1. Dim i, a
  2.      'compter le nombre délément de la liste
  3.      a = Worksheets.Count - 2
  4.      'la variable d'array
  5.      Dim ListeFeuil() As Variant
  6.      i = 1
  7.      'remplir l'array en fonction du nombre de feuilles
  8.      If a = 0 Then
  9.           MsgBox ("Il n'y a que 2 feuilles dans le classeur" )
  10.           ReDim Preserve ListeFeuil(0)
  11.           ListeFeuil(0) = ""        'ça te fait une liste d'un seule élément vide.
  12.      Else
  13.           ReDim Preserve ListeFeuil(a - 1) '(-1) car les arrays commencent à 0
  14.           'remplir l'array
  15.           a = 0
  16.           For i = 1 To (Worksheets.Count) 'car toutes les feuilles sont testées
  17.                If Sheets(i).Name <> "total" Then
  18.                     If Sheets(i).Name <> "!!!base!!!" Then
  19.                         ListeFeuil(a) = Sheets(i).Name
  20.                         a = a + 1
  21.                     Else
  22.                     End If
  23.                Else
  24.                End If
  25.           Next i
  26.      End If
  27.      'affecter l'array sur la listbox
  28.      ListBoxAccRapid.List() = ListeFeuil
  29.      ListBoxSuppr.List() = ListeFeuil


bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 15-11-2005 à 10:46:41    

toujours erreur 9  
 

Reply

Marsh Posté le 15-11-2005 à 11:13:27    

Sur quelle ligne exactement car sur mon excel 2002 ça passe sans problème, y compris quand il n'y a que les 2 feuilles. (j'ai testé avec 2 à 6 feuilles).
Elle dit quoi ton erreur 9 ?
 
Edit : vu erreur sur tableau . As-tu déjà utilisé la variable listefeuil() pour creer une liste avant de définir cette liste ci dans tes différents codes ? Et  l'ordi l'a t-il en mémoire quand tu eux créer cette nouvelle liste ?


Message édité par watashi le 15-11-2005 à 11:33:43

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 15-11-2005 à 11:30:30    

sakuraba a écrit :

toujours erreur 9


sinon essaye avec ce code il marchera peut etre mieux chez toi :

Code :
  1. Dim Ws As Worksheet, a As Integer
  2.      Dim ListeFeuil() As Variant
  3.      a = 0
  4.      For Each Ws In ActiveWorkbook.Worksheets
  5.           If Ws.Name <> "total" Then
  6.                If Ws.Name <> "!!!base!!!" Then
  7.                     ReDim Preserve ListeFeuil(a)
  8.                     ListeFeuil(a) = Ws.Name
  9.                     a = a + 1
  10.                Else
  11.                End If
  12.           Else
  13.           End If
  14.      Next
  15.      If a = 0 Then
  16.           ReDim Preserve ListeFeuil(0)
  17.           ListeFeuil(0) = "aucune feuille"
  18.      Else
  19.      End If

Bon courage


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 15-11-2005 à 11:30:30   

Reply

Marsh Posté le 15-11-2005 à 11:52:13    

ça affiche la listbox vide :)  
alors que j ai 3 onglets à afficher

Reply

Marsh Posté le 15-11-2005 à 12:31:26    

humm là je capte plus, faudrait que je le vois il doit y avoir un smurtz...
 
Je te pm mon mail si tu veux j'y jettes un oeil.
:)


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed