Macro

katiaboutamdja Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
katiaboutamdja Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un code pour calculer simplement la corrélation entre deux colonnes et l'afficher en C2, avec les données pour calculer les correl en A et B

J'arrive pas à le modifier pour calculer la corrélation 2 à 2 entre des données situer sur le range(C2:TA61) dans 7 feuilles excel et mettre un tableau de correl(7 lignes 7 colonnes) dans une 8ème feuille à créer

J'ai donc 7 feuilles excel (pour chaque client) avec mes données sur le range (C2:TA61)

Sub correl()

Dim ans As Double
Dim rRngA As Range
Dim rRngB As Range

Set rRngA = Range("A2", Range("A2").End(xlDown))
Set rRngB = rRngA.Offset(, 1)

ans = Application.WorksheetFunction.correl(rRngA, rRngB)
Range("C2") = ans

End Sub

Merci beaucoup pour votre aide

10 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Tu a testé les adresses !
    Sub correl()
    Dim rRngA As Range
    Dim rRngB As Range
    Dim Lig As Long
        Lig = Range("A65536").End(xlUp).Row
        With Sheets("feuil1")
            Set rRngA = .Range(.Cells(2, 1), .Cells(Lig, 1))
            Set rRngB = .Range(.Cells(2, 2), .Cells(Lig, 2))
            .Range("C2") = Application.WorksheetFunction.correl(rRngA, rRngB)
        End With
    End Sub

    A+
    0
  2. katiaboutamdja Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   3
     
    Merci beaucoup pour ta réponse
    Ca me met erreur d'execution 1004
    Impossible de lire la propriété correl de la fenetre d'execution

    Et cque jveux faire c pas exactement ca , le code que j'ai mis au début il marche bien mais c jucte pour calculer la corrélation entre deux colonnes d'une meme feuille que je lui demande de me mettre sur C2 et justement jveux le changer:

    c

    MERCIIIIIII
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Dans mon exemple il faut bien entendu adapter le nom de la feuille.
    Pour ton tableau ?? entre C et TA il y a plus de 7 colonnes !, explique en plus clair.
    Je commence à comprendre mais j'attend la suite.
    0
  4. katiaboutamdja Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   3
     
    Merci encore pour ton aide

    adapter le nom de la feuille ca bien sur je sais faire
    bien sur qu'entre C et TA il y a plus de 7 colonnes, quand je dis 7 c'est pas 7 colonnes mais 7 feuilles excels, c'est les données qui se trouvent entre C et TA de la ligne 2 à 61

    Et les corrélations qu'il faut calculer c'est pas entre des colonnes d'une meme feuille excel

    mais la correl entre les 7 feuilles(entre les données qui se trouvent dans les 7 feuilles de C2 à TA61)

    par exemple:
    1ère correlationn que je veux: facile tu cliques sur fonction dans excel tu selectionne le range C2:TA61 de la première feuille dans la première ligne matrice1 de la fonction
    puis dans la deuxième matrice de la fonction COEFFICIENT.CORRELATION de excel tu selectionne le range C2:TA61 de la deuxième feuille excel(y'en à 7 des feuilles)

    Et ainsi de suite on aura en, tou 7*6corrélations ( parceque y'a 7 feuilles)

    J'éspère pour moi que je me suis mieux fait comprendre

    Merci beaucoup trop sympa pour ton aide
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Oui, mais suivant tes dernières explications ça ne donne que 7 résultats, comment en avoir 7*6 ????
    sur quel Critère2 ??
    Corel ne renvoyant qu'un seul résultat à la fois. ou s'il renvoi un tableau je connaît pas. Explique
    J'ai déjà une macro qui travail sur 7 résultats et suivant ta réponse j'adapterais.
    0
  7. katiaboutamdja Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   3
     
    c'est compliquer à faire comme code je reconnais

    Voila ce qu'on veut ce tableau ( c ca les 7*6 car on a forcément des 1 en diagonale le coefficient de corrélation d'une plage de données à elle meme c forcément 1) on peut le mettre n'importe( ce tableau) ou sur une des 7 deja existantes ou en crér une 8ème pour le mettre spécialement dedans peut importe

    Les chiffres je les ai mis au pif

    Encore merci pour tout
    0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    désolé, je pense pas pouvoir t'aider, j'y comprend rien dans tes explications.
    Une approche pour plusieurs test.. sans prétention..
    Sub correl() 
    Dim rRngA As Range 
    Dim rRngB As Range 
    Dim Lig As Long, i As Byte, LigC As Long, ColD As Integer 
    Dim Wks As Worksheet 
    Dim WkD As Worksheet 
    Dim WkT As Worksheet 
        LigC = 3 'la première ligne du tableau..à adapter 
        ColD = 4 'la première colonne du tableau.. à adapter 
        Set WkD = Sheets("Data") ' à adapter au nom de la feuille de données 
        Set WkT = Sheets("Tableau") ' à adapter au nom de la feuille de réception corel 
        Lig = Wks.Range("A65536").End(xlUp).Row 
        Set rRngA = Wks.Range(Wks.Cells(2, 1), Wks.Cells(Lig, 1)) 'plage 1 
        For i = 1 To Sheets.Count 
            'adapter au noms des feuilles à éviter................... 
            If Sheets(i).Name <> "Tableau" And Sheets(i).Name <> "Data" Then 
            '....................................................... 
                Set Wks = Sheets(i) 
                With Wks 
                    Set rRngB = .Range(.Cells(2, 2), .Cells(Lig, 2)) 
                   If LigC = 3 Then  WkT.Cells(LigC - 1, ColD) = Wks.Name 
                    WkT.Cells(LigC, ColD) = Application.WorksheetFunction.correl(rRngA, rRngB) 
                    LigC = LigC + 1 
                End With 
            '....................................................... 
            End If 
        Next i 
    End Sub

    Ca pourra peut-être te donner des idées.
    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  9. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Huummm, j'ai peut-être compris.
    A adapter : les noms des feuilles à éviter et les plages.
    Sub TabloCorel()  
    Dim rRngA As Range  
    Dim rRngB As Range  
    Dim i As Byte, LigC As Long, ColD As Integer, Col As Integer  
    Dim F As Integer  
    Dim WkT As Worksheet  
        LigC = 3 'la première ligne du tableau..à adapter  
        Col = 4 'la première colonne du tableau.. à adapter  
        Set WkT = Sheets("Tableau") ' à adapter au nom de la feuille où placer le tableau corel  
        For i = 1 To Sheets.Count  
            'adapter au noms des feuilles à éviter...................  
            If Sheets(i).Name <> "Tableau"  Then  
                WkT.Cells(LigC, Col) = Sheets(i).Name: ColD = Col + 1  
                Set rRngA = Sheets(i).Range("C2:TA61") 'plage 1  
            '.......................................................  
                For F = 1 To Sheets.Count  
                    'adapter au noms des feuilles à éviter...................  
                    If Sheets(F).Name <> "Tableau"  Then  
                        With Sheets(F)  
                            Set rRngB = .Range("C2:TA61")  
                            WkT.Cells(LigC, ColD) = Application.WorksheetFunction.correl(rRngA, rRngB)  
                            ColD = ColD + 1  
                        End With  
                    End If  
                Next F  
                LigC = LigC + 1  
            '.......................................................  
            End If  
        Next i  
        Set WkT = Nothing  
    End Sub

    Et y a pas 7 * 6 mais bien 7 * 7 (49) données pour 7 feuilles, à moins d'éviter la donnée 1 (ce qui est facilement faisable.)
    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Offfuuiiit,
    Pas envie de me remettre dans ce code sans explications complémentaires.
    Met un classeur exemple (sans données confidentielles mais avec suffisement d'info pour extra-poler. ) Sur CiJoint.fr
    Et prochaine fois, essaye de réagir un peu plus vite.
    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  11. katiaboutamdja Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   3
     
    le fichier jla mis sur cijoint.fr, il se trouve à cette adresse

    http://www.cijoint.fr/cjlink.php?file=cj201012/cijM5D6tpp.xls

    dsl pour le retard et merci
    0