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 :

Application.Evaluate("AVERAGE(**)") et colonne non fixe [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut Application.Evaluate("AVERAGE(**)") et colonne non fixe
    Bonjour à tous !

    Je cherche à faire une moyenne sur une plage de cellule donc la dernière colonne est mouvante jour après jour.

    Il y a la possibilité de créer un tableau, d'y introduire les valeurs en question et enfin de calculer la moyenne, mais je voulais savoir s'il était possible d'utiliser la fonction Application.Evaluate("AVERAGE(...)").

    Mais j'ai plusieurs soucis :
    1) J'ai un peu de mal avec la concaténation
    2) Je ne sais pas comment traduire le numéro de colonne en lettre.

    Voila le début de ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tab_tot_30(i, 1) = Application.Evaluate("=AVERAGE(B" & i + 2 & ":" & *Nom de la colonne en lettre* & i + 2 & ")")
    Je reste à votre disposition si je n'ai pas été suffisamment clair ! =)

    Merci à vous !

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pss besoin de la lettre de ta colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Col: numéro de ta colonne
    Tab_tot_30(i, 1) = Application.Evaluate("=AVERAGE(B" & i + 2 & ":" & Cells(i + 2, Col).Address & ")")

  3. #3
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Merci ! =) J'avais oublié qu'on pouvait récupérer l'addresse ! ^^

    MAIS...

    Mon "1)" ressort...
    Je ne sais pas pourquoi la concaténation ne fonctionne pas...

    Je tente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tab_tot_30(i, 1) = Application.Evaluate("=AVERAGE(B" & i + 2 & ":AR" & i + 2 & ")")
    juste pour tester celle-ci... "Incompatibilité de type"...

    Mes valeurs comprises entre B3 et AR3 ne sont que des integers...

    Je ne comprends pas... =(

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Attention à la feuille active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Worksheets("Feuil1")
        Col = 5                                        'Colonne E
        Tab_tot_30(i, 1) = Application.Evaluate("=AVERAGE('" & .Name & "'!" & .Range("B" & i + 2).Resize(1, Col - 1).Address & ")")
    End With

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Merci !!! Ca fonctionne !
    ****ing active sheet !!! ^^


    Cependant... je ne comprends pas pourquoi le code suivant ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                With Worksheets("...")
                    For i = 1 To 31
                        Tab_tot_30(i, 1) = Application.Evaluate("=AVERAGE(" & .Cells(i + 2, 2).Address & ":" & .Cells(i + 2, col_30).Address & ")")
                    Next i
                End With


    Que fais-tu de plus avec cela :

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Quand tu fais cette formule dans Feuil1

    ça te somme B1+B2 de Feuil1

    Si tu veux sommer en feuil1 b1+B2 de Feuil4 tu dois indiquer le nom de la feuille
    Si dans le nom de la feuille il y a un espace, il faut l'entourer d'apostrophe dans la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME('Ma Feuille Exemple'!B1:B2)
    Par code, essaies de suivre ces trois règles. Je propose d'utiliser la 3ème variante pour ne pas se soucier de la feuille.

  7. #7
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Merci ! =)

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

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