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 :

Fonction VBA si condition


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
    Homme Profil pro
    Commercial
    Inscrit en
    Juillet 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2020
    Messages : 5
    Par défaut Fonction VBA si condition
    Bonjour,

    J'aimerais ajouter une condition d'execution a une fonction personnalisée de countif par couleur.
    Pourriez-vous m'aider ?

    L'idée c'est d'executer la fonction que pour les clients ayant une valeur 2 dans la colonne G.

    Voici la code de la fonction mise en palce, actuellement il fonctionne parfaitement mais ne tient pas compte du critere numerique en colonne G.


    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
     
     
    Function Color_Cell_Count(ColorCell As Range, DataRange As Range)
     
    Dim Data_Range As Range
    Dim Cell_Color As Long
     
    Cell_Color = ColorCell.Interior.ColorIndex
     
    For Each Data_Range In DataRange
     
        If Data_Range.Interior.ColorIndex = Cell_Color Then
            Color_Cell_Count = Color_Cell_Count + 1
        End If
     
    Next Data_Range
     
    End Function

    D'avance merci pour votre retour,

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par lissory Voir le message
    Bonjour,

    Essayez :
    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
     
     
    Function Color_Cell_Count(ColorCell As Range, DataRange As Range)
     
    Dim Data_Range As Range
    Dim Cell_Color As Long
    Dim ColonneDataRange As Long
     
        Cell_Color = ColorCell.Interior.ColorIndex
     
        For Each Data_Range In DataRange
            With Data_Range
                 ColonneDataRange = .Column
                 If .Interior.ColorIndex = Cell_Color And .Offset(0, 7 - ColonneDataRange) Then
                    Color_Cell_Count = Color_Cell_Count + 1
                 End If
            End With
     
        Next Data_Range
     
    End Function

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Commercial
    Inscrit en
    Juillet 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2020
    Messages : 5
    Par défaut
    Bonjour Eric,

    Merci de votre retour,
    Je comprend le concept et votre ajout est d un aide précieuse.

    Encore une bête question de la part d un débutant en VBA, est il possible de lui imposer la valeur d exécution dans la colonne?
    Si j ai une valeur de 2 dans la colonne G tu exécutes le compte et si tu trouves 7 tu ne considère pas cette ligne et vérifie la suivante?

    Bonne journée,

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par lissory Voir le message
    Autant pour moi !

    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
     
     
    Function Color_Cell_Count(ColorCell As Range, DataRange As Range)
     
    Dim Data_Range As Range
    Dim Cell_Color As Long
    Dim ColonneDataRange As Long
     
        Cell_Color = ColorCell.Interior.ColorIndex
     
        For Each Data_Range In DataRange
            With Data_Range
                 ColonneDataRange = .Column
                 If .Interior.ColorIndex = Cell_Color And .Offset(0, 7 - ColonneDataRange)=2 Then
                    Color_Cell_Count = Color_Cell_Count + 1
                 End If
            End With
     
        Next Data_Range
     
    End Function

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Commercial
    Inscrit en
    Juillet 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2020
    Messages : 5
    Par défaut
    Un tout grand merci pour ton aide.
    Ca fonctionne à la perfection pour mon besoin.

Discussions similaires

  1. [XL-2010] VBA afficher toutes les valeurs en fonction d'une condition
    Par zaza45 dans le forum Macros et VBA Excel
    Réponses: 43
    Dernier message: 11/07/2017, 11h01
  2. [XL-2010] Fonction Count if (condition sur une cellule) VBA
    Par AlexisB. dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/12/2016, 12h07
  3. Copier coller colonne en fonction d'un condition en vba
    Par oboulot dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/09/2015, 15h15
  4. [VBA-A] Condition pour boucle if
    Par ptitegrenouille dans le forum Access
    Réponses: 6
    Dernier message: 23/11/2005, 09h33
  5. Pb de lien entre Access et Excel pour des fonctions VBA
    Par favien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2005, 01h00

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