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 :

Une question concernant la mise à jour automatique des formules Excel en fonction du nombre de lignes


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut Une question concernant la mise à jour automatique des formules Excel en fonction du nombre de lignes
    Bonjour à tous,



    Je voudrais poser une question concernant les forumules Excel qui peuvent être mises à jour
    automatiquement quand le contenu de la plages des cellules desquelles elles dépendent change.

    Voici ma situation. Pour l'instant j'ai un fichier Excel avec deux onglets "stat" et "données".
    Dans l'onglet "stat" comme le nom indique j'utilise des formules prédéfinies dans Excel du genre
    MAX, MIN, SOMME, MOYEN, etc. afin de faire des statistiques sur les données de l'onglet "données".

    L'onglet "données" contient des données d'utilisateurs qui se connectent à un système SAP et les
    statistiques que je fait consistent principalement à des informations liées aux connexions, par
    exemple combien de fois un utilisateur s'est connecté au système, quelles étaient les transactions
    qu'il/elle a exécutées et combien de fois, durée de chaque connexion, etc. Actuellement j'arrive à me débrouiller
    avec des formules Excel pour effectuer mes calculs.

    Maintenant le problème c'est que le contenu de l'onglet "Données" est rafraîchi au début de chaque
    semaine et l'administrateur du système m'envoie un nouveau fichier d'extraction SAP selon lequel
    je dois à nouveau faire un reporting dans l'onglet "stat". Évidemmment chaque semaine, je n'ai pas
    nécessairement le même nombre de lignes (dans l'onglet "Données") que la semaine précédente car
    le contenu varie selon la charge de travail des utilisateurs qui peut très bien être différente d'une
    semaine à l'autre. Voici un example:

    Supposons que la semaine dernière dans l'onglet "données" j'avais 23000 lignes et
    dans l'onglet stat j'avais la formule suivante dans la cellule A2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A2 = SOMME(donnees!$A$1;donnees!$A$23000)
    Maintenant si cette semaine, j'ai 25000 lignes au lieu de 23000 lignes, cela revient à dire que
    je dois aller manuellement changer la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A2 = SOMME(donnees!$A$1;donnees!$A$25000)
    Vu le fait, que j'ai un nombre important de formules, cela prend beaucoup du temps. Je crois
    que mon approche n'est pas bonne et je voulais vous demander de me donner votre avis pour savoir
    comment automatiser le changement de mes formules en fonction du nombre des lignes dans l'onglet
    données.

    J'ai même défini une fonction qui renvoie le nombre des lignes dans l'onglet "données"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public Function nbrLignes()
     
    	nbrLignes = Worksheets.Item("donnes").UsedRange.Rows.Count
     
    End Function
    Mais j'ai constaté qu'il n'était pas possible d'inclure l'appel de la fonction dans les expressions
    du genre $A$nbrLignes()


    Quelqu'un a une solution?



    Merci d'avance,

    Dariyoosh

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonsoir dariyoosh,

    Tu peux gérer un nom dont la référence serait variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro3()
        Dim colonne As Range
        Set colonne = Range("A1", Range("A" & Rows.Count).End(xlUp))
        ActiveWorkbook.Names.Add Name:="MACOLONNE", RefersToR1C1:=colonne
    End Sub
    Et dans la cellule somme sur ta feuille entrer

    Cordialement.

    Marcel

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    sans macro à l'aide d'une utilisation astucieuse d'excel vous pouvez largement y parvenir. il faut utiliser suivant les versions la fonction DECALER, les références nommées ou les références structurées, les tableaux ou les listes.

    l'idée est d'obtenir un modèle de rapport avec une feuille donnée sur laquelle il suffit de fai eun copier coller du nouveau listing. Les formules se mettent alors à jour.

    Quelle est votre version d'excel? Et celle des utilisateurs qui emploieront ce classeur?

  4. #4
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Bonsoir dariyoosh,

    Tu peux gérer un nom dont la référence serait variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro3()
        Dim colonne As Range
        Set colonne = Range("A1", Range("A" & Rows.Count).End(xlUp))
        ActiveWorkbook.Names.Add Name:="MACOLONNE", RefersToR1C1:=colonne
    End Sub
    Et dans la cellule somme sur ta feuille entrer

    Cordialement.

    Marcel


    Bonsoir Marcel,


    Je te remercie pour cette belle solution. Je viens de faire quelques petits tests et apparemment ça a l'air bon. Voici la procédure que j'ai développé

    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
     
    Public Sub update()
     
        Dim colonne As Range
        Dim wksh As Worksheet
     
        Set wksh = Worksheets.Item("donnees")
     
        Set colonne = wksh.Range("A1", "A" & wksh.UsedRange.Rows.Count)
        ActiveWorkbook.Names.Add Name:="MACOLONNE", RefersToR1C1:=colonne
     
        Set wksh = Nothing
        Set colonne = Nothing
     
    End Sub
    Quand j'appelle cette procédure (par exemple en cliquant sur un bouton qui appel cette procédure) la mise à jour est faite automatiquement. Demain je vais continuer pour faire un test plus général et j'écrirai ici le résultat.

    Merci beaucoup pour ton aide et ton attention à l'égard de mon problème.

    Bonne soirée.

    Cordialement,
    Dariyoosh

  5. #5
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Citation Envoyé par Benjîle Voir le message
    sans macro à l'aide d'une utilisation astucieuse d'excel vous pouvez largement y parvenir. il faut utiliser suivant les versions la fonction DECALER, les références nommées ou les références structurées, les tableaux ou les listes.

    l'idée est d'obtenir un modèle de rapport avec une feuille donnée sur laquelle il suffit de fai eun copier coller du nouveau listing. Les formules se mettent alors à jour.

    Quelle est votre version d'excel? Et celle des utilisateurs qui emploieront ce classeur?
    Bonsoir,

    Merci pour votre réponse, la version d'Excel que j'utilise est 2003.

    Cordialement,
    Dariyoosh

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/03/2013, 09h31
  2. Réponses: 6
    Dernier message: 15/05/2012, 19h45
  3. Réponses: 9
    Dernier message: 13/09/2011, 15h53
  4. [AC-2000] Mise à jour automatique des champs d'une table
    Par Seric31 dans le forum Modélisation
    Réponses: 1
    Dernier message: 29/07/2010, 17h42
  5. Word : Mise à jour automatique des liaisons
    Par tiftay01 dans le forum Word
    Réponses: 13
    Dernier message: 13/02/2006, 09h34

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