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 :

Variable dynamique pour calcul d'un sous total [XL-2010]


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 Variable dynamique pour calcul d'un sous total
    Bonjour,

    Après avoir regardé sur le forum, je cherche à stocker des variables pour pouvoir réaliser un sous total.

    Le nombre de ces variables seraient définis en fonction d'un nombre de tranche qui varie d'un projet à un autre.

    J'aimerais donc qu'en fonction de ce nombre mon sous.total soit égal à :

    = sous.total(9,variable1, variable2, ... , variable x) -> x étant égal au nombre de tranche.

    Je pensais utiliser une boucle For afin de réaliser ce traitement VB mais je ne sais pas comment stocker les variables dynamiques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim variable As Integer
     
    nbtranche = 10
    Range("F6").Select
     
    For i = 1 To nbtranche
    variable(i) = ActiveCell.Value
    ActiveCell.Offset(0, 2).Select
    Next i
    Puis dans un deuxième temps comment réaliser le calcul de ma somme ?

    Merci par avance pour votre aide.

    Rémi

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Remplacer le 1000 par le maximum possible de tranches.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim variable(1000) As Integer
     
    nbtranche = 10
    For i = 1 To nbtranche
       variable(i) = Cells(6,4+2*i).Value
    Next i
    Quand tu veux faire ton total
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SommeVar = 9
    For i = 1 To nbtranche
       SommeVar = SommeVar + variable(i)
    Next i
    Mais les deux peuvent se faire en même temps, dans la même boucle.

  3. #3
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Avez-vous besoin, dans la suite du code, des valeurs contenues dans votre "variable dynamique"?
    S'ils ne servent qu'à calculer leur propre somme, autant faire directement la somme, comme ceci, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub t()
    Dim maSomme As Integer
    Dim Cel As Range
    Dim nbtranche As Integer
     
    nbtranche = 10
    Set Cel = Range("F6")
     
    For i = 0 To nbtranche - 1
        maSomme = maSomme + Cel.Offset(0, 2 * i).Value
    Next i
    MsgBox maSomme
    End Sub

  4. #4
    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
    Merci de vos réponses. Elles vont me permettre d'avancer.

    Pensez-vous qu'il soit également possible d'utiliser ces variables dans une formule plutôt que d'avoir la valeur ?

    Peut-être en stockant dans les variables Activecell.Adress au lieu d'Activecell.Value ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 To nbtranche
    variable(i) = ActiveCell.Adress
    ActiveCell.Offset(0, 2).Select
     
    Next i
     
    Range("M6").Formula = "="=SUBTOTAL(9,variable(i),variable(i),...,variable(x))"
    Merci de votre aide.

    Rémi

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par remi2305 Voir le message
    Pensez-vous qu'il soit également possible d'utiliser ces variables dans une formule plutôt que d'avoir la valeur ?
    Je ne comprends pas vraiment ce que tu veux dire mais une variable ne peut pas contenir une formule.
    Eventuellement, une variable de type String peut contenir le texte de la formule mais ça n'est pas ça qui te permettra de faire un calcul.

    Il faut que tu donnes plus de précision sur ce que tu comptes faire de cette formule pour avoir une réponse plus précise.

    Peut-être en stockant dans les variables Activecell.Adress au lieu d' Activecell.Value ?
    La propriété Adress te renverra juste une chaîne de caractère désignant l'adresse de la cellule.
    Si tu veux conserver un pointeur vers une cellule dans une variable, le plus simple est de créer un variable de type Range et d'utiliser un Set pour y placer la référence de l'objet Cellule. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MaCellule as Range
    Set MaCellule = ActiveCell

  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
    Ce que je souhaite c'est réaliser un sous.total ou une addition en fonction des variables que j'ai créé.

    Mais j'aimerai ne pas l'avoir en valeur mais sous forme de formule afin que si les valeurs des cellules changent, la valeur de la somme change également.

    Par exemple au lieu d'avoir en M6 = 9, (ce que j'obtiendrai avec la formule proposée par vos soins auparavant)

    J'aimerai avoir M6 =M1+M3+M5 si j'ai 3 colonnes , je ne sais pas si cela est possible.

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Si tu veux placer ta formule en A1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim MaFormule As String
     
    nbtranche = 10
    MaFormule = "=9"
     
    For i = 1 To nbtranche
       MaFormule = MaFormule + "+" + Cells(6,4+2*i).Adress
    Next i
     
    Range("A1").Formula = MaFormule

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/08/2013, 18h18
  2. Réponses: 2
    Dernier message: 17/05/2013, 11h37
  3. calcul de sous total dans un etat
    Par qltmi dans le forum IHM
    Réponses: 1
    Dernier message: 11/06/2007, 06h55
  4. [PHP-JS] Javascript et php pour variable dynamique
    Par gtenthorey dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/05/2007, 21h36
  5. [JS]Formulaire dynamique et calcul de total
    Par Analfabete dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/01/2007, 14h23

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