IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Utilisation de Redim preserve


Sujet :

VBA

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 41
    Points
    41
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    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!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 41
    Points
    41
    Par défaut
    Justement, c'est ce que j'essai de faire,
    mais j'y arrive pas
    Comment obtenir la dernière dimenssion du tableau ?

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    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!

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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!

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 41
    Points
    41
    Par défaut
    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

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    si j'ai bien compris, tu peux tester


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. Utilisation de ReDim(x,y)
    Par philippef dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 29/05/2008, 21h15
  2. Redim Preserve
    Par yedid dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/08/2007, 14h12
  3. Comment utiliser ReDim Preserve
    Par fakebios dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/06/2007, 15h50
  4. Probleme sur le redim preserve d'un tableau
    Par shinrei dans le forum ASP
    Réponses: 6
    Dernier message: 03/06/2006, 16h12
  5. [VB6] Erreur 9 sur redim preserve
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/10/2002, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo