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 :

Calcul de sommes dans chaque cellule 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
    Lycéen
    Inscrit en
    Septembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2018
    Messages : 35
    Par défaut Calcul de sommes dans chaque cellule avec variable
    Bonjour le forum,
    j'ai petit soucis en vba.
    je veux faire la somme des nombres de chaque cellule.
    J'ai 3 colonnes de A à C puis une 4è colonne D pour le calcul de chaque somme et 20 lignes (A1 à A20);(B1 à B20);(C1 à C20);(D1 : D20)pour le calcul des sommes . Je voudrais que si on saisi des nombres dans les colonnes un bouton commande permette de calculer une somme dans chaque cellule de la colonne D.
    voici le code que j'utilise qui me donne des résultats qui se ressembles . Aidez moi à corriger:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub somme  ()
    Dim A as Range, B as Range, C as Range, somme as Range
    For Each A in Range ("A1:A20")
    For Each B in Range ("B1:B20")
    For Each C in Range ("C1:C20")
    For Each somme in Range ("D1 : D20")
    somme =A+B+C
    Next
    Next
    Next
    Next
    End sub
    J'espère avoir bien donné le code sans erreur.
    Merci pour votre aide.

  2. #2
    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
    Bonjour et Bienvenu,

    S'il te plaît.
    Retourne tout code balisé par #

    Est-il nécessaire de passer par VBA?

    Quand bien même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
     
    Public Sub essai_som()
    With Worksheets(1).Range("D1:D20")
            .FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"
            'collage spécial de valeurs
            .Value = .Value
    End With
    End Sub

  3. #3
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Envois un capture écran de tes cellules A1 à D20 ce qui permettera de mieux t'orienté.

    Mais comme ça en jetant un coup d'oeil il me semble que tu fais beaucoup trop de boucle pour obtenir ton résultat

    à moins que j'ai pas compris mais une seule boucle devrais suffir

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour,

    en D1 attend-on la somme A1+B1+C1 ?

    si oui , une solution serait de faire une boucle For Each sur colonne D et de récupérer les valeurs de A B et C par offset

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    somme.value =   somme.Offset(, -3).Value + ...
    par une boucle indicée (i) de 1 à 20:

    Edit : correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(i,4) = cells(i,1) + ...
    si non, à préciser

    A+

  5. #5
    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
    Salut,

    A mon avis, il est plus performant d'éviter les boucles tant que faire se peut.
    Le code tient en moins de lignes et reste plus facile à rédiger.
    C'est ici le cas. Non?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Salut,

    A mon avis, il est plus performant d'éviter les boucles tant que faire se peut.
    Le code tient en moins de lignes et reste plus facile à rédiger.
    C'est ici le cas. Non?
    Je prends cette remarque pour moi. J'ai proposé une solution avec boucle parce qu' il était question de boucle dans le post de départ et non pas pour apporter une meilleure solution que celles proposées. D'ailleurs quand j'ai commencé à rédiger, il n'y avait encore aucune réponse (...j'ai pris mon temps).

    @gnedea:c'est bien ce qui me semblait avoir compris . pour chaque cellule de D la somme des A B et C de la même ligne. et je me suis mal exprimé en limitant mon exemple à D1=A1+B1+C1.
    D'ailleurs toutes les propositions vont dans ce sens!

  7. #7
    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
    J'ai proposé une solution avec boucle parce qu' il était question de boucle dans le post de dép
    Je ne suis pas d'accord sur ce principe.
    Lors d'une discussion, ceux qui y répondent se doivent de donner des indications qui, à leur sens, vont améliorer le code du demandeur.
    Chacun, bien entendu, à son niveau (Je ne suis, pour ma part, ni Theze, ni mercatog). Si une réponse, par sa technicité, est plus pertinente, alors tant mieux. Tout un chacun apprendra.
    C'est d'ailleurs ce qui fait l'intérêt des échanges.
    Et ce d'autant qu'il y a, le plus souvent, un certain nombre de lecteurs qui peuvent y trouver un certain intérêt, si ce n'est un intérêt certain.

    C'est juste mon avis.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Je ne suis pas d'accord sur ce principe.
    Lors d'une discussion, ceux qui y répondent se doivent de donner des indications qui, à leur sens, vont améliorer le code du demandeur.
    Chacun, bien entendu, à son niveau.../...
    Je ne veux pas créer de polémique, mais...
    N'ayant pas connaissance des réponses des autres intervenants à la validation de ma réponse, ma proposition répond exactement à tes préceptes:
    -ma proposition améliorait le code initial (vu qu'il ne faisait pas ce qui était souhaité)
    -elle est faite selon mon niveau ( c'est à dire proche de 1.....)

  9. #9
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2018
    Messages : 35
    Par défaut
    Non Algoplus.
    Je veux une somme dans chaque cellule de la colonne D

    Bonjour MarcelG
    Je veux passer par VBA

  10. #10
    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
    Salut,

    Ok.
    Teste mon code et reviens si nécessaire.

  11. #11
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2018
    Messages : 35
    Par défaut
    Bonjour MarcelG

    Voici un exemple de mon tableau avec des nombres en A B C et en D les sommes:

    A B C D
    3 3 1 A+B+C
    3 1 5 A+B+C
    2 2 7 A+B+C
    0 4 2 A+B+C
    1 4 2 A+B+C
    2 5 1 A+B+C
    etc...

  12. #12
    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
    Oui?

    Regarde ce que j'ai reporté plus haut.

  13. #13
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2018
    Messages : 35
    Par défaut
    MarcelG j'ai essayé ça ne marche pas
    Voici le fichier
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2018, 12h54
  2. Calcul de somme dans un champ de type Time ou Timestamp avec Firebird
    Par Feymann dans le forum Bases de données
    Réponses: 9
    Dernier message: 18/12/2017, 09h39
  3. Réponses: 2
    Dernier message: 29/05/2017, 17h37
  4. Réponses: 1
    Dernier message: 28/10/2014, 22h21
  5. Calculer la somme dan une requête SQL avec JTable
    Par kazan dans le forum Composants
    Réponses: 1
    Dernier message: 30/05/2012, 19h58

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