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 de certaines cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Par défaut Somme de certaines cellules
    Bonjour le forum,

    Donc j'ai fini mon projet de stage et il me reste plus qu'à le finaliser.

    Alors j'ai créé une macro avec Excel me permettant d'actualiser des données provenant d'Access et de me mettre en format blanc les valeurs que je ne désirais pas

    Mon code:
    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
    28
    29
    30
    31
    32
    33
    Sub Actualisation()
     
    'on classe d'abords la colonne par ordre alphabétique ou inverse
    'au départ il faudrai d'abords compter les lignes
    Range("A1:J10").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
     
    With Cells                      'mettre la feuille au format par defaut
        .Font.ColorIndex = 0        'police noire
        .Interior.ColorIndex = 0    'sans fond
    End With
    Range("E1").Select             'Selection d'une cellule
    Selection.QueryTable.Refresh BackgroundQuery:=False     'actualisation des données
     
     
    'on compte nombre de ligne
    nb_ligne = 1
    While Cells(nb_ligne, 1) <> ""
        nb_ligne = nb_ligne + 1
    Wend
     
     
    'on enlève les doublons:
      For i = 2 To nb_ligne
        If Cells(i, 1) = Cells(i - 1, 1) Then
            Range("A" & i & ":J" & i).Font.ColorIndex = 2
     
     
        End If
      Next i
    End Sub
    Maintenant je voudrai faire un programme me permettant de faire la somme de certain prix, exemple en couleur en pièce jointe.


    Je suis débutant en programmation.

    Si vous désirez plus d'info.

    Cordialement,
    Bubut
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    selectionne ta cellule, garde la valeur en memoire puis increment ta valeur temporaire avec chaque nouvelle valeur et sa passera.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim temp
    temp = 0
    For i = 1 To nblignes
        If Cells(i,"A") = "ce que tu veux" Then
              temp = temp + Cells(i,"A").Value
        End If
    Next i
    Ca devrait marcher ...

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Par défaut
    Bonjour peaceandloveman01,

    J'ai pas tout compris au niveau de la valeur temporaire et de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Cells(i,"A") = "ce que tu veux" Then

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    Dsl ...
    La varialbe temporaire temp te permet de sommer des valeurs comprises dans certaines cellules sous Excel. J'utilise cette pirouette pour sommer des cellules avec un condition comme par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i,"A")<>"" Then
    La condition If que j'ai utilisé permet de choisir les cellules qu'on veut additionner entre elles. Est-ce un peu plus clair ?

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    La solution de Bubut est une solution directe, je t'en propose une autre.
    Au lieu de peindre ta cellule, masque temporairement les doublons

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      For i = 2 To nb_ligne 'masque les lignes
        If Cells(i, 1) = Cells(i - 1, 1) Then
            Range("A" & i & ":J" & i).EntireRow.Hidden = True
            'Range("A" & i & ":J" & i).Font.ColorIndex = 2 
        End If
      Next
    Ensuite il te reste à additionner les lignes visibles
    J'aurais voulu faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        'With Plage
            'Range("A1" & Range("A65535").End(xlUp).Row) = _
             Application.WorksheetFunction(Sum(.Address))
        'End With
    mais j'ai un pb avec SUM et j'ai trouvé plus rapide d'écrire autre chose que de trouver pourquoi. Alors je te propose ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Plage As Range
    Dim Cell As Range
    Dim Somme
        Set Plage = Application.Range("A1:A" & Range("A65535").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
        For Each Cell In Plage
            Somme = Somme + Cell
        Next
        MsgBox Somme
        Cells.EntireRow.Hidden = False 'rétablit l'affichage de toutes tes lignes
        Set Plage = Nothing
        Set Cell = Nothing
    Comme ça tu as le choix

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Voilà.
    Tu remplaces tout le dernier code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Set Plage = Application.Range("A1:A" & Range("A65535").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
        Cells(Range("A65535").End(xlUp).Row + 1, 1) = _
              Application.WorksheetFunction.Sum(Plage)
        Cells.EntireRow.Hidden = False 'rétablit l'affichage de toutes tes lignes
        Set Plage = Nothing
    Je fais toujours la même bêtise, je veux absolument mettre WorksheetFunction(fonction Excel) alors que c'est WorksheetFunction.fonction Excel
    Ce code place le résultat sur la première ligne vide

  7. #7
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 70
    Par défaut
    Bonjour ouskel'n'or,

    j'ai quasiment rien compris à tes lignes de programmation pour le calcul.

    En faite j'avais pas utilisé le masquage de cellule car j'avai peur que lors des tries, ça me mélange tout.

    Cordialement,
    Bubut

Discussions similaires

  1. [VBA-E]DELETEr des lignes quand SOMME de 2 cellules =0
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2006, 01h03
  2. [HTML/CSS] a:hover sur certaines cellules
    Par kahya dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/06/2006, 16h30
  3. [JTABLE]Colorier certaine cellule
    Par cameleon2002 dans le forum Composants
    Réponses: 3
    Dernier message: 31/12/2005, 10h15
  4. [JTable] Changer le style de certaines cellulles
    Par bourinator dans le forum Composants
    Réponses: 4
    Dernier message: 08/10/2005, 14h40
  5. [JTable] Empêcher sélection de certaines cellules
    Par Oliveuh dans le forum Composants
    Réponses: 6
    Dernier message: 28/07/2004, 12h47

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