Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1232 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA-EXCEL 2003] Array exclure 2 onglets

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA-EXCEL 2003] Array exclure 2 onglets

n°1245435
sakuraba
Posté le 14-11-2005 à 17:22:30  profilanswer
 

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  

mood
Publicité
Posté le 14-11-2005 à 17:22:30  profilanswer
 

n°1245462
watashi
La démotivation : JAMAIS !
Posté le 14-11-2005 à 17:54:42  profilanswer
 

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 ;-)
n°1245776
sakuraba
Posté le 15-11-2005 à 09:06:53  profilanswer
 

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

n°1245779
sakuraba
Posté le 15-11-2005 à 09:09:28  profilanswer
 

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

n°1245781
Vobiscum
Vénérez moi !
Posté le 15-11-2005 à 09:13:51  profilanswer
 

Tu as combien de feuilles quand ca se produit ?


---------------
Ce qui est affirmé sans preuve peut être nié sans preuve.
n°1245797
sakuraba
Posté le 15-11-2005 à 09:37:42  profilanswer
 

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

Message cité 1 fois
Message édité par sakuraba le 15-11-2005 à 09:37:59
n°1245815
watashi
La démotivation : JAMAIS !
Posté le 15-11-2005 à 10:04:12  profilanswer
 

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 ;-)
n°1245843
sakuraba
Posté le 15-11-2005 à 10:46:41  profilanswer
 

toujours erreur 9  
 

n°1245861
watashi
La démotivation : JAMAIS !
Posté le 15-11-2005 à 11:13:27  profilanswer
 

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 ;-)
n°1245869
watashi
La démotivation : JAMAIS !
Posté le 15-11-2005 à 11:30:30  profilanswer
 

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 ;-)
mood
Publicité
Posté le 15-11-2005 à 11:30:30  profilanswer
 

n°1245887
sakuraba
Posté le 15-11-2005 à 11:52:13  profilanswer
 

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

n°1245909
watashi
La démotivation : JAMAIS !
Posté le 15-11-2005 à 12:31:26  profilanswer
 

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 ;-)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA-EXCEL 2003] Array exclure 2 onglets

 

Sujets relatifs
VBA Access - Repositionner le curseur sur l'enregistrement en modif[VBA-EXCEL 2003] Dupliquer une feuille complete [DONE]
urgent : Pb de macro VBA[VS 2003] Comment afficher les erreurs de codage en live (cf Eclipse)
[Excel] Simulation de lois normalesCréation d'une fonction sous Excel
System,ArrayProblèmes pour envoyer fichiers excel avec javaMail
[MACRO excel / resolu ] creation d hyperliens amenant a des feuilletscompteur sur plusieurs fichier et plusieurs onglets
Plus de sujets relatifs à : [VBA-EXCEL 2003] Array exclure 2 onglets


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR