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 :

Macro avec condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut Macro avec condition
    Bonjour,

    je souhaiterai faire une macro avec certaines conditions. J'ai une liste de donnée avec des dates dans ma colonne A, des ref artciles dans ma colonne B et des valeurs dans ma colonne F.
    J'aurais besoin que la macro me fasse la somme des valeurs lorsque la ref article est la même et lorsque la date est la mm

    Donc il faut que seon les dates de ma colonnes A et les ref de ma colonne B il y a somme ou pas des valeurs situé dans ma colonne F

    donc si la date est la mm et la référence article est la même alors je fais une somme

    sachant que mes reférence article change tout le temps .

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Salut

    Tu les veux où tes sommes ?

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    Dans une collonne d'une autre feuille (Data Global) ou j'ai les ref articles, les dates.

    Il faut que les sommes soient incorporé dans la feuill data global.

    la valeur des sommes doivent s'incorporer en fonction de leur ref article et des dates

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Essaies ca. J'ai supposé que tout commence ligne 1, qu'il n'y a pas de cellules lignes vides entre 2
    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
    Sub test()
     
    Dim i As Integer, j As Integer
    Dim ref As String
    Dim valeur As Long
    Dim dateval As Date
     
    i = 1
    j = 1
    While Not IsEmpty(Worksheets("Data Global").Cells(i, 1))
     
    ref = Worksheets("Data Global").Cells(i, 1)
    dateval = Worksheets("Data Global").Cells(i, 2)
     
        While Not IsEmpty(Worksheets("Feuille1").Cells(j, 1))
            If Worksheets("Feuille1").Cells(j, 1) = dateval And Worksheets("Feuille1").Cells(j, 2) = ref Then
                valeur = valeur + Worksheets("Feuille1").Cells(j, 3)
            End If
        j = j + 1
        Wend
     
    Worksheets("Data Global").Cells(i, 3) = valeur
     
    i = i + 1
    Wend
     
    End Sub
    dis si ca marche

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    En fait j'ai du mal à comprendre ou je dois renseigner mes champs:

    Dans ma feuil prestation j'ai

    colonne 1 mes dates A partir de la ligne 80
    colonne 2 mes ref A partir de la ligne 80
    colonne 6 mes valeurs A partir de la ligne 80

    la somme des valeurs doit ensuite être incorporer dans la feuille data global colonne 8 à partir de la ligne 14

    les valeurs doivent être incorporer à la suite en fonction de leur ref article

    Pareavnce merci beaucoupoupoiupup

    Ca marche sauf que j'ai qu' une seul valeur qui s'affiche tout au long de ma colonne

    ????

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Essaye ca, j'ai modifié un peu

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

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    j'ai trouvé
    place le j=80 apres dateval = blabla
    je l'avais mal placé. sorry

  8. #8
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    Ca ne marche pas il me mets un Debogage



    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))
     
    valeur = 0
    ref = Worksheets("Data Global").Cells(i, 2)
    dateval = Worksheets("Data Global").Cells(i, 1)
    j = 80
     
        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

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Chez moi ca marche.

    As-tu lancé le pas à pas pour voir où était le problème ? As-tu vérifié si les colonnes et lignes étaient bien les bonnes ? Que te dit le message d'erreur et à quelle ligne plante-t-il ?

    Mél

  10. #10
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    il comprend dateval comme etant = à 00:00:00

    il comprend aussi ref comme étant égal à "24/11/2007"

    Comprends pas ???

  11. #11
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Tu t'es trompé dans les colonnes.

    J't'ai mis
    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)
    et tu as mis
    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)
    Inverse, et tout rentrera dans l'ordre

  12. #12
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    parceque mes ref sont dans ma colonne 2 et mes dates dans ma colone 1

  13. #13
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Bein là il prend sous dateval du texte, qu'il ne comprend pas en date donc, et sous ref une date, le 24/11/2007. C'est donc que les colonnes sont inversées quelque part.

    envoie ton fichier si tu peux. sinon je ne vois pas trop d'où pourrait provenir l'erreur.

  14. #14
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    d'autres part comme j'avais des doublons de classe (J,P,Y,S,C,M) dans mes données j'ai fait un filtre élaboré pour pouvoir supprimer les doublons

    ca provient peut être de là

Discussions similaires

  1. [AC-2003] Macro avec conditions
    Par Magno dans le forum IHM
    Réponses: 11
    Dernier message: 25/07/2011, 14h11
  2. [XL-2007] Macros avec conditions
    Par GuillaumeBa dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/06/2011, 13h21
  3. Macro avec condition
    Par roidurif dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/05/2009, 14h22
  4. Macro avec conditions de sorties
    Par vivicente dans le forum VBA Access
    Réponses: 5
    Dernier message: 11/06/2008, 13h39
  5. exécution d'une macro avec condition
    Par casavba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/08/2007, 14h44

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