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

Macros et VBA Excel Discussion :

[Excel-VBA]Redimensionnement de tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut [Excel-VBA]Redimensionnement de tableau
    Bonjour

    Je déclare mon tableau de la manière suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim tablo() as variant
    En effet, au cours de ma procédure, j'aimerai lui ajoute rau fur et à mesure des lignes
    Tout d'abord, je le déclare avec 1 ligne et je lui insère des valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Redim tableau(1,3)
    Par contre il me faut ensuite lui rajouter une autre ligne et pour cela, j'effectue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Redim tableau(2,3)
    Ca m'ajoute bien une autre ligne mais je perds les valeurs précédente.

    Quelle est donc la bonne méthode pour redimensiuionner un tableau tout en gardant les valeurs précédentes ?

    Merci d'avance pour votre aide.

    A+

  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
    Voir, dans l'aide en ligne, Redim Preserve.

    La seule chose importante, c'est que tu ne peux modifier 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 éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Avant de poster un message, vérifie la cohérence du code que tu nous donnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim tablo() as variant
     
    Redim tableau(1,3)
    Cela evitera bien des soucis de compréhension.

  4. #4
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Bon, je viens de tester, les déclarations sont cohérentes, mais j'ai le message d'erreur suivant :
    L'indice n'appartient pas à la sélection
    Je dimensionne au départ mon tableau
    Puis pour ajouter la ligne je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Redim Preserve tablo(2,3)
    et c'est là que j'ai mon erreur

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Un tel message, marsup, intervient sur une ligne qui ne peut être l'une des 2 lignes (dim et redim) que tu nous montres ...
    Sur quelle ligne de code celà se passe-t-il donc ?

  6. #6
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Il n'est pas possible de fixer la taille d'un tableau dynamique au moment de la 'compilation'.

    Donc la déclaration doit être : Dim tablo() et non Dim tablo(1,3).

  7. #7
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Le message d'erreur apparait lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Redim Preserve tablo(2,3)

  8. #8
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Présente nous ton code et dis nous quel est le message d'erreur. Pour info cela fonctionne chez moi :

    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
    Public Sub Main()
        Dim Tableau() As Variant
     
        ReDim Preserve Tableau(1, 2)
     
        Tableau(0, 0) = 0
        Tableau(0, 1) = 1
        Tableau(0, 2) = 2
        Tableau(1, 0) = 10
        Tableau(1, 1) = 11
        Tableau(1, 2) = 12
     
        ReDim Preserve Tableau(1, 3)
     
        Tableau(1, 3) = 13
        Tableau(1, 3) = 13
     
        Debug.Print Tableau(0, 2)
        Debug.Print Tableau(1, 3)
    End Sub

  9. #9
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    En fait je me sert de la fonction Ubound
    Je remplis ensuite mon tableau puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Redim Preserve tablo(UBound(tablo)+1,5)
    C'est sur cette ligne que j'ai mon erreur

  10. #10
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Preserve ne conserve que la dernière dimension du tableau. Pour plus de clareté, utilise l'argument facultative de la fonction UBound afin de préciser à quelle dimension du tableau tu accedes.

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    la dernière dimensiondonc
    Redim Preserve tablo(2,3)
    n'est pas valide
    Redim Preserve tablo(1,2317)
    est valide

    intervertit tes dimension
    dim (3,1)
    puis
    redim(3,xx)
    Elle est pas belle la vie ?

  12. #12
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Super ca marche comme ca

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VBA Excel :séparation dans un tableau croisé dynamique
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/11/2006, 08h52
  2. [VBA Excel] Copie d'un tableau lignes filtrées comprises
    Par gojira dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/08/2006, 12h53
  3. [VBA-Excel]Mettre dans un tableau le contenu d'un fichier
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/07/2006, 16h37
  4. VBA-Excel:Présentation d'un tableau (insertion ligne de légende)
    Par gabrielle_dl dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 15/06/2006, 11h11
  5. [VBA] insérer un tableau Excel dans un formulaire
    Par Alexj51 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 08/02/2006, 13h15

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