Comment créer un bilan via un classeur Excel2013

Résolu
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 - 9 sept. 2014 à 08:26
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 - 10 sept. 2014 à 16:49
Bonjour le forum ;)


Donc voilà, j'ai un classeur excel nommé "RapHebdo2014", développé grâce à ce forum, et je vous en remercie énormément, j'ai acquis certaines compétence (je vous rassure, pas toute... euh...non... pas très rassurant en faite ;) )...bref...

Je vous explique ce que je voudrais mettre en place :

Pour ceux qui ne connaissent pas mon fichier, je vous invite à lire mes postes pur vous faire une idée.

Ce fichier consiste à la création de rapports d'heures hebdomadaires, elles sont individuelle et les feuilles sont nommées en fonction d'une cellule... chaque feuilles contient donc un cellule contenant le total d'heure par intervenant, par semaine... Je voudrais maintenant créer (via un bouton déjà existant dans ma barre d'outil nommé faire le bilan). Lorsque je clique sur ce bouton, il m'ouvre un fichier nommé "RapHebdoBilan" prenant en charge les macros (car il y en aura surement dessus aussi par la suite) et, il importe directement les données suivantes :

Le noms des feuilles des intervenants avec leur total d'heure en fonction de la semaine, donc si la semaine change, nouvelle colonne. Les noms des colonnes seraient :

Nom des intervenants, Semaine N° (qui sera changer à chaque nouvelles semaine)...

Si je ne suis pas assez claire dans mes explications, n'hésitez pas (je sais déjà qui va me dire d'être plus précis :) ) pour rire bien-sure.

Merci pour vos pistes et conseil...
Bonne journée à tous
Christian
--

6 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
9 sept. 2014 à 08:48
Bonjour
Et bien non..je ne te demanderai pas
d'être plus precis..... par contre... je voudrai savoir :
Quelle est LA question. ...?
Quel est le souci que tu rencontres ?
Quel code as tu au moins déjà essayé ?

Ah ben si en fait.... c'est presque pareil... rire...
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 sept. 2014 à 09:13
Salut jordan45,

Bon déjà, je suis mort de rire... je le savais !!

Pour être franc j'ai regardé plusieurs forum ayant pour le moins traité ce sujet (à peu de chose près)... mon poste demande juste une piste, voici un peu de détails :

Je cherche comment récupérer le nom des feuilles de RapHebdo dans une colonne d'un autre fichier avec leur total d'heure associées par intervenants... je pense qu'il doit y avoir un truc du genre :

For Each feuil in Worksheet..... quelquechose
mais pour cela il faurait, je pense que le bilan se trouve dans le classeur en cours (la sources)... si bien-sûre j'ai bien compris le fonctionnement). Mais en le mettant exterieur à RapHebdo, je peux le réutiliser...
--Mais je n'ai pas encore toutes les astuces (voir même pas le niveau)... le sommet est encore loin... (non... c'est pas drôle).

Mais je ne veux en aucun cas que l'on me donne les réponses, tu t'en douteras... vous en avez déjà assez fait pour RapHebdo2014...

Pour être bref...

Je clique sur "Faire le bilan", la macro récupère le nom des feuilles avec les totales d'heures associées et me met ça sous forme de tableau dans un fichiers nommé. A noter que si nouvelle semaine, nouvelle colonne dans ce même fichier bilan...

Donc non... pas encore essayé de codé... pas encore de soucis rencontré (logique ;) )...

As tu été voir la solution posté pour ma progressBar ?

Merci
Bonne journée,

Christian
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 sept. 2014 à 09:41
Re,

J'ai trouvé ça :

Dim sh As Worksheet

For Each sh In ThisWorkbook.Sheets

MsgBox sh.Name

Next

Je vais voir comment ça fonctionne ??
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
9 sept. 2014 à 09:49
mon poste demande juste une piste
[...]
Je cherche comment récupérer le nom des feuilles de RapHebdo dans une colonne d'un autre fichier avec leur total d'heure associées par intervenants..
Ben.. comme tu le dis.. avec une boucle for each....
Mais bien sûr;. il te faut OUVRIR le second classeur ( voir la méthode OPEN)...

Mais pour te répondre.. il faut soit qu'on te donne le code (tout fait)... soit qu'on te propose l'algo .... mais là... ce n'est pas vraiment le but de ce forum...

Et puis niveau Algo... c'est plutôt assez simple... tu devrais pouvoir trouver par toi même non ?
Sachant que... si tu as l'algo... tu sais QUOI chercher comme commandes ... et le net te donner toutes les réponses...

En gros tu veux (ça c'est de l'algo) :
1 - Ouvrir un fichier (open)
2 - Parcourir chacune de ses feuilles (la boucle for each)
3 - Lire une cellule (celle contenant le nom de la feuille par exemple => Range .value ou Cells .value)
4 - Mettre cette valeur dans ton classeur ( là aussi.... .value )
5 - Fermer le classeur



Enfin bon... voila un exemple te montrant différentes choses... comme le OPEN et le FOR EACH....
Sub manipulerAutreClasseur()

Dim wk1 As Workbook
Dim wk2 As Workbook
Dim sh As Worksheet
Dim Nom_Feuille As String
Dim ClasseurPath As String
    ClasseurPath = "c:\TEMP\test.xlsx"
Dim l As Integer
    l = 1
Set wk1 = ThisWorkbook

'ouverture du classeur
Set wk2 = Workbooks.Open(ClasseurPath)

For Each sh In wk2.Worksheets
    Nom_Feuille = sh.Name
    'Copie des noms des feuilles dans une colonne
    wk1.Sheets(1).Cells(l, 1).Value = Nom_Feuille
    l = l + 1
Next


'Fermeture du second classeur
wk2.Close

End Sub




As tu été voir la solution posté pour ma progressBar ?
Oui... et même si ça fonctionne... ce n'est surement pas LA solution à utiliser....
Tu as occulté tout ce qu'on t'a dit à propos de la division par zéro (cause de tes soucis)...
Mais bon... tu as mis ta question en RESOLU... donc n'en parlons plus...

0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 sept. 2014 à 09:58
oui j'ai occulté, c'est une réponse trouvée sur un forum... qui permettait de passer outre la div par zéro... après..oui... ce n'ai pas LA solution... mais un contournement du problème... en attendant... ça fonctionne... lol...

Là je part bosser donc je bosserais sur tout ça ce soir... et quand j'aurais réalisé toutes ces choses... et bien je reviendrais avec un travail réalisé...

Merci pour tout jordan45,

Passe une bonne journée

Christian
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
Modifié par cco86260 le 9/09/2014 à 18:41
Re,

Bon je suis dessus là... j'ai déjà mal à ma pauvre tête (du moins ce qu'il reste)...lol...

Pour le chemin du fichier, pas de soucis (rien de très personnel d'ailleurs)


Dim rep As String
rep = Environ("USERPROFILE") & ""
Dim ClasseurPath As String
ClasseurPath = ClasseurPath = rep & "\Documents\POINTAGES\bilanHebdo.xlsm"

J'essais donc de comprendre ce que tu m'as indiqué, mais je crois que je bug plus que mon PC,

J'ai pour le moment commenté la fermetture du wk2 pour voir ce qu'il se passait dedans avec le code que tu m'a fourni, juste pour renvoyé le nom d'une feuille de raphebdo vers bilanHebdo... ba il ne me le renvoi pas...

Je commence mal...lol


Bonne soirée,

Christian
0

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

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
9 sept. 2014 à 19:32
J'ai pour le moment commenté la fermetture du wk2 pour voir ce qu'il se passait dedans avec le code que tu m'a fourni, juste pour renvoyé le nom d'une feuille de raphebdo vers bilanHebdo... ba il ne me le renvoi pas...
Et que se passe t' il ?
Tu as testé en mode pas à pas ??

Ton second classeur s'ouvre ?

Dim rep As String
rep = Environ("USERPROFILE") & ""
Dim ClasseurPath As String
' Tu as une erreur sur cette ligne :
'ClasseurPath = ClasseurPath = rep & "\Documents\POINTAGES\bilanHebdo.xlsm"
ClasseurPath =  rep & "\Documents\POINTAGES\bilanHebdo.xlsm"


Ce qui te donne :
Dim wk1 As Workbook
Dim wk2 As Workbook
Dim sh As Worksheet
Dim Nom_Feuille As String
Dim ClasseurPath As String

Dim rep As String
     rep = Environ("USERPROFILE") & ""

     ClasseurPath =  rep & "\Documents\POINTAGES\bilanHebdo.xlsm"

Dim l As Integer
    l = 1
Set wk1 = ThisWorkbook

'ouverture du classeur
Set wk2 = Workbooks.Open(ClasseurPath)

For Each sh In wk1.Worksheets
    Nom_Feuille = sh.Name
    ' Copie des noms des feuilles de WK1  dans
    ' la feuille 1.. dans la colonne A  de WK2
    wk2.Sheets(1).Cells(l, 1).Value = Nom_Feuille
    l = l + 1
Next

0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 sept. 2014 à 19:42
Re,

oui mon classeur s'ouvrait, j'ai copier coller vers le forum, j'ai pas fait attention, mais le code n'était pas comme ça...

Donc en fait le classeur s'ouvrait, pas de soucis, mais rien ne s'inscrivait dedans...

Je vais tester ça et reviens... mais avant... a la soupe...

Bon appetit si tu n'as pas mangé...
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
10 sept. 2014 à 12:56
Salut jordane45,

Comment vas ?

Ton code fonctionne pour les noms des feuilles, nickel... je m'attaque maintenant à la suite (le nombre d'heure semaine par intervenant, je pense que la methode est la même, mais faut il que je remette un for each ? car je dois lui dire que pour chaque feuille de wk1, il doit me récuperer la valeur de la case total et me la mettre dans la 2eme colonne de wk2 (c'est l'algo...lol), ce qui donnerait :


Dim total As String
total = wk1.Sheets(1).Range("CW18").Value
wk2.Sheets(1).Cells(l, 2).Value = total

J'ai du mal avec ça... car comme tu t'en doute... ça ne fonctionne pas, ceci dit, ne me donne pas la solution, dis moi juste ce qui en va pas dans la syntaxe, que je fasse travailler mes petits neurones :) .

Un jour je serais bon... mais faut pas être pressé...lol...

Bonne journée , moi je vais dans mes galeries (vive les inspections...lol)

Christian
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
10 sept. 2014 à 13:02
hop hop hop

J'ai trouvé:

For Each sh In wk1.Worksheets

Nom_Feuille = sh.Name
'Copie des noms des feuilles dans une colonne
wk2.Sheets(1).Cells(l, 1).Value = Nom_Feuille
total = sh.Range("CW18").Value
'copie des nombres totales d'heure par semaine
wk2.Sheets(1).Cells(l, 2).Value = total
l = l + 1
Next

ça fonctionne ça...mdr... j'ai un neurones qu'à fais acte de présence ... lol
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
10 sept. 2014 à 15:15
Bonjour,
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
10 sept. 2014 à 16:05
Ba je veux bien, mais c'est pas tout fini sur ce sujet... mais dès que ce sera le cas... je clôturerais ce sujet...

A toute, je suis en mode réflexion...lol

Christian
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
10 sept. 2014 à 16:18
c'est pas tout fini sur ce sujet...

Attention.... sur ce site.. On ne pose QU' UNE question par discussion......

Même si tes prochaines questions concernent ce même développement... il n'en reste pas mois que ce sera de NOUVELLES questions.... et donc... il faudra ouvrir de nouvelles discussions !

Le but étant de faciliter la recherche sur le site....
Sinon.. imagine...tu poses toutes les questions relatives à ton programme ( ben..c'est lié vu que c'est le même programme....) dans une seule discussion.....
Et là... comment... un internaute cherchant de l'aide sur un thème précis pourrait s'y retrouver si il doit lire 250 posts dans un même sujet ... ???
C'est pour ça que pour CHAQUE question..il est demandé d'ouvrir une nouvelle DISCUSSION.

0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
10 sept. 2014 à 16:49
Bon d'accord, pour moi c'était le même sujet, mais en relisant, effectivement c'est le même sujet mais un problème différent... c'est pourtant pas la première fois que la remarque m'est faite, je ne recommencerais donc plus... parole !

J'ai donc ouvert un nouveau poste.

Merci de ta patience et de ton aide

Christian
0
Rejoignez-nous