Bonjour à vous

avant toute chose une explication de la raison de ce post.
1) je suis en stage à madagascar et internet ici c'est pas l'adsl alors je galère à trouver la réponse à mon problème depuis hier sur les forums et autre (à 15minutes de chargement par page!).
2) l'aide excel vba n'est d'aucune utilité
3) j'ai épuisé toutes mes idées.
mon problème :
je fais un fichier excel de gestion de stock de produits chimiques. Un feuillet par produit (date, entrée/sortie, quantité, un ptit calcul pour le stock total ...) et un feuillet récapitulatif des stocks de la 30aine de produit en première page.

j'ai créé, grâce à l'option enregistrer, une macro qui créé une nouvelle feuille pour un nouveau produit en 1 clic et 4 champs (pour les variables, nom, quantité tout ça). De cette façon j'ai pu découvrir les fonctions de prog et de mise en forme, et restructurer le tout pour faire un truc propre et déjà pas mal abouti.

Pour chaque produit je calcule le bilan du stock en cours dans une case (sorte de Total en dessous du tableau), puis le stock à t-1 et à t-2 juste en dessous (pour voir les variations de stock et empêcher les ruptures).
Ces 3 cellules sont appelées dans le feuillet n°1 ("Etat général des stocks) pour chacun des produits.

Elles sont appelées par le nom des cellules (=Stock_Acide_Acétique_Concentré) et pas par leur référence (du style : ='Acide Acétique Concentré'!E13).

Le fait est que je n'arrive pas à donner un nom aux 3 cellules du feuillet du nouveau produit chimique concernées via la macro.

voilà mon code pour l'instant (ça sera plus parlant) :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        '// Ligne 6
Range("C6:D6").Select
    ActiveCell.FormulaR1C1 = "Stock en-cours"
Range("E6").Select
    ActiveWorkbook.Names.Add Name:=NomCellT0, RefersToR1C1:="='Nom_produit'!R6C5"
    ActiveCell.FormulaR1C1 = "=INDIRECT(""E""&ROW()-1)"
 
        '// Ligne 7
Range("C7:D7").Select
    ActiveCell.FormulaR1C1 = "Stock t-1"
Range("E7").Select
    ActiveWorkbook.Names.Add Name:=NomCellT1, RefersToR1C1:="='Nom_produit'!R7C5"
    ActiveCell.FormulaR1C1 = _
        "=IF(ISNUMBER(INDIRECT(""E""&ROW()-2)),INDIRECT(""E""&ROW()-2),INDIRECT(""E""&ROW()-1))"
 
        '// Ligne 8
Range("C8:D8").Select
    ActiveCell.FormulaR1C1 = "Stock t-2"
Range("E8").Select
    ActiveWorkbook.Names.Add Name:=NomCellT2, RefersToR1C1:="='Nom_produit'!R8C5"
    ActiveCell.FormulaR1C1 = _
        "=IF(ISNUMBER(INDIRECT(""E""&ROW()-3)),INDIRECT(""E""&ROW()-3),INDIRECT(""E""&ROW()-2))"
(Les cellules C et D sont fusionnées.)


Les variables sont construites de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Nom_produit = Cells(23, 8).Value
Nomproduit = Replace(Nom_produit, " ", "_")
NomCellT0 = "Stock_" & Nomproduit
NomCellT1 = "Stock_" & Nomproduit & "_t1"
NomCellT2 = "Stock_" & Nomproduit & "_t2"
(=> la cellule R23C8 est celle où on doit mettre le nom du nouveau produit avec de lancer la macro)

Dans l'exemple que j'utilise pour tester ma macro j'ai :
Nom_produit : "Produit Bidon"
ça donne :
Nomproduit : "Produit_Bidon"
NomCellT0 : "Stock_Produit_Bidon"
NomCellT1 : "Stock_Produit_Bidon_t1"
NomCellT2 : "Stock_Produit_Bidon_t2"

les variables sont dimensionnées As String



j'ai fait un débogage pas à pas et il veut pas donner de nom à mes cellules et je sais pas pourquoi.
pourtant dans le feuillet "Etat général des stocks", excel appelle la bonne valeur par la bonne formule (=Stock_Produit_Bidon).


La macro continue quand même, et il se passe un truc qui pourra vous éclairer

la macro ajoute la ligne de récap du nouveau produit dans la liste (au sens liste excel) de la première feuille (Etat général des stocks).

elle doit ajouter
la variable "Nom_produit" en guise de nom (col A)
les valeur "Stock_..." t-2, t-1 et t (col B,C et D)
puis l'unité de mesure (mais on s'en tape, ça sa marche)

les variables :
"Stock_Produit_Bidon"
"Stock_Produit_Bidon_t1"
"Stock_Produit_Bidon_t2"
ne sont plus définies, excel me demande d'ouvrir un fichier, puis de selectionner un onglet. ensuite j'ai remarqué qu'il donne à ces 3 variables les valeurs des cellules qu'elles étaient censées nommer (et l'onglet qui vient d'être créé n'apparait pas dans la liste)

dans le code, les cellules qui doivent recevoir le nom sont : R6C5, R7C5 et R8C5 (E6,E7,E8)

et là je suis largué

je m'en remets à vous et à votre aide!
merci d'avance