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 des cellules(-1,0) si la plage contient plusieurs fois une valeur [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 7
    Par défaut Somme des cellules(-1,0) si la plage contient plusieurs fois une valeur
    Bonjour à tous,

    J'ai une erreur 400 avec une macro que je tente d'écrire (je suis encore débutant en VBA, excusez-moi d'avance s'il y a des erreurs aberrantes dans le code ). Pour vous expliquer, la macro doit regarder quelles cellules de la plage F10:F100 contiennent la valeur "1", puis faire en sorte que la cellule F107 contienne la somme des cellules de la ligne supérieure aux cellules contenant "1".
    Par exemple, si dans F10:F100 on a F45 et F80 qui contiennent "1", alors F107=F44+F79.

    Je suppose que j'ai une erreur sur la formule des sommes, en fait je ne trouve pas comment écrire en VBA la somme de plusieurs offset(-1,0) lorsque les cellules sont égales à "1".

    Si quelqu'un aurait la solution, en vous remerciant d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub weightF()
     
    Dim UneCellule As Range
     
    Range(F10, F100).Select
     
    For Each UneCellule In Selection
        If UneCellule.Value = 1 Then
           Cells(107, F).Value = Sum(UneCellule.Offset(-1, 0))
        End If
    Next
     
    End Sub

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Problème avec Range et Cells :
    Cells(i,j), i et j sont numériques c'est la cellule ligne i et colonne j
    Range(cellule_en_texte) tu peux utiliser F10 dans ton range mais entre " donc Range("F10")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub weightF()
        Dim UneCellule As Range
            For Each UneCellule In Range("F10:F100")
                If UneCellule.Value = 1 Then
                   Cells(107,6).Value = Range("F107").Value + UneCellule.Offset(-1, 0)
                End If
            Next
    End Sub
    Cells(107,6) et Range("F107") sont en fait le même range.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub weightF()
    Dim UneCellule As Range
     
    For Each UneCellule In Range("F10:F100")
      If UneCellule.Value = 1 Then
        Cells(107, 6).Value = Cells(107, 6).Value + (UneCellule.Offset(-1, 0))
      End If
    Next
    End Sub

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 7
    Par défaut
    Merci beaucoup à vous deux !

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    Et dire qu'une simple formule de calculs fait l'affaire, code inutile !

    Consulter l'aide d'Excel de SOMME.SI, SOMMEPROD par exemple.

    Et si vraiment un code est nécessaire, utiliser une fonction dans le code s'avère souvent plus judicieux qu'une boucle
    et nécessite une seule ligne de code !

    Penser Excel avant VBA !

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

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

Discussions similaires

  1. calculer la somme des cellules d'un dbgrid
    Par fleurrouge dans le forum Composants VCL
    Réponses: 9
    Dernier message: 04/03/2010, 08h26
  2. [OpenOffice][Tableur] Somme des cellules TOTAL journalier
    Par Avinetor dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 02/10/2009, 14h38
  3. somme des cellules de plusieurs feuilles
    Par chagala dans le forum Excel
    Réponses: 4
    Dernier message: 08/06/2008, 11h37
  4. Somme des cellules non vides en VBA
    Par baldg dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/03/2008, 00h44
  5. faire une somme des cellules d'une selection
    Par prisme7 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2008, 23h23

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