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 :

Somme contenant des references absolues et relatives [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Points : 47
    Points
    47
    Par défaut Somme contenant des references absolues et relatives
    Bonjour,

    J aimerais faire la somme d une colonne de taille variable qui commence toujours en E9 et qui se termine toujours en ActiveCell.Offset(-5,0). J ai tente de mettre des references absolues et relatives dans la fonction somme mais ca ne fonctionne pas, si quelqu un peut donner un petit coup de main, ca serait

    Merci d'avance.

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut bonjour FFGUY,
    la formule ne se place pas sur la feuille ?


    Toute la colonne "E" sauf les 5 dernières lignes et avant E9 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Rg As Range
    Dim s As Double '<-à voir
    Set Rg = ActiveCell.Offset(-5, 0)
     
    s = 0
    For Each c In Range("E9:" & Rg.Address)
       s = s + c.Value
    Next
    MsgBox "somme = " & s
    Set Rg = Nothing
    ESVBA

  3. #3
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Points : 47
    Points
    47
    Par défaut
    Merci pour ta reponse.

    Le probleme c est que je ne peux pas ajouter toute la colonne car j ai d autres valeurs dans la colonne.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut FFGUY et le forum
    J aimerais faire la somme d une colonne de taille variable qui commence toujours en E9 et qui se termine toujours en ActiveCell.Offset(-5,0).
    Pas sûr de comprendre : ActiveCel est une référence qui se contrefout des données. C'est juste celle qui est active à un moment donnée. tu parles de fonction somme (c'est une référence de feuille de calcul) et d'ActiveCel (c'est une référence VBA). Si tu expliquais, sans chercher un pseudo code, peut-être qu'on serait plus efficace pour t'aider.
    Par formule, ça donnerait (une possibilité) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Somme(INDIRECT("E9:E" & ligne()-5))
    faire la somme de la colonne E de la ligne 9 à 5 lignes au-dessus de celle de la cellule contenant la formule.
    A+

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut
    une question avant de corriger mais bétises : la cellule active est telle dans la colonne "E" ?

    ESVBA

  6. #6
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Points : 47
    Points
    47
    Par défaut
    Non, la cellule active se situe colonne D et la derniere reference de la colonne E a ajouter est en fait ActiveCell(-5,1).


    Pour Gorfael, l information ActiveCell me semblait judicieuse pour indiquer ou se situer la derniere cellule a prendre en compte.

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Application.WorksheetFunction.Sum(Range("E9:E" & ActiveCell.Row - 5))
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  8. #8
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    J ai essaye ce code mais j'obtiens une "compile error: Expected: end of statement"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ActiveCell.Offset(0, 1).FormulaR1C1 = "=R[-15]C[2]-R[-5]C[2]"
        ActiveCell.Offset(-1, 1).FormulaR1C1 = "=R[-1]C+R[-2]C"
        ActiveCell.Offset(-2, 1).FormulaR1C1 = Range("F8")
        ActiveCell.Offset(-3, 1).FormulaR1C1 = "=Sum(Range("E9:E" & ActiveCell.Row - 5))"


    Si qqun peut m expliquer pourquoi ca ne fonctionne pas?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Bonjour FFGUY et le forum,

    L'erreur provient des " qui sont dans un String. Pour l'éviter, double les " :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(-3, 1).FormulaR1C1 = "=Sum(Range(""E9:E"" & ActiveCell.Row - 5))"

  10. #10
    Membre expérimenté
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 747
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour FFGUY,

    à tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(-3, 1).Formula = "=Sum(E9:E" & ActiveCell.Row - 5 & ")"
    Edit : Oups, oublié une guillemet

  11. #11
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(-3, 1).Formula = "=Sum(E9:E" & ActiveCell.Row- 5 & ")" 'Attention, activecell doit être au dela de la 5ème ligne
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #12
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Points : 47
    Points
    47
    Par défaut
    Le probleme c est qu avec ce code, j obtiens un "#Name" dans ma feuille excel.

    J ai mis tellemnt de temps a taper mon message que vous avez corrige entre temps.
    Merci beaucoup pour votre aide, ca marche parfaitement maintenant.

  13. #13
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    rectifie aussi à ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(-2, 1).Formula = "=F8"
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  14. #14
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Points : 47
    Points
    47
    Par défaut
    J ai effectue cette correction, par contre peux tu m expliquer ce que cela change?

  15. #15
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Z doit être une chaîne dans le même format que celui qui doit s'afficher dans la barre de formule (y compris le signe égal) (entre guillemets).
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2").Formula = "=F5 + $E$6"
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  16. #16
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Points : 47
    Points
    47
    Par défaut
    Je vois, merci d avior pris le temps de m expliquer>

  17. #17
    Membre expérimenté
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 747
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour,
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activecell.FormulaR1C1 = "=R8C6"
    équivaut à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activecell.Formula = "=$F$8"
    En mode R1C1 les références de cellules doivent être écrites avec des R et des C

    comme dans cette ligne par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activecell.FormulaR1C1 = "=R[-15]C[2]-R[-5]C[2]"
    Si tu veux utiliser le mode A1, comme utilisé dans la feuille de calcul, il faut utiliser Formula tout court

  18. #18
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu peux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2").formula = "= " & cells(i, j).address
    ou autre exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2").formula = "= B2/" & cells(i, j).address
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  19. #19
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 74
    Points : 47
    Points
    47
    Par défaut
    Je comprends mieux maintenant, je n avais pas saisi la facon de placer les " quand j utilise formula.

    Merci pour ces precieuses precisions

    Je pensais avoir compris mais lorsque j ecris ce code j ai encore une erreur, pourquoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 1).Formula = "=F8 - F" & ActiveCell.Row - 5 & ")"

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Il n'y a pas une parenthèse de trop ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 1).Formula = "=F8 - F" & ActiveCell.Row - 5

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Corrélation par SAD (somme des différences absolues)
    Par nomadstorm dans le forum MATLAB
    Réponses: 9
    Dernier message: 30/03/2012, 13h08
  2. Somme sur des réels avec msquery
    Par renardchan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/03/2012, 17h36
  3. [RegEx] Desactivation des references arrieres ? (chaine contenant $1)
    Par imikado dans le forum Langage
    Réponses: 5
    Dernier message: 13/10/2009, 18h23
  4. export d'un formulaire contenant des sommes
    Par novice06 dans le forum IHM
    Réponses: 3
    Dernier message: 19/03/2009, 09h34
  5. [Excel] Activer Reference absolu et relative
    Par comme de bien entendu dans le forum Excel
    Réponses: 4
    Dernier message: 17/12/2007, 12h38

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