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 :

Boucle sur un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Points : 41
    Points
    41
    Par défaut Boucle sur un tableau
    J'ai un probleme pour sommer des element d'un tableau en le mettant a jour. En gros j'ai un TCD avec plusieurs lignes et plusieurs colonnes. Je vais sommets les lignes du TCD suivant les criteres quelles respectent (devises) et repeter cette operation pour toutes les colonnes. Stocker les valeurs des sommes me paraissait plus simple dans un tableau. Le probleme est que les valeurs dans mon tableau sont nulles alors que cela ne devrait pas, je suppose donc que le code est faux mais je ne trouve pas l'erreur. Si vous avez une idee je suis preneur merci
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Dim LastLig As Long
    Dim Sh As Worksheet
    Dim Resultat() As String
    Dim i, j As Integer
     
    For i = 6 To LastLig - 1
     
    If Sh.Cells(i, 1) <> "" Then
     
    Erase Resultat
     'compteur nombre de ligne avant transaction suivante
                    iligarb = 1
                    While Sh.Cells(i + iligarb, 1) = ""
                    iligarb = iligarb + 1
                    Wend
                    If iligarb > 1 Then
     
                          For j = 1 To 20 'correspond au nombre de colonne de mon TCD
     
     
                                For iprime = i To i + iligarb - 1
                                ReDim Preserve Resultat(1 To 8, 1 To 20)
     
     
                                If Sh.Cells(iprime, j + 13) = "XPF" Or Sh.Cells(iprime, j + 13) = "" And Sh.Cells(iprime - 1, j + 13) = "XPF" Then
                                Resultat(4, j) = Resultat(4, j) + Sh.Cells(iprime, j + 13)
     
                                ElseIf Sh.Cells(iprime, j + 13) = "USD" Or Sh.Cells(iprime, j + 13) = "" And Sh.Cells(iprime - 1, j + 13) = "USD" Then
                               Resultat(2, j) = Resultat(2, j) + Sh.Cells(iprime, j + 13)
     
     
                                ElseIf Sh.Cells(iprime, j + 13) = "AUD" Or Sh.Cells(iprime, j + 13) = "" And Sh.Cells(iprime - 1, j + 13) = "AUD" Then
                                Resultat(3, j) = Resultat(3, j) + Sh.Cells(iprime, j + 13)
     
                                ElseIf Sh.Cells(iprime, j + 13) = "EUR" Or Sh.Cells(iprime, j + 13) = "" And Sh.Cells(iprime - 1, j + 13) = "EUR" Then
                                Resultat(1, j) = Resultat(1, j) + Sh.Cells(iprime, j + 13)
     
                                ElseIf Sh.Cells(iprime, j + 13) = "GBP" Or Sh.Cells(iprime, j + 13) = "" And Sh.Cells(iprime - 1, j + 13) = "GBP" Then
                               Resultat(5, j) = Resultat(5, j) + Sh.Cells(iprime, j + 13)
     
                                ElseIf Sh.Cells(iprime, j + 13) = "NZD" Or Sh.Cells(iprime, j + 13) = "" And Sh.Cells(iprime - 1, j + 13) = "NZD" Then
                               Resultat(7, j) = Resultat(7, j) + Sh.Cells(iprime, j + 13)
     
                                ElseIf Sh.Cells(iprime, j + 13) = "CHF" Or Sh.Cells(iprime, j + 13) = "" And Sh.Cells(iprime - 1, j + 13) = "CHFP" Then
                               Resultat(6, j) = Resultat(6, j) + Sh.Cells(iprime, j + 13)
     
                                ElseIf Sh.Cells(iprime, j + 13) = "CAD" Or Sh.Cells(iprime, j + 13) = "" And Sh.Cells(iprime - 1, j + 13) = "CAD" Then
                               Resultat(8, j) = Resultat(8, j) + Sh.Cells(iprime, j + 13)
                                Else
                                End If
     
                                Next iprime
                                Next j
     
                            i = i + iligarb - 1
     
     
    Else
    End If
    Next i

  2. #2
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut boucle sur un tableau
    bonjour,

    N'est-il pas nécessaire de préciser le nom de la feuille Excel. sh = worksheet ( "nom feuille") ? peut-être ton code est-il écrit sur la feuille en question ?

    As-tu essayé l'exécution pas à pas pour voir la progression ?

    cordialement.

Discussions similaires

  1. Explication pour une boucle sur un tableau ( débutant)
    Par serna dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/04/2015, 10h44
  2. [XL-2007] Boucle sur un tableau nommé
    Par thorgal1612 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/11/2014, 10h10
  3. Boucle sur un tableau de variable en SQL
    Par sekaijin dans le forum Débuter
    Réponses: 4
    Dernier message: 27/01/2010, 20h52
  4. [HTML] boucle sur une variable et non pas un tableau
    Par delma dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/11/2006, 15h03
  5. [Tableaux] Boucle sur un tableau associatif
    Par alexfrere dans le forum Langage
    Réponses: 11
    Dernier message: 28/06/2006, 15h44

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