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

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Points : 59
    Points
    59
    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 éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    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 du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Points : 59
    Points
    59
    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 éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    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 du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Points : 59
    Points
    59
    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
    Points : 15 546
    Points
    15 546
    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 du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Points : 59
    Points
    59
    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
    Points : 15 546
    Points
    15 546
    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 du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Points : 59
    Points
    59
    Par défaut
    Oh cher et intelligent modérateur,
    j'ai beaucoup aimé ta macro super géniale =)
    Mais mon amour envers cette macro doublerait si je savais comment l'utiliser.
    J'ai copié collé ta formule de macro dans une nouvelle macro, mais rien ne change dans la colonne J de mon Excel..
    J'espére que cela marchera , j'ai hâte de cocher le bouton résolu et de te remercier 1000 fois =)

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

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par Platon93 Voir le message
    J'ai copié collé ta formule de macro dans une nouvelle macro, mais rien ne change dans la colonne J de mon Excel
    Dans la colonne J ?
    Pour faire simple...si tu nous disais dans quelle colonne sont tes valeurs et dans quelle colonne le calcul doit se faire ?

    Bon soit...essaye ceci (l'insertion de la formule s'arrêtera lorsque la valeur de la ligne dépassera la dernière ligne contenant une valeur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    Dim i As Integer, x As Integer, DerL As Integer
     
    DerL = Cells(Rows.Count, 2).End(xlUp).Row
    x = 7
     
    For i = 7 To DerL
        If x > DerL Then Exit Sub
        Cells(i, 3).Formula = "=" & Cells(x, 2).Address & "/" & Cells(x - 2, 2).Address
        x = x + 2
    Next
     
    End Sub
    A adapter :
    Cells(i, 3) --> 3 étant la 3ème colonne --> colonne des résultats
    Cells(x, 2) et Cells(x - 2, 2) --> 2 étant la 2ème colonne --> colonne des valeurs

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 91
    Points : 59
    Points
    59
    Par défaut
    Oh très cher modérateur ouskel'n'or et cher rédacteur fring,
    je vous remercie beaucoup. C'est super gentil de votre part, je prend et je prendrai toujours l'exemple sur des personnes bien comme vous pour aider les autres...
    Oh qu'est ce que c'est bon de trouver une formule grâce aux autres contemporains! Ce soir, je peux fermer mes yeux tranquillement .
    Bonne nuit à tous.

    Citation Envoyé par fring Voir le message
    Dans la colonne J ?
    Pour faire simple...si tu nous disais dans quelle colonne sont tes valeurs et dans quelle colonne le calcul doit se faire ?
    Merci beaucoup, au fait, il fallait tapper les valeurs dans la colonne B, et attendre le résultat dans la colonne C.. Je mettais trompé en mettant les valeurs dans la colonne I , et j'espérais sans espoir recevoir les valeurs dans la colonne J..

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

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Ooh toi grand Platon, j'ai édité mon message ci-dessus au cas où

  13. #13
    Membre éprouvé
    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
    Points : 963
    Points
    963
    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