Comment créer un bilan via un classeur Excel2013 [Résolu]

cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 9 sept. 2014 à 08:26 - Dernière réponse : cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention
- 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
--
Afficher la suite 

Votre réponse

15 réponses

jordane45 21413 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 juin 2018 Dernière intervention - 9 sept. 2014 à 08:48
0
Merci
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...
Commenter la réponse de jordane45
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 9 sept. 2014 à 09:13
0
Merci
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
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 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 ??
Commenter la réponse de cco86260
jordane45 21413 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 juin 2018 Dernière intervention - 9 sept. 2014 à 09:49
0
Merci
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...

cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 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
Commenter la réponse de jordane45
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - Modifié par cco86260 le 9/09/2014 à 18:41
0
Merci
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
Commenter la réponse de cco86260
jordane45 21413 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 juin 2018 Dernière intervention - 9 sept. 2014 à 19:32
0
Merci
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

cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 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
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 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
jordane45 21413 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 juin 2018 Dernière intervention - 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
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 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
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 10 sept. 2014 à 16:15
Par contre, dis moi, je cherche a cacher les feuilles "matrice" et "vierge" pour qu'elles fassent pas parti du bilan.. voici le code :

Sub bilan(control As IRibbonControl)

'Ici je déclare mes variables
Dim wk1 As Workbook
Dim wk2 As Workbook
Dim sh As Worksheet
Dim Nom_Feuille As String
Dim total As String
Dim hzc As String
Dim trpen As String
Dim nuit As String
Dim rep As String
Dim ClasseurPath As String
Dim l As Integer

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

Set wk1 = ThisWorkbook
l = 4
'ouverture du classeur
Set wk2 = Workbooks.Open(ClasseurPath)

For Each sh In wk1.Worksheets

Nom_Feuille = sh.Name
' c'est ici que je cherche a cacher les feuilles... mais ça ne fonctionne pas, il me les affiche quand même dans le bilan...
Select Case UCase(sh.Name)
Case "MATRICE", "VIERGE"
Case Else
End Select

'Copie des noms des feuilles dans une colonne
wk2.Sheets(1).Cells(l, 1).Value = Nom_Feuille
'copie des nombres totales d'heure de chantiers
total = sh.Range("CW18").Value
wk2.Sheets(1).Cells(l, 2).Value = total
'copie des nombres totales d'heures en ZC
hzc = sh.Range("CW21").Value
wk2.Sheets(1).Cells(l, 3).Value = hzc
'copie des nombres totales de travaux pénibles
trpen = sh.Range("CW23").Value
wk2.Sheets(1).Cells(l, 4).Value = trpen
'copie des nombres totales d'heure de nuits
nuit = sh.Range("CW25").Value
wk2.Sheets(1).Cells(l, 5).Value = nuit
l = l + 1
Next


'Fermeture du second classeur
'wk2.Close

End Sub

Merci m'sieur... ;)

Sinon le reste fonctionne, je cherche juste à améliorer le tout... je ferais un autre post au cas ou...

Merci pour tout

Christian
Commenter la réponse de jordane45
jordane45 21413 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 juin 2018 Dernière intervention - 10 sept. 2014 à 16:18
0
Merci
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.

cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 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
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.