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 :

Appeler le nom d'une feuille + Formule INDIRECT en VBA [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2018
    Messages : 10
    Par défaut Appeler le nom d'une feuille + Formule INDIRECT en VBA
    Bonjour,

    Après des recherches sur internet et malgré mes maigres connaissances en VBA, je pense avoir atteint mon seuil d'incompétences.

    J'ai un fichier Excel une feuille Tableau récapitulatif et 12 feuilles (une par mois) dont le nombre de lignes est variables.

    Une cellule dans la feuille Tableau est à renseigner par l'utilisateur et va chercher les valeurs du mois concerné.

    Exemple : si l'utilisateur renseigne 10, il ira chercher les valeurs dans la feuille CP10 via une formule INDIRECTE.

    1) Nombre de lignes variables chaque mois

    Comme le nombre de lignes varie chaque mois, j'efface tout le contenu de la feuille Tableau sauf la ligne 1 Libellé et la ligne 2 qui contient les formules.

    Et j'utilise la macro ci-dessous pour faire défiler les formules dans Tableau en fonction du nombre de lignes dans la feuille mensuelle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    '    Tableau_LastRow = Sheets("CP10").Range("A3").End(xlDown).Row
        Sheets("Tableau").Select
        Range("B12:T12").Select
        Selection.AutoFill Destination:=Range("B12:T" & Tableau_LastRow)
    Seulement ce n'est pas pratique car l'utilisateur devrait tous les mois aller dans la macro remplacer CP10 par CP11 pour avoir les données de novembre dans le Tableau récapitulatif.

    Existe-t-il un moyen de déclarer la cellule ? en variable ?

    2) Formule INDIRECT en VBA

    Comme j'appelle mes feuilles CPxx, je dois intégrer une formule INDIRECT pour qu'il prenne "CP" + le chiffre du mois mais je n'ai pas trouvé comment faire.

    Après si c'est impossible, il y a la solution que je renomme mes feuilles de CPxx à xx.

    Merci d'avance pour votre aide !!

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 569
    Par défaut
    Bonjour

    Tout cela est faisable de façon plus simple par PowerQuery, en add on sur 2013, intégré à partir de 2016.

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir
    si j'ai compris tu peux essayer avec la méthode suivante :

    J'ai un classeur qui rassemble à ça, donc j'ai fait un combobox avec les noms des feuilles qui sont en même temps les mois (exemple : janvier_2018, février_2018 .....)
    et suite à la validation de ce choix, j'envoie l valeur du combobx à la cellule D2 par exemple

    et je déclare mon tableau comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Set sh = ThisWorkbook.Sheets(ThisWorkbook.Sheets("ENERGIE").Range("D2").Text)
     
    '--- à partir de ce moment là .. la variable sh pointe sur la feuille du classeur contenant ce code , et dont le nom est contenu dans la feuille Energie en cellule D2 ..
     
     
    tablo = sh.Range("A2", "G" & sh.Range("G" & sh.Rows.Count).End(xlUp).Row)
    '......
    For i = LBound(tablo, 1) To UBound(tablo, 1)
        If tablo(i, 1) = "60607521" Then
            EauIndustrielleGCT = EauIndustrielleGCT + tablo(i, 5)
        End If
    Next i
    Si ça te conviens en peux avancé ensemble
    BONNE CONTINUATION

  4. #4
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2018
    Messages : 10
    Par défaut
    Merci 78chris, j'ai mis un pouce vert mais je ne suis pas sûr que mon service info valide. Je verrais.

    Merci BENNASR. Oui c'est ça, sauf que c'est un fichier où il y a déjà des macros dessus et j'ignore si la combobox sur la cellule D2 passera pour moi.

    En fait il y a juste une ligne à modifier : Tableau_LastRow = Sheets("CP10").Range("A3").End(xlDown).Row.

    "CP10" qui serait remplacé par =INDIRECT("CP";celluleD2) mais en VBA ^_^"

    Comme la cellule D2 que j'ai pour renseigner le mois est déjà renommée en "Mois" par les autres macros, je suppose qu'il faut que je la déclare par un Dim Mois as "??????"

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    tester ça :
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2018
    Messages : 10
    Par défaut
    Merci BENNASR !

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

Discussions similaires

  1. [XL-2010] Paramétrer le Nom D'une Feuille Dans une Formule
    Par Snieg53 dans le forum Excel
    Réponses: 2
    Dernier message: 04/02/2018, 03h48
  2. Réponses: 1
    Dernier message: 22/04/2016, 17h33
  3. Comment appeler le nom d'une cellule dans un programme VBA
    Par Sandra_R dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/11/2015, 16h38
  4. Réponses: 1
    Dernier message: 21/02/2014, 15h52
  5. [XL-2007] Formule avec le nom d'une feuille
    Par Loki83 dans le forum Excel
    Réponses: 2
    Dernier message: 07/06/2011, 11h24

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