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 :

Utilisation des tableaux en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut Utilisation des tableaux en VBA
    Bonjour a tous,
    Je cherche à réaliser une macro avec des tableaux en VBA afin d’accélérer le traitement.
    J'ai déclaré mes deux tableaux, les ai redimensionné et les ai chargé comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Table1() As String 
    Dim Table2() As String
    ReDim Table1(0 To NbLine1)
    ReDim Table2(0 To NbCol1)
     
     
    For i = 0 To (UBound(Table1) - 5)
    Table1(i) = WKS.Offset(i, 8)
    Next i
     
    For j = 0 To UBound(Table2)
    Table2(j) = CRV.Offset(0, j)
    Next j
    J'ai ensuite écris ma boucle mais j'ai du oublie quelque-chose car ma boucle tourne assez longtemps.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For j = 0 To NbCol1
        For i = 0 To NbLine1 - 5
            If Month(Table1(i)) = Month(Table2(j)) And Year(Table1(i)) = Year(Table2(j)) Then
                CRV.Offset(1, j) = WKS.Offset(i, 11) + CRV.Offset(1, j)
            End If
        Next i
    Next j
    Selon moi cela viens de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CRV.Offset(1, j) = WKS.Offset(i, 11) + CRV.Offset(1, j)
    Y-at-il un moyen d'optimiser?
    Peut-on écrire quelque-chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table2(1,j) = table1(i, 11) + Table2(1, j)
    J'ai essayé mais j'ai une erreur 9
    Subscript Out of Range
    Comment faire ?
    Utiliser un tableau a deux dimensions pour ma ligne ?
    Dans ce cas comment faire pour le charger
    Merci pour votre aide
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  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
    13 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonsoir Eric,
    Il est possible de charger en une seule fois une plage de cellules dans un tableau.
    As-tu lu, le tutoriel de Silkyroad 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

  3. #3
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Bonjour,

    Toute référence à des cellules dans une boucle va ralentir ton code.
    Aussi bien la phase de remplissage de tes tableaux (Voir à ce sujet ce que te propose Philippe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 0 To (UBound(Table1) - 5)
    Table1(i) = WKS.Offset(i, 8)
    Next i
     
    For j = 0 To UBound(Table2)
    Table2(j) = CRV.Offset(0, j)
    Next j
    que la phase de traitement (où effectivement il faut que tu utilises tes tableaux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CRV.Offset(1, j) = WKS.Offset(i, 11) + CRV.Offset(1, j)
    Pour la mise à jour des cellules une fois le tableau valorisé, toujours la méthode décrite par Philippe dans le sens inverse : "affecter un tableau de valeurs à une plage de cellules"

    Bon courage

  4. #4
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Merci à vous deux, je vais étudier un plus le tutoriel de SilkyRoad.
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

Discussions similaires

  1. Macro VBA Arrays : utilisation des tableaux
    Par HUGOBASS dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/08/2015, 10h49
  2. [XL-2010] Utilisation des tableaux structurés en VBA
    Par Lewis29 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 18/07/2013, 09h59
  3. Utilisation des tableaux structurés en VBA
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/06/2013, 19h31
  4. Réponses: 2
    Dernier message: 09/06/2006, 13h33
  5. Réponses: 4
    Dernier message: 10/05/2006, 10h36

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