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 :

ma variable tableau plante (erreur d execution 9) [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 144
    Par défaut ma variable tableau plante (erreur d execution 9)
    Bonjour le forum,

    Cela faisait longtemps

    j'ai un beug que je ne comprends pas car ce meme programme fonctionne sur une variable a une seule dimension mais pas 2

    j'ai volontairement détaillé le code pour comprendre l'erreur mais ??

    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
     
    Dim taba() As String
                        lig = 4
                        Erase taba
                        Do While Sheets("bdIP").Range("a" & lig).Value <> ""
                            a = NbDim(taba)
                            If a = 0 Then
                                b = 1
                                ReDim taba(b, 2)
                            Else
                                b = UBound(taba) + 1
                                ReDim Preserve taba(b, 2)
                            End If
                            taba(b, 1) = Sheets("bdIP").Range("a" & lig).Value
                            taba(b, 2) = Sheets("bdIP").Range("b" & lig).Value
                            lig = lig + 1
                            If lig = 1001 Then Exit Do
                        Loop
    pour information j'utilise option explicit et toutes mes variables sont déclarées

    Je plante sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ReDim Preserve taba(b, 2)
    avec l erreur :"erreur d' execution 9 : l'indice n'appartient pas à la sélection"

    Avez vous une idée concernant cette erreur
    les variables a, b, lig sont de type integer

    Merci pour votre aide,

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 207
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    ReDim Preserve ne peut que redimensionner la dernière dimension d'un tableau

    https://docs.microsoft.com/fr-fr/dot...edim-statement

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 144
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message
    Bonjour,

    ReDim Preserve ne peut que redimensionner la dernière dimension d'un tableau

    https://docs.microsoft.com/fr-fr/dot...edim-statement
    bonjour Tototi,

    merci pour ton aide, mais je ne comprends pas.
    je fait la même manip sur une variable à une seule dimension et cela fonctionne
    au lieu de faire taba(b,2) je fais 2 variable tableau : taba(b) et tabb(b) et cela fonctionne

    J'avais bien compris qu'il fallait le faire sur la dernière version du tableau mais là il me semble bien être sur la dernière version ?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je conseille la lecture de ce tutoriel Utiliser les variables tableaux en VBA Excel et particulièrement le III-B. Le mot clé Preserve
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 144
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Je conseille la lecture de ce tutoriel Utiliser les variables tableaux en VBA Excel et particulièrement le III-B. Le mot clé Preserve
    Haaa, effectivement je comprends mieux j'ai corrigé mon code et cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim taba() As String
                        lig = 4
                        Erase taba
                        Do While Sheets("bdIP").Range("a" & lig).Value <> ""
                            if NbDim(taba) = 0 then b=1 else b = UBound(taba) + 1
                            ReDim Preserve taba(1 to 2, 1 to b)
                            taba(1,b ) = Sheets("bdIP").Range("a" & lig).Value
                            taba(2, b) = Sheets("bdIP").Range("b" & lig).Value
                            lig = lig + 1
                            If lig = 1001 Then Exit Do
                        Loop
    Merci pour votre aide

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

Discussions similaires

  1. [XL-2010] Erreur d'execution '91' : Variable objet ou variable de bloc With non définie
    Par Youdi dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 07/08/2015, 17h20
  2. [XL-2007] Erreur d'execution 91: Variable objet ou variable de bloc with non définie
    Par Vivien18000 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/06/2015, 17h55
  3. [XL-2007] Erreur 1004 avec variable tableau
    Par amelyfred dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/03/2012, 14h34
  4. [XL-2003] Erreur sur une variable tableau
    Par hobine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/03/2011, 16h52

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