Tri tableau (incompatibilité de type)

Bonjour, je suis novice en VBA et j'ai besoin de votre temps et de votre aide si possible (je m'excuse d'avance pour les erreurs de débutant que j'ai du commettre)

...

Le but de ma macro est de calculer le temps passé par jour selon le matricule correspondant (je ne sais pas si j'ai été clair) mais j'ai un blocage au niveau de mon programme. Voici l'objectif : (à gauche tableau de base)

dzfafafaf

et voici mon code :

Sub Totalh()
Dim i As Integer
Set liste = CreateObject("scripting.dictionary") 
With Sheets("V1") 
    tablo = .Range("b2:L" & Rows.Count).End(xlUp).Row 
    For i = 1 To tablo 'on parcourt toutes les lignes de ce tableau
    liste(tablo(i, 2) & "#" & tablo(i, 9)) = liste(tablo(i, 2) & "#" & tablo(i, 9)) + tablo(i, 12) 'PROBLEME A CE NIVEAU CAR IMCOMPATIBILITE DE TYPE 
    Next i
End With
'lig = 2
'With Feuil1
    'For Each k In liste.keys 
        '.Cells(lig, 1).Resize(1, 4) = Split(k, "#")
        'lig = lig + 1
    'Next k
    '.[E2].Resize(liste.Count, 1) = Application.Transpose(liste.items) 
'End With
End Sub

Merci d'avance de votre réponse 

Coridialement

Bonjour

Pourquoi pas tout bêtement un TCD ?

Bonjour, je suis partis sur une macro car j'ai envie de me perfectionner avec cet outil.

De plus, je les infos que je vais traiter son exporter d'une base de données interne donc je trouvais plus judicieux de passer par VBA mais là je suis à l'arrêt total ...

RE

Un TCD sait traiter des données externes et en plus avec 2016 tu as PowerQuery intégré, bien plus efficace sur des bases de données que VBA

Je n'ai rien contre le perfectionnement VBA mais je prône avant tout l'utilisation des outils les plus adaptés...

Et même en VBA on utilise les tableaux structurés qui existent depuis 17 ans...

RE

Je vois je vois, effectivement ce serait peut-être plus judicieux de fonctionner comme ça

Serais-tu capable de m'expliquer comment je dois fonctionner avec un TCD ?

Bonjour ADBLA, 78chris,

Plusieurs anomalies:

1) tablo = .Range("b2:L" & Rows.Count).End(xlUp).Row ramène 1 (le N° de la ligne) et non pas un tableau. Il faudrait :

tablo = .Range("b2:L" & .Range("B" & Rows.Count).End(xlUp).Row)

2) For i = 1 To tablo : il faut définir l'indice de début et l'indice de fin de boucle; tablo est un tableau pas un nombre. on peut alors préciser le plus grand indice du tableau en utilisant la Fonction UBound() qui renvoie le plus grand indice de la dimension précisée :

For i = 1 To UBound(tablo, 1)
  ou
For i = LBound(tablo, 1) To UBound(tablo, 1)

3) liste(tablo(i, 2) & "#" & tablo(i, 9)) = liste(tablo(i, 2) & "#" & tablo(i, 9)) + tablo(i, 12) le tableau tablo "comporte 11 colonnes" et les indices commencent à 1, donc tablo(i,12) n'existe pas

A+

RE

Je vois je vois, effectivement ce serait peut-être plus judicieux de fonctionner comme ça

Serais-tu capable de m'expliquer comment je dois fonctionner avec un TCD ?

Il faut mettre le tableau source sous forme de tableau structuré puis depuis une cellule du tableau, insertion TCD, Matricule et Date en étiquette de ligne, Temps passé en valeur

Si la source est externe, voir à récupérer les données par une requête PowerQuery puis TCD utilisant la requête

Rechercher des sujets similaires à "tri tableau incompatibilite type"