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 07/11/2011, 14h06   #1
Invité régulier
 
Inscription : janvier 2010
Messages : 42
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 42
Points : 5
Points : 5
Par défaut Remplir un tableau de variables

Bonjour

je souhaite alimenter un tableau de variables à partir de données figurants sur un feuille excel. je souhaite faire figurer dans le tableau uniquement les données filtrées.

voici mon code (il ne fonctionne pas):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub tableau()
 
Dim tboall() As Variant
 
l = 0
For I = 2 To 20
l = l + 1
K = 0
For J = 2 To 6
  If Cells(I, J).EntireRow.Hidden = False Then
    If J <> 3 Then
        K = K + 1
        tboall(l, K) = Cells(I, J)
    End If
  End If
ReDim Preserve tboall(I)
Next J
Next I
 
end sub
gaston64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 09h51   #2
Membre éclairé
 
Inscription : mai 2006
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 335
Points : 326
Points : 326
Bonjour à tous,
Bonjour Gaston64

Voici quelques remarques sur ton code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub tableau_gaston64()  
 
Dim tboall() As Variant
Dim i As Integer, J As Integer, K As Integer, l As Integer
 
l = 0
For i = 2 To 20
l = l + 1
K = 0
For J = 2 To 6
  If Cells(i, J).EntireRow.Hidden = False Then  'si la ligne "i" est cachée inutile de continuer => sortir du "For J"
    If J <> 3 Then  'cacher la colonne 3 => "C" avant de lancer la boucle "I" et supprimer ce "If"
        K = K + 1   'ce "K" ne peut pas être supérieur à 3 donc il faut le réinitialiser quand "J" = 7
        tboall(l, K) = Cells(i, J)  'tableau à 2 dim ? 'il faut redim le tableau avant cette ligne
    End If
  End If
ReDim Preserve tboall(i)    'tableau à 1 dim ?
Next J
Next i
 
End Sub
Si j'ai bien compris, tu veux que, dans ton tableau, il y est les lignes visibles des colonnes "B", "D", "E" et "F".
Je te propose ceci :
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
Option Explicit
Sub tableau()
Dim Plage As Range, nblignes As Integer, Cel As Range, Tablo(), nb As Integer, i As Integer
 
' on masque la colonne "C"
   Columns("C:C").EntireColumn.Hidden = True
   With Worksheets("Feuil1")    ' modifier le nom de la feuille
      Set Plage = .Range("B1", .Range("F65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
   End With
   nblignes = Plage.Cells.Count ' on compte le nb de lignes de la plage
   ReDim Tablo(nblignes, 3)     ' on redim le tableau
   For Each Cel In Plage
        If i = 4 Then i = 0: nb = nb + 1
        Tablo(nb, i) = Cel
        i = i + 1
   Next Cel
 
' on affiche la colonne "C"
    Columns("C:C").EntireColumn.Hidden = False
 
' pour vérification, 
' attention il faut que la dernière ligne de la feuille ne soit pas cachée,
' si non à la place de "+3" mettre par exemple "+10", "+20", ou encore +
Range("A" & Range("a65536").End(xlUp).Row + 3 & ":D" & nblignes) = Tablo
 
End Sub
Tu nous dis
A+
Eric
edelweisseric est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h05.


 
 
 
 
Partenaires

Hébergement Web