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 :

Lecture variables tableau ligne après ligne plutôt que colonne après colonne. [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Août 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Août 2007
    Messages : 50
    Par défaut Lecture variables tableau ligne après ligne plutôt que colonne après colonne.
    Bonjour à tous,

    Je suis un utilisateur VBA débutant et cela fait cinq jours que je bute sur un problème.

    J'utilise des variables tableau interdépendantes.

    Ma première variable tableau, tableau(I, 0), récupère des données dans un onglet Excel nommé "Exercice" (tableau(I, 0) = Sheets("Exercice").Range("A" & I + 1) )

    Ma deuxième variable tableau, tableau(I, 1), est égal à 1 si tableau(I - 1, 0) est > 7 et si tableau(I - 1, 2) est = 2

    Ma troisième variable tableau, tableau(I, 2), est égal à 2 si tableau(I, 0) est > 8

    Mon problème, c'est que la deuxième variable ne fonctionne pas puisque VBA construit d'abord mon premier tableau, puis mon deuxième et enfin mon troisième. Comme s'il construisait colonne après colonne.

    Au stade de tableau(I, 1), VBA n'a aucune information sur la valeur de tableau(I, 2).

    Sur le tableur Excel, je ne rencontre pas ce problème, puisque le tableur construit ligne après ligne. Je peux très bien construire ma cellule B2 en fonction de la cellule C1. Pas dans mon code VBA.

    J'espère avoir été clair.

    Qu'est-ce que je n'ai pas compris ? Comment faire pour que mes variables tableau se comportent comme dans un tableur Excel ?


    Merci de votre aide.


    P.S. : merci de ne pas me donner l'astuce de remplacer dans ma deuxième variable tableau(I - 1, 2) par tableau(I-1, 0) est > 8. Vous n'avez compris, ce n'est pas ce que je recherche.


    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub Exemple()
     
    'Déclarations
        Dim tableau()
        Dim derniereLigne As Integer
        Dim I As Integer
     
        derniereLigne = Sheets("Exercice").Cells(Rows.Count, 1).End(xlUp).Row 'Dernière ligne de la base de données
        ReDim tableau(derniereLigne - 1, 2) 'Redimensionnement
     
        For I = 0 To derniereLigne - 1
        tableau(I, 0) = Sheets("Exercice").Range("A" & I + 1) 'Enregistrement des valeurs dans le tableau 7, 8, 9 , 8, 7
        Next
     
        For I = 1 To derniereLigne - 1
        If tableau(I - 1, 0) > 7 And tableau(I - 1, 2) = 2 Then
        tableau(I, 1) = 1
        End If
        Next
     
        For I = 0 To derniereLigne - 1
        If tableau(I, 0) > 8 Then
        tableau(I, 2) = 2
        End If
        Next
     
        For I = 0 To derniereLigne - 1
        Sheets("Exercice").Range("S" & I + 1) = tableau(I, 0)
        Next
     
        For I = 0 To derniereLigne - 1
        Sheets("Exercice").Range("T" & I + 1) = tableau(I, 1)
        Next
     
        For I = 0 To derniereLigne - 1
        Sheets("Exercice").Range("U" & I + 1) = tableau(I, 2)
        Next
     
    End Sub

  2. #2
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Août 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Août 2007
    Messages : 50
    Par défaut
    N'importe quoi !

    Je me suis emmêlé les pinceaux avec mes For… Next.

    Merci d'avoir éclairé ma lanterne sur cette grossière erreur de débutant (c'est ironique...).

  3. #3
    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 n'ai pas lu en détail votre code mais pourquoi des boucles et plusieurs tables.
    Il est parfaitement possible de charger une plage complète en une seule instruction dans une variable tableau et effectuer l'écriture d'une variable tableau également en une seule instruction après avoir effectué les opérations en mémoire.
    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

  4. #4
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Août 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Août 2007
    Messages : 50
    Par défaut
    Merci pour votre réponse, mais pour moi c'est un peu du chinois.

    Tout ce que je crois avoir compris, c'est que j'ai mis un peu trop de FOR et de NEXT.

  5. #5
    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,
    Merci pour votre réponse, mais pour moi c'est un peu du chinois
    Pour reprendre votre exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For I = 0 To derniereLigne - 1
     tableau(I, 0) = Sheets("Exercice").Range("A" & I + 1) 'Enregistrement des valeurs dans le tableau 7, 8, 9 , 8, 7
    Next
    et en supposant que le nombre de lignes de la plage soit égal à 1000, la ligne pour charger la variable tableau serait tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau = Sheets("Exercice").Range("A1:A1000").Value
    Pour en savoir plus, je vous conseille la lecture de ce tutoriel Utiliser les variables tableaux en VBA Excel
    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

  6. #6
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Août 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Août 2007
    Messages : 50
    Par défaut
    J'ai fait cela dans le cadre d'un tableau dynamique (dimensions non fixes – c'est mon habitude de travail). Votre exemple est valable seulement pour un tableau qui ne bouge plus.

    Mais de toute façon, on est un peu loin du problème pour lequel j'avais demandé de l'aide.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/04/2016, 11h31
  2. Réponses: 0
    Dernier message: 25/03/2013, 14h39
  3. Réponses: 3
    Dernier message: 15/02/2011, 17h17
  4. [VBA-E] Supprimer des lignes à partir d'une variable tableau
    Par humbp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/02/2008, 08h09
  5. Réponses: 1
    Dernier message: 05/01/2007, 15h33

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