Probleme pour faire une somme sur VBA

Aprentizor -  
Walter-Kum-Dorne Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je voudrais faire une somme d'une colonne des heures par un tri selon les affaires, c'est a dire que j'ai une colonne numAffaire, avec differents numéraux d'affaire, une colonne technicien avec differents techniciens et une colonne heures.

Exemple pour une meme affaire, je peux avoir plusieurs techniciens qui pointent plusieurs heures donc pour la meme affaire il a plusieurs enregistrement d'heures.

je voudrais faire la somme des heures par affaire pour lenregistre dans une autre colonne ( apres je l'extrait pour le mettre dans un autre fichier mais j'ai pas de probleme a ce niveau la)

Voila si quelqu'un peut m'aider merci

5 réponses

Walter-Kum-Dorne Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   1
 
Salut,

Tu peux arriver au résultat de plusieurs manières, mais la plus simple dans ton cas est de faire une boucle sur la colonne indiquant le noms de tes affaires.
La suite dépend de l'organisation de ton fichier :

- Si tes heures sont triées en fonction de tes numéros d'affaires, tu peux faire une deuxième boucle avec un "while" jusqu'à ce que le numéro d'affaire change, laisser un marqueur la où elle s'est arrêtée itérer ta première boucle pour passer à l'affaire suivante et reprendre à partir du marqueur (du genre une variable "marqueur = ligne de changement"). Ca à l'avantage de gagner en temps de calcul sur des grosses listes.

- Sinon si tes heures sont dans le désordre tu peux balayer toute la liste dans ta deuxième liste et pour chaque affaire (toujours itérée dans ta première boucle) tu fais un test avec la cellule "affaire" de ton tableau d'heures.

Bien sur, dans un cas comme dans l'autre, il faudra initialiser une valeur (somme = 0) pour pouvoir y ajouter le nombre d'heure trouvé pour chaque cas valide de ta deuxième boucle.

Après pour sauvegarder, il te suffit de le faire dans ta première boucle avant d'itérer.
0
Aprentizor
 
Merci de ta reponse, mes données son extraient de plusieurs fichiers excels,
et remplissent une feuille excel ( heures imputees ), je voudrais savoir comment on fait pour comparer des cellules et si passer a la suivante jusqua un comparateur different.
exemple
a = valeur cellule
i = indice cellule
tant que A faire
sommeheures= sum( (comment recup les donnees des cellules de cette plage qui est aleatoire selon les affaires)

jusqu'a i <> i+1

Je sais pas si c'est tres explicite ce que j'ai ecrit, je suis pas tres bon en programation

si tu pouvais me montrer ta 2 eme idees car mes affaires sont dans le desordre par un peite exemple coder sa m'aiderai beacoup

merci de m'aider
0
Walter-Kum-Dorne Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   1
 
Envoie moi ton fichier excel à l'adresse que tu trouveras dans mon profile, je te le renverrai avec un module qui va bien.

Pour les autres que ca intéresserait, je met le code ci dessous :


Sub Sommateur()

Dim i As Integer
Dim j As Integer
Dim Somme As Integer
i = 2
j = 2
Somme = 0

While (Cells(i, 6) <> "")
  While (Cells(j, 1) <> "")
    If (Cells(j, 1) = Cells(i, 6)) Then
      Somme = Somme + Cells(j, 3)
    End If
    j = j + 1
  Wend
  Cells(i, 7) = Somme
  Somme = 0
  i = i + 1
  j = 2
Wend
End Sub



Avec les correspondances suivantes :

Colonne A : N° Affaire
Colonne B : Technicien (non pris en compte dans le traitement)
Colonne C : Heures passées
Colonne F : Liste des différentes affaires (sans ca ca ne marche pas)
Colonne G : Colonne d'accueil pour le total des heures passées sur chaque affaire
0
Aprentizor
 
je peux t'envoye sa du stage mais se soir je t'envoie sa,
je vais essayer avec ce que tu m'as donné

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Walter-Kum-Dorne Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   1
 
Salut,

Ton classeur m'a donné l'idée d'utiliser un tableau croisé dynamique, et effectivement c'est beaucoup plus simple (pas de macro, exécution instantanée, ...), et si tu veux en plus avoir la somme répartie par chapitre c'est encore plus simple et rapide.

Donc si tu sais comment créer un TCD c'est bon (N° affaire dans les lignes, chapitre dans les colonnes et nombre d'heures dans les données, et choisir la somme dans le champ Pivot Table).

Si tu sais pas, tu vas dans :

- menu Données / Rapport de Tableau Croisé Dynamique
- laisser les options par défaut (liste ou BD XL et TCD)
- sélectionner les trois colonnes concernées
- l'emplacement c'est comme ca t'arrange
- ensuite, il suffit de glisser les bons éléments aux bons endroits (comme indiqué au dessus par exemple).
- Enfin, il reste juste à le mettre en forme si tu as envie (tu trouveras toute l'aide dont tu as besoin dans l'aide excel ou sur internet).

Voila bon week end
0