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 :

Tableau() et redim [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut Tableau() et redim
    Bonjour à tous,

    Bon j'ai un souci, je ne trouve pas comment faire ceci et j'ai cherché mais en vain

    J'ai un tableau dimensionné comme cela
    Dans une boucle je renseigne mon tableau automatiquement
    Selon avec quoi je le renseigne il peut n'y avoir que 19 variables de remplie

    Comment faire pour qu'il redimensionne le tableau en fonction de ce qu'il comporte?

    De plus, ce tableau comporte des liens (url), qui me servent par la suite à ouvrir des pages web et récupérer des données
    Je "navigue" dans tablo de 1 à 22 par le biais d'une boucle for/next, mais lorsque j'arrive à tablo(20), j'ai une erreur évidemment parce qu'il n'y a rien dans la variable.

    Ce tablo sert également à redimensionner un autre tableau, mais je n'ai pas la syntaxe
    c surement avec par la suite qu'il faut gérer çà.

    Merci d'avance pour votre éclaircissement
    Seb

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53

  3. #3
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    Merci Philippe pour ces liens, je connaissais bien évidemment le 1er...mais pas le deuxième qui est fort intéressant...

    Par contre, je ne dois certainement pas saisir quelque chose!!!!

    j'ai mon tablo(1 to 22)
    donc 22 lignes dedans

    Je remplis seulement 19 lignes (valeur dans l'espion)

    donc j'ai 3 lignes vides

    c'est là que je bloque, je souhaite redimensionner mon tablo en (1 to 19) automatiquement versus (1 to 22) en fonction de ce qui s'y trouve???

    Cela me parait si simple....mais....


    seb

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 138
    Points : 9 972
    Points
    9 972
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si tu dimensionnes un tableau lors de sa déclaration (Dim MonTablo(X to Y)) c'est un tableau figé qui n'est pas variable, tu ne peux pas le Redim


    tu as deux solutions pour ton cas :

    1) si tu conserves un tableau dimensionné dans sa déclaration : tu utilises une variable initialisée à Lbound-1 de ton tableau (0 donc dans ton exemple) et à chaque ajout tu incrémentes la variable.

    A la fin de l'alimentation, tu connais la position du dernier élément ajouté : tu parcours ton tableau avec une boucle For i = Ubound(MonTablo) to 'la variable'

    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
    Sub toto()
    Dim MonTablo(1 To 22)
    Dim Cpt As Integer
     
    Cpt = LBound(MonTablo) - 1
     
    For i = 1 To 20
        MonTablo(i) = i
        Cpt = Cpt + 1
    Next i
     
    For i = LBound(MonTablo) To Cpt
        Debug.Print MonTablo(i)
    Next i
     
    MsgBox "il y a " & Cpt & " éléments dans votre tableau"
    End Sub
    2) tu peux déclarer un tableau variable (Dim MonTablo()) que tu redimensionnes à chaque ajout, un exemple parmi d'autres possibilités :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub toto()
    Dim MonTablo(): ReDim MonTablo(1)
        For i = 1 To 20
            If UBound(MonTablo) = 1 Then
                MonTablo(1) = i
            Else
                ReDim Preserve MonTablo(UBound(MonTablo) + 1): MonTablo(UBound(MonTablo)) = i
            End If
        Next i
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    re,
    Salut Joe,
    Merci pour tout

    Mais je viens de trouver, c tout simple....
    en faite, j'ai obtenu la même chose que ton 2ème code....

    MErci à vous
    Seb

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

Discussions similaires

  1. tableau a 2 dimmention redim preserve
    Par fernier dans le forum VB.NET
    Réponses: 3
    Dernier message: 30/01/2009, 11h41
  2. variable tableau 2 dimensions et redim preserve
    Par dawood dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/01/2009, 15h11
  3. Tableau vide avec Redim
    Par tera_jeff dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/11/2007, 21h58
  4. tableau dynamique : galère de ReDim !
    Par zoidy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/06/2007, 10h36
  5. Probleme sur le redim preserve d'un tableau
    Par shinrei dans le forum ASP
    Réponses: 6
    Dernier message: 03/06/2006, 16h12

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