[resolu] Initialisation d'un tableau

Initialisation d'un tableau [resolu] - VB/VBA/VBS - Programmation

Marsh Posté le 10-07-2006 à 22:32:37    

Salut c'est encore moi!
 
voila j'ai un fichier qui contient 25 onglets.
J'aimerais, lorsque j'execute une fonction, créer un tableau dont les elements sont les noms des worksheets, exceptés certaines d'entre elles ne me servant pas par la suite.
 
ca pourrait etre du style  
i=0
for each worksheets dans le workbook  
 
tab(i)= worksheets(i)
 
next i
 
je suis un peu limite au niveau de la syntaxe.
 
merci


Message édité par lden le 11-07-2006 à 10:05:57
Reply

Marsh Posté le 10-07-2006 à 22:32:37   

Reply

Marsh Posté le 10-07-2006 à 22:49:38    

j'ai fait ca comme code mais ca pue! surtout a la premiere ligne avec worksheet qui est vide ...
 
For Each Worksheet In Workbook
i = 0
If Worksheets(i).Name <> "REGION NE" And "REGION O" And "REGION SE" And "FRANCE" And _
    "base de donnée dynamique" And "Données" And "Analyse" Then
    onglets_dépôt(i) = Worksheets(i).Name
ElseIf Worksheets(i) = "REGION NE" Or "REGION O" Or "REGION SE" Or "FRANCE" Then
    onglets_région(i) = Worksheets(i).Name
End If

Reply

Marsh Posté le 10-07-2006 à 23:20:16    

moi ce qui me choque le plus, c'est que t'as des accents dans tes variables :o ;)
 
sinon, je ne vois pas où tu incrémentes ton "i", et encore moins où tu redimensionne ton tableau (??)

Reply

Marsh Posté le 11-07-2006 à 07:47:57    

Bonjour,
Worsheets(0) doit déclancher une erreur. Il y a une erreur dans la syntaxe de If And /Or et une erreur de logique dans la boucle. Ceci devrait mieux fonctionner :

Dim i As Integer, j As Integer
Dim onglets_dépôt() As String
Dim onglets_région() As String
 
For Each Feuille In Worksheets
i = 0: j = 0
 
If Feuille.Name <> "REGION NE" And Feuille.Name <> "REGION O" _
    And Feuille.Name <> "REGION SE" And Feuille.Name <> "FRANCE" _
    And Feuille.Name <> "base de donnée dynamique" _
    And Feuille.Name <> "Données" And Feuille.Name <> "Analyse" Then
        ReDim Preserve onglets_dépôt(i)
        onglets_dépôt(i) = Feuille.Name
        i = i + 1
ElseIf Feuille.Name = "REGION NE" Or Feuille.Name = "REGION O" Or Feuille.Name = "REGION SE" Or "FRANCE" Then
         ReDim Preserve onglets_région(j)
        onglets_région(j) = Feuille.Name
        j = j + 1
End If
Next


Cordialement
Epéna

Reply

Marsh Posté le 11-07-2006 à 08:17:32    

bonjour,
une autre possibilité :

Code :
  1. Sub test()
  2. Dim Col As New Collection 'onglets_dépôt
  3. Dim Col2 As New Collection 'onglets_région
  4. For Each o In Worksheets
  5. If o.Name = "REGION NE" Or o.Name = "REGION O" Or _
  6.     o.Name = "REGION SE" Or o.Name = "FRANCE" Then
  7.     Col2.Add o.Name
  8. ElseIf o.Name <> "base de donnée dynamique" And _
  9.     o.Name <> "Analyse" And o.Name <> "Données" Then
  10.     Col.Add o.Name
  11. End If
  12. Next
  13. For i = 1 To Col.Count
  14. MsgBox Col(i)
  15. Next
  16. For i = 1 To Col2.Count
  17. MsgBox Col2(i)
  18. Next
  19. End Sub


A+


Message édité par galopin01 le 11-07-2006 à 09:24:49
Reply

Marsh Posté le 11-07-2006 à 10:05:34    

ok ca marche nickel Epena!
 
merci a vous deux

Reply

Sujets relatifs:

Leave a Replay

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