IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Donner le nom d'une variable VBA à une cellule [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut Donner le nom d'une variable VBA à une cellule
    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

  2. #2
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Par défaut


    "la solution n'est jamais là où tu pense qu'elle peut se trouver"

    j'ai trouvé mon erreur, c'était pas le nom de la cellule le problème mais le nom du feuillet
    j'arrive pas à supprimer mon post, mais je me dit que ça pourra aider quelqu'un qui veut programmer la création de feuillets :


    c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Names.Add Name:=NomCellT0, RefersToR1C1:="='" & Nom_produit & "'!R6C5"
    et non ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveWorkbook.Names.Add Name:=NomCellT0, RefersToR1C1:="='Nom_produit'!R6C5"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Affecter une variable d'une classe C# à une variable Javascript
    Par SultanGeek dans le forum C#
    Réponses: 0
    Dernier message: 20/06/2015, 20h42
  2. Réponses: 1
    Dernier message: 10/02/2010, 15h35
  3. Recuperer le nom d'une variable dans une variable String
    Par aliwassem dans le forum Langage
    Réponses: 11
    Dernier message: 23/10/2009, 12h38
  4. Réponses: 3
    Dernier message: 26/09/2008, 10h41
  5. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo