fractionnement et redistribution de données

rastafouette

XLDnaute Junior
Bonjour à tous,

J'aurais encore besoin de vos lumières.
Je vous joins un exemple simplifié de mon fichier.
J'ai donc réussi à mettre les commentaires voulu, formatés comme je veux dans mes cellules. (commentaires en couleurs)
Sachant que les commentaires sont de la forme "xxxx-yyyy-zz" ou "xxxx-yyyy-zz/xxxx-yyyy-zz" avec zz qui fait 40 maximumnombre d'heures, par ex, mickey a fait 39h durant la semaine n°15, divisées en 9h sur l'affaire 1266-6000 et 30h sur l'affaire 1265-9000 ; loulou a ,lui, fait 14h sur l'affaire 1266-6000, xxxx qui correspond aux "affaires" en rouge gras, et yyyy qui correspond aux "codes" de chaque affaires.
(J'ai mis des couleurs, pour que ce soit plus compréhensble, j'explique pas toujours bien bien....)
Je voudrais, par colonne( ie par semaineici, pour l'ex, la colonne jaune)), faire une addition, dans chaque binome "affaire/code" (1264-4000) des heures faites par chaque personnage(30h par riri)c'est à dire, retrouver dans la cell correspondant à 1266-6000 (C21), le total des heures faites par tous pour le code 1266-6000, c'est à dire, ici, la somme des 14h de loulou et des 9h de mickey(en G21). ex : on retrouve les 5h de riri en 1266-4000 dans la cell jaune G20.
Et ça dans une macro.
Je pense qu'il faudrait mettre tous mes commentaires dans un tableau "interne" à la macro, puis le trier, faire les sous-totaux et redistribuer les données dans les bonnes cellules de la même colonne. Enfin qqch comme ça ??:confused:
Je saurais fractionner mes commentaires avec des formules (Gauche, droite, nbcar, etc...) mais dans les macros, je ne sais pas faire. Une idée ??:confused
Et aussi, comment redistribuer dans chaque cellule ??:confused:

Merci beaucoup d'avance !!
 

Pièces jointes

  • Classeur2.xls
    26.5 KB · Affichages: 80
  • Classeur2.xls
    26.5 KB · Affichages: 79
  • Classeur2.xls
    26.5 KB · Affichages: 75
Dernière édition:

klin89

XLDnaute Accro
Re : fractionnement et redistribution de données

Bonjour rastafouette,

Après 1/2 heure de décryptage, j'ai compris que la valeur en G11 était égale à 5 + 30 soit la somme des 2 nombres situés en fin des 2 parties de ton 1er commentaire et qu'il s'agissait d'heures :cool:

Donc pour le 2ème commentaire G13=14
pour le 3ème commentaire G15= 9 + 30 soit 39

Je continue le dépoussiérage.

La valeur en G21 est égale à 23 soit 14 + 9 soit les valeurs situées en fin de 1ère partie de ton 2ème et 3ème commentaires, d'où la même couleur de police en G21 que dans les 2 et 3ème commentaires.

Je commence à piger :D

Trêve de plaisanteries, j'arrête le décryptage, envoies nous quelque chose de plus cohérent si tu veux que l'on t'aide, la fin de ton post est un véritable charabia.

Amicalement klin89
 

smotty

XLDnaute Occasionnel
Re : fractionnement et redistribution de données

Bonjour à tous,

J'ai fini par comprendre ce que tu souhaite faire comme calcul.

Je joins un fichier exemple avec une macro.

Regarde les quelques cellules dans l'encadré à droite, j'ai tappé le nom de la macro et elle effectue les calculs.

La question que je me pause c'est: "où se trouve normalement le code à calculer ?"

car dans ton fichier il est dans les commentaires, est-ce la cas?

En tout cas ma fonction calcule la somme des heures comme dans l'exemple joint.

A+

smotty
 

Pièces jointes

  • Classeur2.xls
    35.5 KB · Affichages: 79
  • Classeur2.xls
    35.5 KB · Affichages: 79
  • Classeur2.xls
    35.5 KB · Affichages: 78

rastafouette

XLDnaute Junior
Re : fractionnement et redistribution de données

Klin89, j'ai modifié mon message en essayant d'eclaircir...

Smotty, je viens de regarder rapidement ta macro. Ce n'est pas exactement ce que je voulais, mais je ne connaissais pas la fonction split, et je pense qu'elle va en tout cas bien m'être utile. Ton tabV est un tableau qui se dimensionne comment ? Automatiquement selon la valeur de V ?

En tout cas, à tous les deux, merci beaucoup du temps que vous passez sur mon cas.

Danke gracia very beaucoup !
 

smotty

XLDnaute Occasionnel
Re : fractionnement et redistribution de données

Bonjour Rastafouette, Le forum,

TabV est un tableau qui se dimensionne effectivement automatiquement.

Les possibilités de la fonction split sont bien pratique lorsqu'on traite des chaines de caractère comme tu peux le voir.

Par contre, j'étais persuadé avoir compris, peux-tu préciser un peu mieux tes attentes et me dire ce que la fonction ne fais pas?
 

rastafouette

XLDnaute Junior
Re : fractionnement et redistribution de données

Bjr Smotty

C'est une fonctionn comme split que j'ai cherché vainment hier. J'avance bien ce matin.
J'ai modifié mon message de départ et essayé de clarifier. Je voudrais d'abord "splitter" mes commentaires pour pouvoir faire une addition des ehures, quand les 2 premiers champs sont identiques(1266-6000 par ex => addition de 14+9 de loulou et mickey).

Je pars pour l'instant dans un "splittage" des commentaires et j'essaie de les mettre tous dans un tableau(40,3) où j'ai tableau(1,1)=1266 // (1,2)=6000 // (1,3)=14 // (2,1)=1265 // (2,2)=9000 // (2,3)=30 etc, etc. avec 40 lignes au max.
Puis, répartir, dans les cellules en jaune, la somme des tableau(x,3) où on a tableau(x,1) et tableau (x,2) identiques.

J'ai tellement la tête dedans que j'ai du mal à être claire.
J'espère pouvoir vou éclaircir quand même...
 

smotty

XLDnaute Occasionnel
Re : fractionnement et redistribution de données

ne cherche plus, regarde le fichier joint.

J'ai modifié la fonction. regarde dans les totaux, le calcul est fait en fonction des cellules sélectionnées, de la colonne entrée, de la ligne de debut et de fin du champs dans lequel la recherche s'effectue.

La question que je me pose, où sont entrées les données car je les ai mises dans les cellules mais si j'ai bien compris elles sont dans le commentaire de la cellule:confused:

Tu peux accomoder le code en fonction des commentaires des cellules, si les infos sont en commentaire.


En attendant cette fonction fonctionne.

Sinon tu peux vérifier la présence d'un "/" avec: if instr(A1,"/")>0 then etc...

Mais tu n'a pas besoin de faire ce test, verifie juste que la chaine <>"". ça devrait suffir.
 

Pièces jointes

  • Classeur2.zip
    12 KB · Affichages: 40
  • Classeur2.zip
    12 KB · Affichages: 39
  • Classeur2.zip
    12 KB · Affichages: 36
Dernière édition:

rastafouette

XLDnaute Junior
Re : fractionnement et redistribution de données

YES !! Ca m'avance beaucoup ta fonction !! Merci beaucoup smotty !!
Le seul hic est que ta fonction utilise le contenu de la cellule, alors que je voudrais utiliser le contenu des commentaires des cellules (la cellule.value étant le nb d'heures par pers par semaine).

Je viens d'essayer de remplacer ton G.value par un F.text (F étant un Comment)mais ça ne me donne pas grand chose (en fait j'ai un #VALEUR dans ma cell). Je fais toujours la boucle dans "champs". Je pense que c'est ça qui doit bloquer.
Il faudrait peut-être redéfinir Champs avec les commentaires. Est-ce possible ? Comment ? Peut-on dire que "Champs" est une plage de Comment au lieu d'une plage de Range ??
 

smotty

XLDnaute Occasionnel
Re : fractionnement et redistribution de données

L'objet "comment" est assez difficile à manier car il est apparemment attaché à l'objet feuille.

Par exemple, pour lire les commentaires dans une feuille tu peux faire une boucle du genre:

for each C in activesheet.comments
msgbox C.text
next C

si tu as plusieurs colonnes, ça va balayer toutes les colonnes.

Selon moi, l'objet "commentaire" n'est pas destiné à cet usage. En général on effectue des calculs sur une cellule et non sur le commentaire.

Pourquoi ne pas mettre la valeur de ton commentaire dans une colonne adjacente?

Je continue les recherches mais si on ne peut pas, en lecture, lire le commentaire lié à une cellule, ça risque d'être compliqué...:confused:
 

smotty

XLDnaute Occasionnel
Re : fractionnement et redistribution de données

Je reviens sur ce que j'ai dit.

Tu as raison, mais je me suis pris la tête avec la bonne syntaxe, voici pour celui que ça peut interesser la bonne syntaxe:

Set Champs = Range(Cells(ldeb, Col), Cells(lfin, Col))
S = 0


For Each G In Champs
Set commentaire = G.Comment

If Not commentaire Is Nothing Then
Ctext = commentaire.Text
tabV = Split(Ctext, "/")
For i = 0 To UBound(tabV)
tabt = Split(tabV(i), "-")
If V = tabt(0) & "-" & tabt(1) Then
S = S + Val(tabt(2))
End If
Next i
End If

Next G
 

rastafouette

XLDnaute Junior
Re : fractionnement et redistribution de données

Je reviens !!

Un dernier hic.
La fonction fonctionne très bien, mais si je rajoute des commentaires dans ma partie haute du doc, en bas, ça n'est pas modifié. Je dois "rentrer" dans la cellule où il y a la focntion et faire entrée pour que ça se recalcule.

Est-ce possible que toutes mes cellules ayant cette fonction sommesheures se recalculent automatiquement ?
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 333
Membres
103 188
dernier inscrit
evebar