Utiliser le nom d'une feuille

Zepioutas

XLDnaute Nouveau
Bonjour à tous,

Je me retrouve face à un problème pour mettre en place une macro répondant au problème suivant :
1) Choix d'un mois par l'utilisateur parmi une liste (la forme est en fait du texte reprenant la forme "avr-09"). Une feuille de données pré-existante porte comme nom le mois en question. Dans cette feuille figurent des nom de projets avec des heures travaillées par personne et par jour.
2) Création de nouvelles feuilles utilisant le nom du mois choisi.
3) Dans la nouvelle feuille créée, utilisation d'une sommeprod pour rapatrier les données à partir de la feuille du mois pré-existante. Objectif : avoir le nombre d'heures travaillées sur le mois par projet.

C'est pour ce 3ème point que ça bloque, la formule ne passe pas. .

Voici les éléments de la macro, je met tous les éléments pour que vous puissiez mieux comprendre et pour info s'il y a des besoins :

Public MoisChoisi As String
Public nomfeuille As String
Public Feuille As Worksheet

1 et 2) MoisChoisi = Range("D3").Value 'Correspond à la cellule où figure le mois choisi
If Range("D3") = "" Then
MsgBox ("Indiquer un mois")
Range("D3").Select
ElseIf Range("D3") <> "" Then
Sheets.Add.Select
ActiveSheet.Name = "Bilan Pjt" & " " & MoisChoisi
nomfeuille = ActiveSheet.Name
Set Feuille = ActiveSheet
For i = 1 To Sheets.Count 'Compte le nombre de feuilles du classeur
ActiveSheet.Select
ActiveSheet.Move After:=Sheets(i) 'Déplace la feuille créée après la dernière feuille.
Next i
End If

3) Range("C1") = "Heures Travaillées"
For k = 2 To Range("B1").End(xlDown).Row 'J'ai en colonne B les noms de projet qui sont sur la feuille pré-existante.
Cells(k, 3).Select
Cells(k, 3) = _
"=SUMPRODUCT(('" & MoisChoisi & "'!R2C2:R2000C2=RC2)*('" & MoisChoisi & "'!R2C3:R2000C3))"
Next

Le problème vient peut être de la façon de nommer la feuille à partir de laquelle les données sont rapatriés. Je suis obligé d'utiliser un nom variable.
La méthode ci dessus a fonctionné une fois, puis plus jamais...

Voilà, si vous aviez une idée pour m'aider, parce que là je bloque !
 

jp14

XLDnaute Barbatruc
Re : Utiliser le nom d'une feuille

Bonjour Zepioutas
On peut simplifier la procédure
Bonjour à tous,


1 et 2) MoisChoisi = Range("D3").Value 'Correspond à la cellule où figure le mois choisi
If Range("D3") = "" Then
MsgBox ("Indiquer un mois")
Range("D3").Select
ElseIf Range("D3") <> "" Then
Sheets.Add.Select
ActiveSheet.Name = "Bilan Pjt" & " " & MoisChoisi
nomfeuille = ActiveSheet.Name
Set Feuille = ActiveSheet
For i = 1 To Sheets.Count 'Compte le nombre de feuilles du classeur
ActiveSheet.Select
ActiveSheet.Move After:=Sheets(i) 'Déplace la feuille créée après
en écrivant
ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Bilan Pjt" & " " & MoisChoisi


JP
 

Caillou

XLDnaute Impliqué
Re : Utiliser le nom d'une feuille

Bonjour,

Pas tout bien compris (c'est un peu long!), mais dans ta macro, tu nommes ta feuille "Bilan Pjt" suivi du mois et après dans la formule on ne retrouve plus le "Bilan Pjt" mais juste la variable MoisChoisi...

Caillou
 

Zepioutas

XLDnaute Nouveau
Re : Utiliser le nom d'une feuille

Bonjour,

JP14 : merci c'est effectivement plus simple (en mettant "after" au lieu de "before", j'arrive au résultat désiré).

Caillou : Désolé pour la longueur, j'ai voulu bien décrire :)
Je nomme une feuille Bilan Pjt & MoisChoisi.
Il existe déjà une autre feuille nommée 'MoisChoisi"
Je souhaite utiliser la fonction pour rappatrier des données depuis la feuille 'MoisChoisi' sur la feuille créée 'Bilan Pjt & MoisChoisi'.

La macro marche bien jusqu'à la sommeprod...
 

Caillou

XLDnaute Impliqué
Re : Utiliser le nom d'une feuille

Re,

Quand je disais que c'etait un peu long, ça n'était en aucun cas un reproche!

Par contre quand tu dis que ça marche pas, c'est quoi qui marche pas :
la macro écrit la formule mais celle ci me marche pas
ou bien
la macro n'arrive pas à écrire la formule
dans ce cas un fichier joint serait le bienvenu

j'ai essayé le code correspondant au sommeprod et ça a marché !

a te lire

Caillou
 

Zepioutas

XLDnaute Nouveau
Re : Utiliser le nom d'une feuille

Re Caillou,

En fait sur mon fichier réel, la macro ne veut pas du tout s'exécuter.
Sur le fichier que j'ai construit pour exemple, la macro ne ramène pas de valeurs, et dans certains cas de figure je retrouve la même erreur que dans mon fichier réel (formule sommeprod surlignée en jaune).

De même le comportement peut différer si j'utilise la macro reporting qui enchaîne les actions, ou que je fais successivment les différentes macros...

Je ne comprend pas d'où vient cet écart de comportement, serait il possible qu'au bout d'un moment la macro ne passe plus ?

Voivi en tout cas un fichier exemple, j'avoue que plus j'avance et plus j'y perd mon latin-VBA :confused:

A te / vous lire...:D
 

Pièces jointes

  • Exemple3.xls
    46.5 KB · Affichages: 59
  • Exemple3.xls
    46.5 KB · Affichages: 61
  • Exemple3.xls
    46.5 KB · Affichages: 66

Caillou

XLDnaute Impliqué
Re : Utiliser le nom d'une feuille

Re,

Ok, pour moi la macro fonctionne sauf que pour moi, la formule SOMMEPROD ne prend pas la colonne des heures (col F).
Il faudrait modifier la ligne de code comme ceci :
Cells(k, 3) = "=SUMPRODUCT(('" & MoisChoisi & "'!R2C2:R2000C2=RC2)*('" & MoisChoisi & "'!R2C6:R2000C6))"

Caillou
 

Discussions similaires

Statistiques des forums

Discussions
312 232
Messages
2 086 461
Membres
103 219
dernier inscrit
Akyrah