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

Vue hybride

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

    Informations professionnelles :
    Activité : Chef de projet SI

    Informations forums :
    Inscription : Février 2015
    Messages : 42
    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 Expert
    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
    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

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

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    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 confirmé
    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
    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 émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

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

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

    Informations professionnelles :
    Activité : Chef de projet SI

    Informations forums :
    Inscription : Février 2015
    Messages : 42
    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.

+ 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