Problème de remplissage d'un tableau deux D

Résolu
reno421 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -  
reno421 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voici mon problème. J'essaie de remplir un tableau deux D à partir des cellules d'une feuille excel.
Il me semble que mon code est correcte pour tant j'obtient l'erreur 1004.
L'un d'entre vous peu-t-il m'aider SVP.
D'avance merci.

Sub utilisation_tableau_3D()

    Dim Tab_zones_contacts() As Variant
    Dim i, j As Integer
    Dim fin_lg, fin_col As Integer
    
    Sheets("Zones").Select
    Range("A1").Select
    
    fin_lg = Range("A" & Rows.Count).End(xlUp).Row - 2  ' -2  car tableau démarre de 0 et on décompte la ligne titre
    fin_col = Cells(1, Cells.Columns.Count).End(xlToLeft).Column - 1  ' -1  car tableau démarre de 0
    
    ReDim Tab_zone(fin_lg, fin_col)
    
    For i = 0 To fin_lg
        For j = 0 To fin_col
                               
            Tab_zones_contacts(i, 0) = Sheets("Zones").Range(i + 2, j + 2).Value
            
          
        Next
    
    Next

End Sub
A voir également:

3 réponses

reno421 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
au fait, le 0 est en réalité un J
0
Paf
 
Bonjour

Plusieurs soucis:
- ReDim Tab_zone(fin_lg, fin_col), le tableau ne s'appelle pas Tab_zone mais Tab_zones_contacts

-Sheets("Zones").Range(i + 2, j + 2).Value la syntaxe du range n'est pas la bonne, utiliser Sheets("Zones").Cells(i + 2, j + 2).Value

En plus simple on pourrait avoir
Sub utilisation_tableau_3D() 
Dim Tab_zones_contacts
Dim fin_lg, fin_col As Integer
With Sheets("Zones")
fin_lg = .Range("A" & .Rows.Count).End(xlUp).Row
fin_col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
Tab_zones_contacts = Range(.Cells(2, 1), .Cells(fin_lg, fin_col))
End With
End Sub


à noter que dans ces conditions les indices de tableau commencent à 1

A+
0
reno421 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Waouw, la, tu m'en bouches un coin, c'est hyper rapide comme solution. Tu es balaises.
Peux-tu, juste, SPV, m'expliquer car je ne conprends pas les . que tu mets devant Cells et Range.
D'avance merci.

Au fait, désolé de t'avoir répondu si tard
0
paf
 
Re bonjour

With Sheets("Zones")
fin_lg = .Range("A" & .Rows.Count).End(xlUp).Row
fin_col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
Tab_zones_contacts = Range(.Cells(2, 1), .Cells(fin_lg, fin_col))
End With


C'est comme si on avait écrit


 fin_lg = Sheets("Zones").Range("A" & .Rows.Count).End(xlUp).Row
fin_col = Sheets("Zones").Cells(1, Sheets("Zones").Cells.Columns.Count).End(xlToLeft).Column
Tab_zones_contacts = Range(Sheets("Zones").Cells(2, 1),Sheets("Zones").Cells(fin_lg, fin_col))


en utilisant With Sheets("Zones") (sans oublier le End With), on n'est pas obligé de répéter ce terme à chaque fois (mais il faut conserver le ".".
ça allège la lisibilité et l'écriture du code.

A+
0
reno421 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Super, merci pour l'explication. Par contre, d'après ce que je vois, pour que ça fonctionne, les tableaux doivent être de type variant, ce qui prend plus de place mais pas grave dans mon cas
0