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 :

Creation d'une formule avec une selection de cellule


Sujet :

Macros et VBA Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Creation d'une formule avec une selection de cellule
    Bonjour,

    J'essaie de créer une formule qui prend deux paramètres :
    Le 1er est une date
    Le 2eme est une plage de cellule dans une feuille différente.

    Cette formule va recherche des sommes dont le mois de la date de saisie de la piece correspond au mois de la date saisie dans ma feuille de calcul

    Pouvez vous m'aider SVP ?

    Merci par avance.

    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
    34
    35
    36
    Sub SommePeriode()
     
    End Sub
     
    Function SOMME_SI_PERIODE(MoisEnCours As Range, PlageSomme As Range) As Variant
    '*********************************************************
    ' Effectuer la somme des cellules en couleur *
    '*********************************************************
    Dim Cel As Range
    Dim SommeLigne
    Dim Somme As Double
    Dim Mois As Integer
     
    Mois = Range(MoisEnCours) 'On valorise la variable "Mois" par la valeur (Date) dans la cellule "MoisEnCours"
     
    If PlageSomme.Cells.Count > 1 Then
    SOMME_SI_PERIODE = CVErr(xlErrValue)
    Exit Function
    End If
     
    For Each Cel In PlageSomme
    If Cel.Rows.Hidden = False Then 'Si la ligne est masquée ne pas prendre en compte dans le calcul de la somme
     
     
     
    If Month(Cel.Offset(0, 1)) = Month(Mois) Then SommeLigne = Range(Cel.Offset(0, 13)) - Range(Cel.Offset(0, 14)) 'Additionne les sommes de la même ligne si la cellule est de la même période que la cellule du Mois en cours
     
     
    Somme = Somme + SommeLigne 'Additionne les sommes de la ligne avec celles précédentes
    End If
     
    Next
     
    SOMME_SI_PERIODE = Somme
     
    End Function
    Dernière modification par AlainTech ; 22/04/2017 à 20h25. Motif: Correction balises

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 759
    Points : 28 611
    Points
    28 611
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Est-ce une obligation de passer par une fonction VBA ?
    D'après tes explications, l'utilisation de la fonction native d'excel SOMMEPROD pourrait parfaitement répondre à ton attente
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,

    Si on s'intéresse au code, il y a quelques incohérences au niveau des déclarations de variables notamment.

    MoisEnCours est un Range, et plus loin, tu écris Range(MoisEnCours). Il faut utiliser directement MoisEnCours comme un Range. Par exemple, si tu veux récupérer la valeur de MoisEnCours, tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur = MoisEnCours.Value
    Tu déclares Mois comme un Integer, mais tu veux lui attribuer un Range (cf. Mois = Range(MoisEnCours) ). Si tu veux récupérer la valeur de MoisEnCours qui est a priori un Integer, alors tu fais comme je dis au-dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mois = MoisEnCours.Value
    Tu écris la condition If PlageSomme.Cells.Count > 1 et tu sors de la fonction si cette condition est vérifiée, puis tu fais une boucle sur la plage de cellules : For Each Cel In PlageSomme. Cette boucle me fait croire que tu veux que la plage de cellules contienne plus d'une cellule, ce qui est l'inverse de ce que tu vérifies avec ta condition. Est-ce que mon interrogation est bien claire?
    Ne serait-ce pas plutôt, si la plage de cellules ne contient qu'une seule cellule, alors on sort de la fonction?

    Bon, après, il faut aussi prendre en compte la remarque de Philippe Tulliez
    Bon courage!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci Philippe Tulliez, je ne connaissait pas cette formule, elle me semble tout a fait approprié.

    Merci aussi à Riaolle, je vais creuser, grâce a tes explications, cela m entrainera pour mieux comprendre le langage VBA.
    Dernière modification par AlainTech ; 22/04/2017 à 20h26. Motif: Fusion

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

Discussions similaires

  1. [XL-2003] [FORMULE] Recopier une formule avec mise à jour automatique
    Par Suimei dans le forum Excel
    Réponses: 4
    Dernier message: 07/12/2010, 17h07
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. Souci avec une formule par une fonction Selection.validation
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 02/08/2007, 22h45
  4. [VBA-Excel] Calcul d'une formule avec une inconnue
    Par micwiss dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/10/2006, 16h04

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