Incrementer un tableau VBA

Bonjour à tous,

Je viens vers vous car j'ai un petit soucis sur une macro que "j'essaie" de faire fonctionner...(et je débute sur VBA) je m'explique :

principe de la feuille Excel :

effectuer un tri manuel des différentes colonnes et afficher certaines données dans différents graphiques dans d'autres onglets.

If Sheets("données").Cells(lignesActives(Compteur - 1), 8).Value = 2003 Then Tableau2003(Compteur) = (Sheets("données").Cells(lignesActives(Compteur - 1), 19).Value)

En gros, là, je vérifie si la colonne 8 contient bien la bonne année (2003) et "j'essaie" d’incrémenter un tableau2003 de la valeur de la colonne 19.

Mon but ultime étant d'afficher graphiquement les différentes valeurs que contiendrais ma colonne 19 en fonction des années.

Si une personne à une idée... Merci d'avance ::

CdT

Amaury

bonjour,

pour incrémenter,prendre l'ancienne valeur du compteur, lui additionner la valeur dont on veut l'incrémenter et placer le résultat dans le compteur

avec le code que tu as fourni, cela devrait donner ceci

If Sheets("données").Cells(lignesActives(Compteur - 1), 8).Value = 2003 Then Tableau2003(Compteur) = tableau2003(compteur) + (Sheets("données").Cells(lignesActives(Compteur - 1), 19).Value)

mais j'ai un doute quant à cette instruction ...

mets-nous ton fichier avec les explications des ce que tu veux faire.

Merci beaucoup pour ta réponse H2so4, je te partage mon fichier.

par contre par souci de confidentialité j'ai dus supprimer certaines données.

Mon but :

- Dans l'onglet "Données" je veux choisir mes véhicules par type "diesel" ou "essence" ou encore par segment "citadine", "routière"... je fait un filtrage manuel comme j'ai envie.

- Ma macro cherche toute les lignes que j'ai choisis et les comptes.

- enfin, elle affiche dans un graphique le niveau de bruit des véhicules sélectionnés ==> onglet "HISTOGRAMME BF place AVG"

> la macro est très très mal compilée mais pour l'instant elle fait à quelque chose près le job.

- C'est maintenant que j'attaque la partie qu'il me pause problème : je cherche à afficher le niveau de bruit des tout les véhicules d'une même année, en fonction justement des années, dans un graphe type nuage de points, genre il peut il y avoir 20 véhicules dans l'année 2003 et je veux afficher les 20 valeurs de niveaux en fonction des années... je sais pas si c'est clair.

je te mets le fichier en PJ.

Merci encore.

Amaury

46fichier-partage.xlsm (208.07 Ko)

Bonjour,

peux-tu faire manuellement le graphique que tu voudrais obtenir sur base de ces données ?

Oui, j'ai réussi à le faire.

- onglet "nombre de véhicule par année"

cdt

Amaury

40fichier-partage.xlsm (213.84 Ko)

Bonjour,

proposition d'adaptation de ta macro

Sub AttachLabelsToPoints()
    Dim Compteur, ChartName As String, xVals As String
    'Trouve le nb de lignes affichées après filtrage
    Dim Ligne, index As Integer
    Dim lignesActives() As Integer
    index = 0
    For Ligne = 2 To trouveDerniereLigne("Données", "B") - 1
        If Sheets("Données").Range("B" & Ligne).EntireRow.Hidden = False Then
            ReDim Preserve lignesActives(index)
            lignesActives(index) = Ligne
            index = index + 1
        End If

    Next Ligne
    'Histogramme AVG
    Dim i%
    Dim pack(58 To 90), packccv(58 To 89), indccv(58 To 90)
    For i = 58 To 90
        indccv(i) = i
    Next i
    For Compteur = 1 To index
        i = Int(Sheets("données").Cells(lignesActives(Compteur - 1), 19))
        If i > 0 Then
            If Sheets("données").Cells(lignesActives(Compteur - 1), 1).Value = "PSA" Then

                pack(i) = pack(i) + 1

            Else
                packccv(i) = packccv(i) + 1
            End If
        End If
    Next Compteur
    With Graph2
        .SeriesCollection(1).Name = "PSA"  'changement du nom de la serie "1"
        .SeriesCollection(1).XValues = indccv  'Creation des données abscisses = voir pour optimiser
        .SeriesCollection(1).Values = pack    'Creation des données ordonnées = voir pour optimiser
        .SeriesCollection(2).Name = "CCV"  'changement du nom de la serie "2"
        .SeriesCollection(2).XValues = indccv  'Creation des données abscisses = voir pour optimiser
        .SeriesCollection(2).Values = packccv
    End With
    'Histogramme ARD
    For Compteur = 1 To index
        i = Int(Sheets("données").Cells(lignesActives(Compteur - 1), 20))
        If i > 0 Then
            If Sheets("données").Cells(lignesActives(Compteur - 1), 1).Value = "PSA" Then

                pack(i) = pack(i) + 1

            Else

                packccv(i) = packccv(i) + 1
            End If
        End If
    Next Compteur
    With Graph3
        .SeriesCollection(1).Name = "PSA"  'changement du nom de la serie "1"
        .SeriesCollection(1).XValues = indccv  'Creation des données abscisses = voir pour optimiser
        .SeriesCollection(1).Values = pack    'Creation des données ordonnées = voir pour optimiser
        .SeriesCollection(2).Name = "CCV"  'changement du nom de la serie "2"
        .SeriesCollection(2).XValues = indccv  'Creation des données abscisses = voir pour optimiser
        .SeriesCollection(2).Values = packccv
    End With
    'Graph évolution niveau de bruit BF place AVG en fonction des années
    ReDim serie1(index)
    ReDim serie2(index)
    For Compteur = 1 To index
        i = Sheets("données").Cells(lignesActives(Compteur - 1), 19).Value
        If i > 0 Then
            'If Sheets("données").Cells(lignesActives(Compteur - 1), 1).Value = "PSA" Then
            ctr = ctr + 1
            serie1(ctr) = Sheets("données").Cells(lignesActives(Compteur - 1), 8).Value
            serie2(ctr) = Sheets("données").Cells(lignesActives(Compteur - 1), 19).Value
            'End If
        End If
    Next
    With Graph4
        .SeriesCollection(1).Name = "niveau de bruit"  'changement du nom de la serie "1"
        .SeriesCollection(1).XValues = serie1  'Creation des données abscisses = voir pour optimiser
        .SeriesCollection(1).Values = serie2    'Creation des données ordonnées = voir pour optimiser
    End With
End Sub

Public Function trouveDerniereLigne(ByVal feuille As String, ByVal a As String)
' trouve la derniere ligne remplie
    nb = 2
    While (IsEmpty(Worksheets("Données").Range("a" & nb)) = False)
        nb = nb + 1
    Wend
    trouveDerniereLigne = nb
End Function

Un grand merci à toi H2so4, c'est exactement ce que je cherchais à faire, et en plus tu a compilé mon horrible codage !!

je te remercie encore pour le temps passé à m'aider.

CdT

Amaury

Rechercher des sujets similaires à "incrementer tableau vba"