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 Prod et VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut Somme Prod et VBA
    Bonjour à tous et à toutes,

    J'ai un problème sur lequel je bloque et je pense que quelques uns d'entre vous vont pouvoir m'aider à avancer, du moins je l'espère

    Je vous joins mon fichier de travail, je voudrais le faire encore évoluer de manière à supprimer mes formules sommeprod dans les cellules de calcul (C3:H12 Onglet calcul), en automatisant mes calculs avec VBA.

    Quand il n’y a qu’une condition j’ai utilisé les IF et les FOR, mais avec plus de conditions cela risque de faire évoluer mon projet dans quelque chose que je en souhaite pas, c'est-à-dire UNE USINE A GAZ.

    Mais en ce qui me concerne je suis bloqué car je ne vois pas comment faire.

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert 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 : 63
    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
    Par défaut
    Bonjour

    voila ta macro calculg ammaigrie et plus lisible :
    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 calculG()
     
        Dim CA(1 To 6) As Integer
        Dim CB(1 To 6) As Integer
        Dim cel As Range
        Dim ligne As Long, i As Long
     
        With Sheets("BD1")
            ligne = .UsedRange.Rows.Count
            For i = 3 To ligne
                CA(.Cells(i, 12).Value) = CA(.Cells(i, 12).Value) + 1
            Next i
        End With
     
        With Sheets("BD2")
            ligne = .UsedRange.Rows.Count
            For i = 3 To ligne
                CB(.Cells(i, 12).Value) = CB(.Cells(i, 12).Value) + 1
            Next i
        End With
     
        With Sheets("calcul")
            For i = 1 To 6
                .Cells(13, i + 2).Value = CA(i) + CB(i)
            Next i
        End With
     
    End Sub

  3. #3
    Membre Expert 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 : 63
    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
    Par défaut
    re:

    je viens de voir un probleme, usedrange renvoie 68 alors que le dernier n° de ligne est 60

    utilise plutot cette formulation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            ligne = .Range("A65536").End(xlUp).Row

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Bonjour,
    Je vois que j'arrive trop tard mais voici quand même une autre solution

    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
    Worksheets("calcul").Activate
    For Each cel In Range("C3:H12")
    NOMBRE = 0
    LIGNECEL = cel.Row
    COLONNECEL = cel.Column
     
        For Each celBD1 In Worksheets("BD1").Range("A3:A60")
            If celBD1 = cel.Offset(0, 2 - COLONNECEL) And celBD1.Offset(0, 11) = cel.Offset(2 - LIGNECEL, 0) Then
            NOMBRE = NOMBRE + 1
            End If
        Next
     
        For Each celBD2 In Worksheets("BD2").Range("A3:A60")
            If celBD2 = cel.Offset(0, 2 - COLONNECEL) And celBD2.Offset(0, 11) = cel.Offset(2 - LIGNECEL, 0) Then
            NOMBRE = NOMBRE + 1
            End If
        Next
    Worksheets("calcul").Activate
    cel.Value = NOMBRE
     
    Next

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Rhooo excellentissime, merci encore de votre aide.

    Ces codes vont beaucoup m’aider.

    Un gros résolus bien mérité et surtout ma reconnaissance (j’ai passé 3 heures à essayer de trouver des soluces hier, je débute en VBA)

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut à tous
    une proposition de plus
    A+

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Excellent merci beaucoup.
    Je vais d'une l'appliquer pour la formule calculT
    et de deux essayer d'utiliser cette syntaxe pour coder le reste, je m'y met de suite.


    Edit : merci pour la correction

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

Discussions similaires

  1. VBA : Somme Prod
    Par TonyRc dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/07/2010, 08h49
  2. [XL-2003] Somme.prod avec condition
    Par Philippe76 dans le forum Excel
    Réponses: 7
    Dernier message: 03/06/2010, 10h25
  3. [XL-2007] [Formules] Somme.Prod ne pas prendre en compte les celulles en erreur
    Par hardballer dans le forum Excel
    Réponses: 2
    Dernier message: 25/01/2010, 18h20
  4. Somme Double sur VBA Macro marche pas
    Par PtitSuisse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/06/2008, 15h14
  5. somme conditionnelle sous VBA
    Par léclaireur dans le forum Général VBA
    Réponses: 5
    Dernier message: 26/04/2007, 10h32

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