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 :

Manipuler une variable tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut Manipuler une variable tableau
    Bonjour,

    Tout d'abord je adresser un immense merci à Silkyroad pour l'ensemble de ses tuto et particulièrement pour celui relatif aux variables tableaux qui m'a bien aidé.

    Il me manque simplement un petit élément. J'utilise une variable tableau basique à deux dimensions. L'utilisateur fait un choix dans une liste établie selon la première colonne de ma variable.

    Je voudrais qu'en fonction de ce choix, une macro me supprime la ligne correspondante dans ma variable. J'arrive à mettre toutes les valeurs à vide mais pas à supprimer simplement la ligne.

    Auriez vous une idée ?

    Merci d'avance à tout le monde et bon week end.

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Tu ne peux pas supprimer une ligne dans une variable tableau, il faut la redéfinir, le redimensionner ce qui revient à en changer.

    Donc soit :

    • Ta variable = une plage continue, suite à code tu supprimes une ligne de la plage tu réaffectes la nouvelle plage à ta variable.
    • Tu utilises une collection plutôt selon contexte.

    cordialement,

    Didier

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut
    Merci pour ta réponse Ormonth,

    Alors tout d'abord 'ai dit une grosse bétise, ma variable tableau n'a qu'une dimension. Elle est définie comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Voitures() As Voiture
    Type Voiture
        Nom As String
        Marque As String
        Type As String
        Couleur As String
    End Type
    En fait j'ai créée une petite procédure qui trouve la ligne à supprimer, lui donne la valeur de la ligne n+1 puis donne la valeur de n+2 à n+1 etc... Pour finalement réduire la dimension de la variable d'une ligne. Je me suis dit que je pouvais fonctionner comme ça.

    Par contre j'ai un plantage sur la ligne en rouge (l'indice n'appartient pas à la sélection) :
    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
    Sub SupprimerLigne()
        Position = 0
        For i = 1 To UBound(Voitures())
            If Voitures(i).Nom = AncienneValeurCombo Then
                Position = i
                Exit For
            End If
        Next
        If Position <> 0 Then
            For i = Position To UBound(Voitures()) - 1
                Voitures(i).Nom = Voitures(i + 1).Nom
                Voitures(i).Marque = Voitures(i + 1).Marque
                Voitures(i).Type = Voitures(i + 1).Type
                Voitures(i).Couleur = Voitures(i + 1).Couleur
            Next
            ReDim Preserve Voitures(UBound(Voitures()) - 1)
        End If
    End Sub
    Est ce que ma façon de fonctionner est plausible ou est ce une abération ?

    Deuxièmement, j'ai essayé de trouver un tuto sur les collections mais je n'en ai pas trouvé sur Dvp.com (ma référence sur le plan des tutos ^^)

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Perso je trouve que ce que tu as fait est bien. Je pense que tu as simplement une faute de syntaxe sur la ligne qui lève une erreur. Je te propose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim Preserve Voitures(UBound(Voitures - 1))
    Cordialement,

    PGZ

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Par défaut
    Merci pgz.

    C'est vrai que les parenthèses n'étaient pas forcément utiles. Mais même sans ça j'ai toujours la même erreur.

    Voilà un petit fichier test pour que vous voyer ce que ça donne.
    Il y a systématique l'erreur : "L'indice n'appartient pas à la sélection"
    Fichiers attachés Fichiers attachés

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Tu ne m'as pas bien lu. Ce ne sont pas les parenthèses en trop qui gênent, mais celle qui est mal placée. Ca oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim Preserve Voitures(UBound(Voitures - 1))
    Ca, non:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim Preserve Voitures(UBound(Voitures) - 1)
    COrdialement,

    PGZ

Discussions similaires

  1. [AJAX] Envoyer une variable tableau à un script PHP
    Par AzertyH dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2007, 16h58
  2. [VBA-E]Recherche dans une variable tableau
    Par illight dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/12/2006, 17h50
  3. Transmettre une variable tableau
    Par WagaSeb dans le forum Général VBA
    Réponses: 22
    Dernier message: 03/12/2006, 11h11
  4. [Tableaux] récuperer une variable tableau passé par URL
    Par molesqualeux dans le forum Langage
    Réponses: 2
    Dernier message: 23/12/2005, 01h12
  5. Acces à une variable-tableau de PHP
    Par Erwan21 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/02/2005, 13h55

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