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 :

Réaliser un calcul avec variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet SI
    Inscrit en
    Février 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Chef de projet SI

    Informations forums :
    Inscription : Février 2015
    Messages : 42
    Points : 41
    Points
    41
    Par défaut Réaliser un calcul avec variable
    Bonjour,

    J'aimerai réaliser une somme en utilisant d'une part Row Column et d'autre part des variables, j'ai cherché un peu partout mais pas moyen de savoir si c'est réalisable.

    Quand je lance le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveCell.Formula = "=sum( R[-1]C:cells(" & ligne & "," & colonne & "))"
    J'obtiens alors dans ma ligne excel : =SOMME( L(-1)C:cells(4;13)).

    Pensez vous qu'il soit possible d'obtenir =SOMME( L(-1)C: M4) ?

    Merci par avance.

    Rémi

  2. #2
    Membre émérite
    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
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour remi2305,

    Il faudrait surtout que tu nous dises comment tu déclares et alimentes ligne et colonne.
    J'attends ton retour.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Si vous voulez une somme il vous faux une formule de ce type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=SUM(R[-1]C[2]:R[-1]C[4])"
    supposons que la cellule active est C15
    donc le numéro de la ligne de la cellule active est 15
    et le numéro de la colonne de la cellule active est 3

    le premier R[-1]C[2] veux dire:
    R pour row, et [-1] veux dire le numéro de la ligne de la cellule active moin 1
    C pour column et [2] veux dire le numéro de la colonne de la cellule active plus 2

    alors R[-1]C[2] veux dire ligne : (15-1=14) et colonne : (3+2=5) ce qui fait la cellule E14

    si on fait le même exercice pour R[-1]C[4] on obtient la cellule G14

    ce qui donnera dans la cellule excel =SOMME(E14:G14)


    maintenant si vous voulez que ce soit vos variables ligne et colonne qui apparaisse dans la cellule excel,
    il faut pensé de retrancher à la variable ligne la row de la cellule active
    et retranché à la variable colonne le numéro de colonne de la cellule active
    pour votre formule.

    en gros si vous voulez afficher =SOMME(M10:O10) dans votre cellule excel et que votre cellule active est C11 alors
    en fessant le calcul expliqué plus haut la formule en vba serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=SUM(R[-1]C[10]:R[-1]C[12])"
    R[-1] parce que la ligne active est 11 et on veux 10 donc 10-11=-1
    C[10] parce que de la colonne C à la colonne M il y a 10 en positif
    :R[-1] même chose
    C[12] parce que de la colonne C à la colonne O il y à 12 en positif

    voici le code complet

    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
    21
    22
    23
    24
    25
    26
    27
    Dim Active_Cell_row As Integer
    Dim Active_Cell_column As Integer
    Dim ligne As Integer
    Dim colonne As Integer
    Dim ligne_2 As Integer
    Dim colonne_2 As Integer
     
    Active_Cell_row = ActiveCell.Row 'récupère le numéro de la ligne de la cellule active
    Active_Cell_column = ActiveCell.Column 'récupère la colonne de la ligne de la cellule active
     
    'si on veux mettre dans notre cellule excel =SOMME(M10:O10)
     
    'pour M10
    ligne = 10
    colonne = 13
     
     
    'pour O10
    ligne_2 = 10
    colonne_2 = 15
     
    R1 = ligne - Active_Cell_row
    R2 = ligne_2 - Active_Cell_row
    C1 = colonne - Active_Cell_column
    C2 = colonne_2 - Active_Cell_column
     
    ActiveCell.FormulaR1C1 = "=SUM(R[" & R1 & "]C[" & C1 & "]:R[" & R2 & "]C[" & C2 & "])"
    en espérant de vous avoir aidé un peu.

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Essai de construire ta formule de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveCell.FormulaR1C1 = "=sum(R[-1]C" & Colonne & ":R[" & Ligne & "]C" & Colonne & ")"
    Les crochets [] rendent les références relatives alors adapte.

    Hervé.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    he bien je ne la savais pas celle là +1

  6. #6
    Membre du Club
    Homme Profil pro
    Chef de projet SI
    Inscrit en
    Février 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Chef de projet SI

    Informations forums :
    Inscription : Février 2015
    Messages : 42
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Concernant le message de Kimy, je définis mes variables lignes et colonnes comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Range("M10").select  'par exemple
     
    ligne = ActiveCell.Row
    colonne = ActiveCell.Column

    Je souhaite utiliser Cells(ligne, colonne) pour définir la seconde partie de ma somme car je ne pars pas toujours de la même cellule, ce qui rend impossible l'utilisation de R1C1.

    Si vous avez une idée, je suis preneur.

    Merci.

  7. #7
    Membre émérite
    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
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour remi2305,

    Je dois t'avouer être un peu perdu.
    Peux-tu explicitement définir à la communauté ton souhait/besoin afin que nous puissions proposer une solution adapter ?

    En l’occurrence, la finalité est-elle d'avoir une formule dans une cellule ou d'avoir le résultat ?
    Le calcul peut, peut-être, être effectué directement dans la macro ce qui éviterait les problèmes que tu rencontres et que je ne comprends pas.

    Bref, n'hésite pas à revenir vers moi !

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  8. #8
    Membre habitué Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 178
    Points : 162
    Points
    162
    Par défaut
    Remi,

    Je souhaite utiliser Cells(ligne, colonne) pour définir la seconde partie de ma somme car je ne pars pas toujours de la même cellule, ce qui rend impossible l'utilisation de R1C1.
    Si tu souhaites une référence absolue enlève les crochets [ et ] des formules.

    J'approuve totalement la remarque de Kimy et je me demande si tu ne pourrais pas résoudre ton problème (peu explicite) en utilisant simplement des formules Excel classiques.

    Cordialement,
    Francis

  9. #9
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Tu peux te passer de la référence R1C1 avec Cells, c'est plus facile et plus compréhensible enfin, pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'en référence absolue
    ActiveCell.Formula = "=sum(" & Cells(Ligne, Colonne).Address & ":" & Cells(Ligne + 10, Colonne).Address & ")"
    'en référence relative, pour ligne et colonne, adapter les 0 entre parenthèses
    ActiveCell.Formula = "=sum(" & Cells(Ligne, Colonne).Address(0, 0) & ":" & Cells(Ligne + 10, Colonne).Address(0, 0) & ")"
    mais comme le dit Kimy, si tu ne recherche que l'obtention d'une valeur, le calcul peut être fait directement dans le code.

    Hervé.

  10. #10
    Membre du Club
    Homme Profil pro
    Chef de projet SI
    Inscrit en
    Février 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Chef de projet SI

    Informations forums :
    Inscription : Février 2015
    Messages : 42
    Points : 41
    Points
    41
    Par défaut
    En essayant d'être un peu plus clair,

    Je souhaite réaliser une somme en utilisant des variables :

    J'ai utilisé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Formula = "=Sum(cells(4," & colonne & "),cells(" & ligne2 - 1 & "," & m & "))"
    Mais en dans ma feuille j'ai un #NOM, étant donné que le calcul se traduit de la façon suivante : =SOMME(cells(4;4);cells(109;7)).

    Comment faire pour obtenir =Somme(C4:G109) en utilisant cells ?

    Merci de vos retours.


    Rémi

  11. #11
    Membre habitué Avatar de francis60
    Homme Profil pro
    Modélisation coût/process
    Inscrit en
    Août 2011
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Modélisation coût/process
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2011
    Messages : 178
    Points : 162
    Points
    162
    Par défaut
    Bonjour,

    Cells(ligne;colonne) est une instruction VBA qui n'est pas interprétée par Excel dans les formules de calcul, il faut la séparer par des guillemets et des &.

    As-tu testé la proposition de Theze ?
    A mon avis elle répond complètement à ton problème.

  12. #12
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    De cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'en référence absolue
    ActiveCell.Formula = "=Sum(" & Cells(4, Colonne).Address & "," & Cells(ligne2 - 1, m).Address & ")"
    'en référence relative
    ActiveCell.Formula = "=Sum(" & Cells(4, Colonne).Address(0, 0) & "," & Cells(ligne2 - 1, m).Address(0, 0) & ")"
    Hervé

  13. #13
    Membre du Club
    Homme Profil pro
    Chef de projet SI
    Inscrit en
    Février 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Chef de projet SI

    Informations forums :
    Inscription : Février 2015
    Messages : 42
    Points : 41
    Points
    41
    Par défaut
    Merci pour vos réponses.

    J'ai réussi à résoudre mon problème grâce à vous.

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

Discussions similaires

  1. [2.x] [twig] Déclaration et calcul avec variables
    Par jejeman dans le forum Symfony
    Réponses: 3
    Dernier message: 30/01/2014, 12h27
  2. Réponses: 49
    Dernier message: 21/12/2012, 13h13
  3. [CR XI] Calcul avec variable partagée
    Par sat478 dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 18/09/2010, 16h14
  4. Réponses: 3
    Dernier message: 16/07/2008, 16h28
  5. Formule de calcul avec variable ?
    Par clarisse dans le forum Excel
    Réponses: 5
    Dernier message: 19/09/2007, 14h27

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