Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
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 23/01/2007, 14h02   #1
Membre à l'essai
 
Inscription : avril 2003
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 62
Points : 24
Points : 24
Par défaut Utilisation de Redim preserve

Bonjour,
j'essai d'utiliser "redim preserve" pour redimenssionner un tableau sous Excel dans une boucle,
ca marche à la première itération,
ensuite j'ai le message d'erreur : "L'indice n'apparitient pas à la sélection"
Voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Dim myarray() As String
Ecran.ColumnCount = 2
 
For i = 0 To 50
    If Not IsNull(Sheets("Données_paramétrage").Range("A" & i + 2)) And Sheets("Données_paramétrage").Range("I" & i + 2) = Me.IGE And Len(Sheets("Données_paramétrage").Range("A" & i + 2)) > 0 Then
    'Ecran.AddItem (Sheets("Données_paramétrage").Range("K" & i))
 
     'ReDim Preserve myarray(2)
 
    ReDim Preserve myarray(i, 0 To 2)
 
        myarray(i, 0) = Sheets("Données_paramétrage").Range("K" & i + 2)
        myarray(i, 1) = Sheets("Données_paramétrage").Range("J" & i + 2)
 
 
        Debug.Print Sheets("Données_paramétrage").Range("K" & i + 2)
 
    End If
Next
 
Ecran.List() = myarray
Quelqu'un aurait une idée ?
Merci d'avance
nbelg27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 14h14   #2
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 676
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 676
Points : 7 633
Points : 7 633
On ne peut Redim que la dernière dimension.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 14h21   #3
Membre à l'essai
 
Inscription : avril 2003
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 62
Points : 24
Points : 24
Justement, c'est ce que j'essai de faire,
mais j'y arrive pas
Comment obtenir la dernière dimenssion du tableau ?
nbelg27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 14h23   #4
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 676
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 676
Points : 7 633
Points : 7 633
Là, tu essayes de changer la première dimension.

Change l'orientation de ton tableau et mets la dimension à changer en 2e position.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 14h28   #5
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 676
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 676
Points : 7 633
Points : 7 633
Exemple:
Code :
1
2
3
4
5
6
  Dim myarray() As String
  Dim i
  ReDim myarray(2, 0)
  For i = 0 To 5
    ReDim Preserve myarray(2, i) ' <== le i est en dernière position
  Next i
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 14h50   #6
Membre à l'essai
 
Inscription : avril 2003
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 62
Points : 24
Points : 24
Merci, ca marche
mais j'ai encore un petit souci
en fait, la liste "Ecran" contient deux colonnes :

myarray(i, 0) => Correpond a la colonne 1
myarray(i, 1) => Correpond a la colonne 2

j'utilise "Ecran.List() = myarray" pour affecter le résulat de la boucle à la liste "Ecran"
Malheureusement, ca ne marche pas

la liste "Ecran" affiche une seule colonne avec les données des deux première colonnes dans la même colonne
ex:

myarray(1, 0) =1
myarray(2, 0) =2
myarray(1, 1)=a
myarray(2, 1)=b
le résultat que j'obtiens dans la liste
1
a
nbelg27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2007, 17h55   #7
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

si j'ai bien compris, tu peux tester


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim myArray(2, 3) As String
 
ListBox1.ColumnCount = 2
 
myArray(0, 0) = "A1"
myArray(1, 0) = "B1"
myArray(0, 1) = "A2"
myArray(1, 1) = "B2"
myArray(0, 2) = "A3"
myArray(1, 2) = "B3"
myArray(0, 3) = "A4"
myArray(1, 3) = "B4"
 
 
ListBox1.List() = Application.WorksheetFunction.Transpose(myArray)


michel
SilkyRoad 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 00h31.


 
 
 
 
Partenaires

Hébergement Web