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 sous condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Points : 49
    Points
    49
    Par défaut Somme sous condition
    Bonjour,

    Je cherche à faire une macro qui permette de calculer des valeurs en fonction de différents paramètres.

    En fait, j'ai des valeurs qui sont associées à des dates et des ref artciles je souhaiterai que ces valeurs soient additionné en fonction de la date et des ref

    En gros les valeurs sont sommés si et seulement si la date et la ref article est la mêmes.

    Ensuite les valeurs sont rapatrié dans une premiere feuil et dans une colonne par rapport à leur date et ref article

    Voici la macro


    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
    Sub test()
     
    Dim i As Integer, j As Integer
    Dim ref As String
    Dim valeur As Long
    Dim dateval As Date
     
    i = 14
    j = 80
    While Not IsEmpty(Worksheets("Data Global").Cells(i, 1))
     
    valeur = 0
    ref = Worksheets("Data Global").Cells(i, 1)
    dateval = Worksheets("Data Global").Cells(i, 2)
     
     
        While Not IsEmpty(Worksheets("prestation").Cells(j, 1))
            If Worksheets("prestation").Cells(j, 1) = dateval And Worksheets("prestation").Cells(j, 2) = ref Then
                valeur = valeur + Worksheets("prestation").Cells(j, 6)
            End If
        j = j + 1
        Wend
     
    Worksheets("Data Global").Cells(i, 8) = valeur
     
    i = i + 1
    Wend
     
    End Sub
    J ai du faire un filtrre élaboré pour pouvoir filtrer les données redondantes

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    Quelle est la question?

  3. #3
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Points : 49
    Points
    49
    Par défaut
    Ben en fait la macro ne marche pas

    ca m'affiche rien , ca marque débogage

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Si y'a rien de confidentiel envoie carrement le fichier, sinon fait un fichier avec des données bidon et fait le suivre, on gagnera du temps
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    bonjour à tous

    La macro ne fonctionne pas , ca marque debogage

    Tu click sur le bouton debogage, et ca t'affiche ta ligne qui bug, et ensuite tu dis quelle ligne bug

    parceque la a part une incoherence je n'ai rien vu

    l'incoherence :
    tu initialises I à 14, j à 80
    ton premier while boucle sur le i et ton deuxieme sur le j

    donc dans ta 2eme boucle je comprends que tu testes chaque ligne de la feuille prestation et ce de la 80 à la prochaine ligne vide et tu la compares avec les reference si c'est ok, tu additionnes la valeur de la colonne F dans la variable valeur

    J n'estant pas reinitialisé à l'interieur de la premiere boucle, meme s'il n'y a pas debogage, tu n'aurais qu'un seul montant

    ceci me parrait plus logique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    i = 14
    While Not IsEmpty(Worksheets("Data Global").Cells(i, 1))
     
    j = 80
    valeur = 0
    ref = Worksheets("Data Global").Cells(i, 1)
    donc si l'erreur continue : le code de l'erreur, et la ligne serait souhaitable

    bonne soirée

    Ps : Dans le cas que j'ai pu comprendre, un macro n'est pas indispensable, une formule de base excel peut le faire, et surement plus rapidement
    Wilfried

  6. #6
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Points : 49
    Points
    49
    Par défaut
    La ligne qui déconne est la ligne en rouge je comprends pas pourqoi sa ne marche pas

    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
    Sub test()
     
    Dim i As Integer, j As Integer
    Dim ref As String
    Dim valeur As Long
    Dim dateval As Date
     
    i = 14
    
    While Not IsEmpty(Worksheets("Data Global").Cells(i, 1))
    j = 80
    valeur = 0
    ref = Worksheets("Data Global").Cells(i, 1)
    dateval = Worksheets("Data Global").Cells(i, 2)
    
    
        While Not IsEmpty(Worksheets("prestation").Cells(j, 1))
            If Worksheets("prestation").Cells(j, 1) = dateval And Worksheets("prestation").Cells(j, 2) = ref Then
                valeur = valeur + Worksheets("prestation").Cells(j, 6)
            End If
        j = j + 1
        Wend
        
    Worksheets("Data Global").Cells(i, 8) = valeur
     
    i = i + 1
    Wend
     
    End Sub
    Mes valeurs doivent etre rapatrié dans le feuille data global dans la colonne H et à partir de la ligne 14

    Les données se trouvent dans la feuilml prestation et débute à la ligne 80


    les dates se situe dans la colonne A de la feuil prestation et les ref dans le colonne B et les valeurs sont dans la colonne F .

    La somme des valeurs doit être faite si et seulement si les dates et les ref sont communes sinon les données doivent rapatrié simplement c'est à dire que si pour une date il n'y a qu'une ref il faut rapatrié cette valeur de la ref

    Merci pour votre coup de main vous me sauvez la vie

  7. #7
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Points : 49
    Points
    49
    Par défaut
    Voici un fichier bidon qui reprend comme exemple ce que je cherche a faire

    par avance merci
    Fichiers attachés Fichiers attachés
    • Type de fichier : xls EX.xls (17,0 Ko, 54 affichages)

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    D'après ton fichier exemple, tu intervertis la référence et la date dans les lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            ref = Worksheets("Data Global").Cells(i, 1)
            dateval = Worksheets("Data Global").Cells(i, 2)
    Ça devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            ref = Worksheets("Data Global").Cells(i, 2)
            dateval = Worksheets("Data Global").Cells(i, 1)

  9. #9
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Points : 49
    Points
    49
    Par défaut
    en fait sa marche mais j'ai un autre problème car j'avais fait un filtre élaboré pour supprimer les doublons et la macro calcule toutes les valeurs et ne tient pas compte du filtre.

    Comment pourrais -je faire pour soit qu'elle prenne en compte le filtre ?

    Soi qu'elle supprimme les doublons de mes données (je n'ai pas mis des doublons dans le fichier exemple) ?


    Merci beaucoup pour votre aide

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    J'ai modifié ta procédure de façon à ce que le filtre avancé produise un résultat moins aléatoire. Je crois bien qu'elle accomplit ce que tu voulais.

    J'ai ajouté une feuille "Critères" et une feuille "Copie" pour parvenir à extraire les données "prestation" filtrées et j'ai utilisé une méthode plus appropriée pour adresser les cellules...

    Il faut savoir que le AdvancedFilter ne fonctionne pas très bien dans sa version "Action:=xlCopyInPlace". On se butte à l'impossibilité d'accéder aux cellules visibles quand on filtre et défiltre plusieurs fois de suite...

    En passant, ta discussion "Problème macro excel" est redondante et devrait être supprimée. C'est la règle.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Points : 49
    Points
    49
    Par défaut
    merci beaucoup pour le coup de main


    CA MARCHE !!!!!!!


    merci_ vous me sauvez la vie

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

Discussions similaires

  1. Calculer une somme sous conditions.
    Par Julieta dans le forum Excel
    Réponses: 1
    Dernier message: 22/02/2010, 19h36
  2. Faire une somme sous condition
    Par maystreet dans le forum Deski
    Réponses: 1
    Dernier message: 16/03/2009, 16h43
  3. Somme sous condition
    Par Antale dans le forum MATLAB
    Réponses: 5
    Dernier message: 07/10/2008, 17h58
  4. Somme sous condition
    Par sunvialley dans le forum Débuter
    Réponses: 9
    Dernier message: 30/04/2007, 14h51
  5. [Excel] Calcul d'une somme sous condition
    Par netsabes dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/08/2006, 16h09

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