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
--
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...
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 ?
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...
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é...
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
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
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)
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
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)
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
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...
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.
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 !