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 :

VBA Formule dépendante d'onglets variables


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mai 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Mai 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut VBA Formule dépendante d'onglets variables
    Bonjour à tous,

    Je suis amené à travailler sur une macro excel. Cela fait très longtemps que je n'en avais pas fait une ! Cependant, j'ai quelques petits problèmes tout bête à règler.

    Au cas ou j'aurais plusieurs questions, j'explique ci-dessous tout le processus.

    Idée du fichier : C'est un fichier de "consolidation d'informations" relatives à plusieurs sociétés, afin de pouvoir les comparer entre elles. Ainsi, j'ai déjà un fichier par société comportant 1 onglet rempli. Chaque société remplisse donc le même tableau dans 1 fichier.

    Le fichier de consolidation est pour le moment doté de 2 onglets : 1 onglet outil et 1 onglet consolidation (même tableau que celui rempli par les sociétés). Prenons un exemple où j'aurais que 20 sociétés au maximum et parfois même moins.

    L'onglet "outil" me permet de dissocier les étapes de création et d'ajouter des variables selon les sociétés que je souhaite comparer entre elles.
    1ière étape : Une cellule retrace le chemin du fichier selon le numéro de la société en B2-->B21. Le numéro de la société est donc une variable inscrite dans la cellule C2-->C21 que je rentre à la main. Donc il y a 20 boutons qui ont chacun une macro (la même quasiment). Chaque bouton me permettent d'aller chercher le fichier de la société que je souhaite rentrer dans le comparable, copier l'onglet de leur fichier indépendant après l'onglet "consolidation" et renommer l'onglet à l'aide de la cellule C2-->C21

    Quand cette copie des onglets est faite pour toutes les sociétés choisies dans le comparable. J'arrive à l'étape 2, le bouton 21 qui me permet de lancer le calcul de consolidation, dans l'onglet "consolidation". J'en suis donc à cette étape.

    Cette étape doit inscrire dans la cellule D10 de l'onglet "consolidation", la somme des cellules D10 des onglets copiés des sociétés, en sachant que le nom de ces onglets sont tous répertoriés dans l'onglet "outil" cellule C2-->C21 puisque mes permières macro ont changé les noms d'onglets par rapport à ces cellules. Aujourd'hui, je bloque à cause des noms des onglets qui sont variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton21_Click() 
    Sheets ("outil") .Select 
    Range("D10") .Select 
    ActiveCell.formulaR10C4 = _ 
    "=If(isempty(' " & Sheets("outil") & " ' ! R[2]C[3]);0;INDIRECT(' " & Sheets ("outil") ! R[2]C[3] & " ' ! R[10]C[4]))" + REPRODUCTION DU CALCUL POUR LES AUTRES ONGLETS 
    End Sub
    Réponse = erreur d'execution '438' Propriété ou méthode non gérée par cet objet

    La première partie du calcul correspond à l'existance ou non d'un onglet, puisque la creation de l'onglet dépend de l'existance d'une valeur dans cette cellule C2. S'il n'y a pas d'onglet, ça donne 0, s'il y a une valeur, je lui demande d'aller chercher la valeur de la cellule D10 de l'onglet correspondant (le nom se trouvant la encore dans cette cellule c2).

    Ou se trouve mon erreur ? On peut m'expliquer ?

    Je note que j'ai un petit souci pour savoir ce qui fait partie du paramètre excel (cellule C10) et ce qui fait partie du paramètre VBA (cellule R[10]C[4]). Est ce un problème ? Mon excel est en version française, est ce que ça change quelque-chose pour le nom des formules, par exemple isempty() et estvide() ?

    Je vous remercie par avance de votre aide !

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Cette propriété n'existe pas:
    C'est Qui signifie que dans la formule on va utiliser la notation R1C1 plutôt que A1.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    A ta place, pour simplifier le code j’éviterais la mise en formule.
    Voici un exemple de codage qui remplit la fonction attendue, à savoir effectuer le cumul des valeurs des cellules D10 des feuilles identifiées dans la plage C2:C21 de la feuille "outil".
    Le résultat est inscrit dans la cellule D10 de la feuille "consolidation".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton21_Click()
    Dim NameSh As String
        For Each Cel In Worksheets("outil").Range("C2:C21")
            NameSh = CStr(Cel.Value)
            If NameSh <> "" Then
                With Worksheets("consolidation")
                    .Range("D10") = .Range("D10") + Worksheets(NameSh).Range("D10")
                End With
            End If
        Next Cel
    End Sub
    Cordialement.

Discussions similaires

  1. [XL-2007] Consolidation nombre d'onglets variable par vba
    Par lps02 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 16/01/2014, 00h32
  2. [Toutes versions] formule vba avec nom de feuille variable
    Par leptitdave dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/08/2009, 11h30
  3. [VBA] Formule avec variables
    Par tuzoenduro dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/02/2008, 17h40
  4. [VBA] taille max d'une variable public
    Par gigs dans le forum Général VBA
    Réponses: 9
    Dernier message: 23/11/2005, 15h27
  5. [VBA] Mettre un tableau de variable en paramètre
    Par loacast dans le forum Général VBA
    Réponses: 10
    Dernier message: 15/11/2005, 11h28

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