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 :

Row Column VBA [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Par défaut Row Column VBA
    Bonjour,

    J'aimerai juste remplacer cette formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=MINVERSE(MMULT(TRANSPOSE(R[1]C[-44]:R[477]C[-29]),R[1]C[-44]:R[477]C[-29]))"
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=MINVERSE(MMULT(TRANSPOSE(R[1]C[-44]:R[DerLig]C[-29]),R[1]C[-44]:R[DerLig]C[-29]))"
    avec DerLig qui est une variable dans une boucle que j'ai dans ma macro, mais ca marche pas comme ca?

    donc c pas la bonne syntaxe.

    Merci pour votre aide.

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Il faut juste sortir la variable de la chaîne de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=MINVERSE(MMULT(TRANSPOSE(R[1]C[-44]:R[" & DerLig & "]C[-29]),R[1]C[-44]:R[" & DerLig & "]C[-29]))"

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Par défaut
    Merci tedo01 ca marche

    si je peux me permettre une dernière chose,
    j'ai 6 onglets excel et les résultats qui m'interressent sont dans les range AW19:AW34 et AW60:AW75
    j'aimerai juste les mettre dans un nouvel onglet que je crer (Result) en utilisant la fonction transpose:
    pour le cas1 je transpose AW19:AW39 en B2:Q2 de l'onglet Result et AW60:AW75 (de l'onglet cas1) je le transpose en R2:AG2
    les résultats de l'onglet cas2 idem en onglet Result à la ligne 3
    jusqu'à la ligne 7 pour cas 6
    Je crois qu'il faudrait utiliser un Array m'ais j'arrive pas à le faire correctement.

    Merci encore pour tes réponses: ca seraa plus facile à comprendre avec le fichier:

    http://www.cijoint.fr/cjlink.php?fil...cijEw0LDN3.xls

  4. #4
    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 copy transpose
    Bonjour Ines, Bonjour le Forum

    Ines,

    Sans passer par les tabeaux, tu peux utiliser le collage special valeurs transpose.
    De plus, comme il y a une relation entre ton indice de Feuille Casx (Cas1, Cas2) et la ligne de la feuille Résult où tu souhaites copier tes données, tu peux utiliser une boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro2()
        Application.ScreenUpdating = False
        For i = 1 To 6
                Sheets("cas" & i).Range("AW19:AW34").Copy
                Sheets("Result").Range("B" & i + 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True
                Sheets("cas" & i).Range("AW60:AW75").Copy
                Sheets("Result").Range("R" & i + 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True
        Next
        Application.CutCopyMode = False
    End Sub
    En espérant que ce code te sera utile.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Par défaut
    justement je disais transpose parceque je ne veux pas coler en valeur mais garder les formules.

    Merci .

    Non c bon jvais laisser ca comme ca c déja très bieN.

    Merci beaucoup pour ton aide.

  6. #6
    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 formule transpose
    Ines,

    Un peu de patience, je cheche!

    Ce qui est gênant, ce sont tes formules matricielles dans ta première série de formules. Il serait bien pour le code suivant qui resterait à adapter de transformer ces formules matricielles en séries de formules classiques avec références relatives (sans "$").

    On pourrait sinon adapter ce code aux cellules à partir de AW60 en 2 étapes

    1 -Transformation des références relatives en absolues

    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
    16
    17
    18
    19
    20
    Sub DoAbsolut()
     Dim inputFormula As String
     Dim outputFormula As String
     Dim cell As Range
     Dim rng As Range
     
    For i = 1 To 6
            Sheets("cas" & i).Activate
            Set rng = Range("AW60:AW75").SpecialCells(xlFormulas)
             For Each cell In rng
                    inputFormula = cell.Formula
                    outputFormula = Application.ConvertFormula( _
                        Formula:=inputFormula, _
                        fromReferenceStyle:=xlA1, _
                        toReferenceStyle:=xlA1, _
                        ToAbsolute:=xlAbsolute)
                    cell.Formula = outputFormula
             Next
     Next
     End Sub

    2 - Copie des formules en se référant aux différentes feuilles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro2()
        Application.ScreenUpdating = False
        For i = 1 To 6
                Sheets("cas" & i).Range("AW60:AW75").Copy
                Sheets("Result").Range("R" & i + 1).PasteSpecial Paste:=xlPasteFormulas, Transpose:=True
                Selection.Replace What:="=", Replacement:="=Cas" & i & "!", LookAt:=xlPart, _
                        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                        ReplaceFormat:=False
                Selection.Replace What:="/", Replacement:="/Cas" & i & "!", LookAt:=xlPart, _
                        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                        ReplaceFormat:=False
        Next
        Application.CutCopyMode = False
    End Sub
    A tester.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Par défaut
    Merci beaucoup, j'ai essayé ca marche bien.
    Dernière chose promis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("AY38").Select
        ActiveCell.FormulaR1C1 = _
            "=((1-R[-1]C)*VARP(R[-18]C[-45]:R[" & Derlig3 & "]C[-45])*Derlig)/(Derlig-16)"
    Ici DerLig est une variable dans une boucle que j'ai, et ca marche pas à cause de ca, et je vois pas comment faire autrement.

    Merci encore pour vos réponses.

  8. #8
    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 concaténation
    Ines,

    Tout d'abord, un conseil : évite les select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("AY38").Select
    ActiveCell.FormulaR1C1
    doit être remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AY38").FormulaR1C1
    Une question : Derlig ou Derlig3 ?

    Pour ma part, j'ai codé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Macro1()
        With ActiveCell
            lign = .Row + 6
            .FormulaR1C1 = "=RC[" & lign & "]*10"
        End With
    End Sub
    Ce code est bien actif.

    Avant ta formule, insère

    Et donne le résultat.

    Je te reprends avant 18 hs sinon à partire de 19 hs.

  9. #9
    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 concaténation
    Ines,

    Je viens de m'appercevoir d'une anomalie.

    Pour une concaténation efficace, il te faut ouvrir et fermer les cotes avant et après ta variable Derlig dans toute ta ligne de code.

    remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=((1-R[-1]C)*VARP(R[-18]C[-45]:R[" & Derlig3 & "]C[-45])*Derlig)/(Derlig-16)"
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=((1-R[-1]C)*VARP(R[-18]C[-45]:R[" & Derlig & "]C[-45])*[" & Derlig & "])/([" & Derlig & "]-16)"

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Par défaut
    Merci beaucoup pour ton aide MarcelG

    jpourrais tester ca que lundi à la fac, car j'ai pas excel sur mon pc portable chez moi.

    Mais merci encore je suis sur que ca sera bon.

    Une question : Derlig ou Derlig3 ?(cétait ta question)


    y'a bien deux variables dans ma boucle, Derlig et Derlig3
    donc c normal que les deux apparaissent dans la formule c pas une erreur

  11. #11
    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 concaténation
    Ines,

    Dans ce cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=((1-R[-1]C)*VARP(R[-18]C[-45]:R[" & Derlig3& "]C[-45])*"&Derlig&")/("&Derlig&"-16)"
    Et n'hésite pas.

    Bon week-end à toi.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Par défaut
    j'ai le message d'erreur suivant:
    Erreur de compilation:
    Attendu: numéro de ligne ou étiquette ou instructuion ou fin d'instruction à ce niveau là:"=((1-R[-1]C)*VARP(R[-18]
    et j'arrive pas à ma corriger
    Merci de rester encore avec moi
    ines

  13. #13
    Membre Expert
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Essaie de mettre un espace entre le nom des variables et les & de concaténation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=((1-R[-1]C)*VARP(R[-18]C[-45]:R[" & Derlig3 & "]C[-45])*" & Derlig & ")/(" & Derlig & "-16)"

  14. #14
    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 Variance
    Bonjour Ines,

    La variance sur population est donnée, du moins sur Excel 2003, par la fonction VAR.P

    Il te manque apparemment le point entre VAR et P.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 11
    Par défaut
    c bon ca marche

    Merci beaucoup Marcel

    dsl si je l'ai pas mis en résolu ce sujet mais jsuis nouvelle et jvois pas c ou qu'on peut le mettre en résolu??

  16. #16
    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 : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par ines0091 Voir le message
    dsl si je l'ai pas mis en résolu ce sujet mais jsuis nouvelle et jvois pas c ou qu'on peut le mettre en résolu??
    Le bouton se trouve juste en dessous du dernier message

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

Discussions similaires

  1. Row & column coordinate
    Par verveine47 dans le forum Cognos
    Réponses: 1
    Dernier message: 12/06/2014, 10h45
  2. Signification de Range(Cell).Cells(Row, column)
    Par monsieurouxx dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/01/2013, 19h31
  3. Réponses: 0
    Dernier message: 02/05/2011, 16h10
  4. BackGround + grid.row/column x variable
    Par cKmel dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 15/11/2009, 18h56
  5. [PPC][C#][Sql CE] erreur "no data exists for the row/column"
    Par Jessika dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/04/2007, 12h13

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