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 fonction pour les calculs statistiques


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut Une fonction pour les calculs statistiques
    Bonsoir mes chers et irremplaçables contemporains et amis d'Excel;

    je recherche une fonction qui me calcule les valeurs d'une colonne à partir d'une autre colonne. L'exemple illustrera bien ce que j'arrive pas à vous dire.
    Je remplis à la main la colonne B ; Envirions 1500 données à tapper.
    Je veux une fonction qui me calcule les valeurs de la colonne C, comme suit:

    C7= B7/B5
    C8= B9/B7
    C9= B11/B9
    C10=B13/B11
    C11=C15/B13 etc....

    Comme vous l'avez vu, les valeur du numérateur et du dénominateurs augmentent de 2 .

    Merci de votre contribution intellectuelle.

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    bonjour,

    un truc que je pige pas, supposons que les valeurs vont jusque B40, en C40 tu vas avoir =B73/B71 ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par fring Voir le message
    bonjour,

    un truc que je pige pas, supposons que les valeurs vont jusque B40, en C40 tu vas avoir =B73/B71 ?
    Bonsoir fring ,
    tu l'as bien compris.
    C40= B73/B71

    On part de C7= B7/B5.. Et à chaque fois que C change augmente d'un indice,
    le numérateur et le numérateur augmentent de 2.

    Si C7 = B7/B5 ( notre point de départ)
    Pour C40, on fait : dénominateur = (40-7)*2 + 7 = 73
    numérateur = dénominateur - 2 = 71
    D'ou C40=B73/B71

    Est ce possible de faire une fonction comme indiquée ci- dessus?
    Merci d'avance =)

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Oui bien sûr c'est réalisable mais tu n'as pas compris où je voulais en venir.
    Si les valeurs vont de B5 à B40, en C on va avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C7=B7/B5
    C8=B9/B7
    C9=B11/B9
    'etc...
    mais à partir de C25
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C25=B43/B41
    C26=B45/B43
    '...
    C40=B73/B71
    tu vas avoir une erreur vu qu'il n'y a plus de valeur après B40, c'est normal ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Bien vu Fring ! Je n'avais pas pensé à cela.
    Il y aura une erreur à partir d'un certain rang, puisqu'il n y aura pas de valeur en B.
    Mais comme la colonne B va de B[7] à B[1500], pour éviter l'erreur,
    on peut s'arrêter à C[753]

    On n'est pas obligé d'aller jusqu'au bout dans la colonne C, on doit se limiter dans la colonne C.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    (40 - 7) * 2 = 66 et 66 + 7 = 73
    Et un truc tout bête comme ça, ça n'irait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        j = 7
        For i = 7 To 40
            Cells(i, 3) = Cells(j, 2) / Cells(j - 2, 2)
            j = j + 2
        Next

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    (40 - 7) * 2 = 66 et 66 + 7 = 73
    Et un truc tout bête comme ça, ça n'irait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        j = 7
        For i = 7 To 40
            Cells(i, 3) = Cells(j, 2) / Cells(j - 2, 2)
            j = i + 2
        Next
    Salut ouskel'n'or !
    Ce que tu as fait est un macro non?

    Merci de ton aide =)
    Merci à toi aussi Frig =)

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        j = 7
        For i = 7 To 40
            Cells(i, 3) = Cells(j, 2) / Cells(j , 2).offset(-2,0)
            j = j + 2
        Next
    Oui, c'est une macro. Et alors ? Tu l'aimes pas ma macro ?
    Donc tu veux une macro mais pour écrire une formule ?
    Si c'est ça faut le demander gentiment !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        j = 7
        For i = 7 To 40
            Cells(i, 3).Formula = "=" & Cells(j, 2).Address(0, 0) & "/" & _
            Cells(j, 2).Offset(-2, 0).Address(0, 0)
            j = j+ 2
        Next
    Corrige j = i + 2 par j = j + 2

  9. #9
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut
    j'ajoute qu'il faut pas farira un autofiller avec toutes ces fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Sub test()
    Dim ind, addr As Long
    For ind = 7 To 1500
    addr = ((ind - 7) * 2 + 7) - ind
    With Cells(ind, 3)
    .FormulaR1C1 = "=R[" & addr & "]C[-1]/R[" & addr - 2 & "]C[-1]"
    End With
    Next
    End Sub

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/02/2012, 10h02
  2. Creer une fonction pour un calcul
    Par micrak11 dans le forum C++
    Réponses: 7
    Dernier message: 18/01/2008, 08h54
  3. Réponses: 2
    Dernier message: 29/08/2007, 19h43
  4. Existe-t-il une fonction pour calculer le kurtosis
    Par bichou dans le forum MATLAB
    Réponses: 1
    Dernier message: 19/06/2007, 17h01
  5. une fonction pour enlever les doublons d'un array
    Par secteur_52 dans le forum Delphi
    Réponses: 1
    Dernier message: 27/06/2006, 13h45

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