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 :

[VBA-E] aide pour macro sur excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 29
    Points
    29
    Par défaut [VBA-E] aide pour macro sur excel
    Bonjour,

    Je souhaiterai avoir de l'aide pour recherché dans un tableau Excel les nouveau client de la semaine (une colone = une semaine 52 semaines au total) qui sont repérés avec une couleur spécifique et faire le calcul en bas de chaque colone je vous une partie du code qui a été réalisé par personne sur laquelle je me suis basé [mais je ne sait koi mettre dans l'apel de la fontction somme_cel_couleur(Feuil1 , ....)]
    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
    Private Sub somme_Click()
     
        Sum = somme_cel_couleur(Feuil1, bgcol)
     
    End Sub
     
    Function somme_cel_couleur(SearchArea As Object, Bgcolor As Range) As Double
     
        Dim macoul As Byte, cell As Range
        Dim somme As Double
     
        Application.Volatile
     
        somme = 0
     
        macoul = Bgcolor.Interior.ColorIndex
     
        For Each cell In SearchArea
     
            If cell.Font.ColorIndex = macoul Then
                somme = somme + cell.Value
            End If
     
        Next cell
     
        somme_cel_couleur = somme
     
    End Function

    Merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Essaie avec ca si ca foire dis moi ou...

    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
        Private Sub somme_Click()
            
    Sum = somme_cel_couleur(Feuil1.Range("A1:C100000"), vbRed)
    
        End Sub
    
    
    Function somme_cel_couleur(SearchArea As RANGE, Bgcolor as integer) As Double
            
        Application.Volatile
    
        somme = 0
    
        For Each cel In SearchArea.cells
    
            If cel.Font.ColorIndex = Bgcolor Then
       somme = somme + cel.Value
            End If
    
        Next cel
        
            somme_cel_couleur = somme
                
        
    End Function

  3. #3
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    salut


    il te demande un object comme 1er parametre, j'ai fais ca il y a un petit moment mais il me semble que c'a doit etre peu-etre le nom de ta feuille excel
    et pour ce qui est de ta variable bgcolor c'est un code couleur.

    moi perso j'aurai fai plus simple avec une fonction qui recoit en parametre d'entrée l'indice colonne.


    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    fonction somme_cel(col int) as double
     
    parcours colonne
               somme = somme + cell.value
    jusqu'a cell = ""
     
    ensuite pour ce qui est de la couleur tu genere le code couleur genre 
    #FF1188 grace à l'indice de ta colonne 
    ex : colonne 9 tu fai un pti code #FF9900
     
    tu renvoi ton resultat
    en faite l'utilisation de ta fonction devai surement se faire sur plusieurs feuilles.
    Si tu ne l'utilise uniquement que sur celle-ci l'adapter pour qu'elle ne recoive plus en parametre d'entrée la feuille sur laquelle elle devra faire le traitement.

    voila j'espere que c'a t'aidera

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Merci mais il y a un souci au niveau de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sum = somme_cel_couleur(Feuil1.Range("A1:C100000"), vbRed)
    erreur : la méthode Range de work sheet a echoué

  5. #5
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    ta feuille aussi s'appel feuil1 ??

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    oui elle s'appelle Feuil1

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Citation Envoyé par letoulouzin31
    Merci mais il y a un souci au niveau de :

    Sum = somme_cel_couleur(Feuil1.Range("A1:C100000"), vbRed)

    erreur : la méthode Range de work sheet a echoué
    Peut etre que j'ai exagéré dans les 0 lol mas 85536 lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sum = somme_cel_couleur(Feuil1.Range("A1:C3000"), vbRed)

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Je pense que sa marche mais il doit y avoir quelque trucs a changé merci beacoup. Juste une petite question le vbRed correspond à quoi??
    car en fait c'est la couleur de police a recherché est rose

  9. #9
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    c'est la couleur rouge...

    essaie un debug.print vbred
    et dans l'aide cherche un peu... Tu trouvera les variables vb assignées a des couleurs... Si tu ne trouve pas... Tu prend l'adresse d'une cellule que tu connais et qui contient la couleur, tu demande de t'afficher le code couleur par code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox cells(2,2).font.colorindex


    et tu note, puis tu remplace vbred par ce que tu ca...

    Oui c'est pour te donnée une idée... Faut changer qques trucs... Mais je connais pas tout de ton fichier, des ranges de recherche etc... Donc peu pas faire mieu :p

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Merci Tout Va m'être très utile.(je ne me plain pas de ne pas avoir plus de détaille je m'attendais à avoir des choses a modifier faut bien que je bosse un peu quand même sinon il n'y a pas d'intérêt.)

    Problème résolu (sauf exeption)

  11. #11
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    SI ta un prob hesite pas c cool

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Bon alor j'ai décider que je passerai que par la fonction et que je n'utiliserai pas de fonction graphique.

    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
     
     
    Function somme_cel_couleur(SearchArea As Range, Bgcolor As Integer) As Double
        Application.Volatile
     
        somme = 0
        For Each Cel In SearchArea.Cel
            If Cel.Font.ColorIndex = Bgcolor Then
                    somme = somme + Cel.Value
            End If
        Next Cel
     
        Return: somme
     
    End Function
    mais voilà avec sa g un problème quand je rentre la fonction sur ma feuille avec ceci:
    somme_cel_couleur("G1:G383",vbMagenta) sa me donne "#VALEUR"

    P.S.: oui oui je suis pas très bon en VB mais sa viendra je ne suis qu'à ma premiere année de BTS info en plein stage).
    Merci d'avance pour toute reponses

  13. #13
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    "G1:G383" ca n'a rien avoir avec un Range qu'attend la fonction...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      somme_cel_couleur(Nomdelafeuille.Range("G1:G383"),vbMagenta) sa me donne "#VALEUR"

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Je viens d'essayer mais quand je tape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     somme_cel_couleur(Feuil1.range("G1:G383");vbMagenta)
    Le résultat est le même
    Est ce qu'il n'y orai pas une erreur dans ma fonction au niveau de la boucle?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function somme_cel_couleur(SearchArea As Range, Bgcolor As Integer) As Double
        Application.Volatile
     
        somme = 0
        For Each Cel In SearchArea.Cel
            If Cel.Font.ColorIndex = Bgcolor Then
                    somme = somme + Cel.Value
            End If
        Next Cel
     
        Return: somme        
     
    End Function

    P.S.: je vien de voir que je n'vais pas déclarer la variable somme que je retourne mais résultat touour identique

  15. #15
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    C'est pas du VB, ça.

    Pour le retour, tu dois faire comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    somme_cel_couleur = somme

  16. #16
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    A la fin je ne m'en sort plus lol de lol Résolu ou pas ? Sii tu as encore des prob crée un nouveau message stp...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function somme_cel_couleur(SearchArea As Range, Bgcolor As Integer) As Double
        Application.Volatile
        
        somme = 0
        For Each Cel In SearchArea.Cel
            If Cel.Font.ColorIndex = Bgcolor Then
                    somme = somme + Cel.Value
            End If
        Next Cel
        
        'Return: somme    ARGH PAS BON
         somme_cel_couleur = somme 
        
    End Function
    Cette fonction tu l'appelle dans une feuille ou dans le code?

    Dans une feuille alors faut ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     somme_cel_couleur(G1:G383;vbMagenta)
    Dans le code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     somme_cel_couleur(Feuil1.range("G1:G383"),vbMagenta)

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 29
    Points
    29
    Par défaut RE aide macro Excel
    NON pas résolu tout me parait bon avec tout ce que vous m'avais dis mais non toujour et encor ce fichu #valeur


    P.S:OK je v créer un nouveau message (dsl pour cette errreur de resolu alor que finalement sa ne l'etait pas

  18. #18
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par letoulouzin31
    P.S:OK je v créer un nouveau message (dsl pour cette errreur de resolu alor que finalement sa ne l'etait pas
    NON!
    Continue dans celle-ci, sinon on perd l'historique de ton problème.

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Ben la je c pas trop comment faire car g tout essayer avec les informations données
    Ma fonction corrigée donne:
    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
     
    Function somme_cel_couleur(SearchArea As Range, Bgcolor As Integer) As Double
     
        Application.Volatile
        Dim somme As Double
     
        somme = 0
        For Each Cel In SearchArea.Cel
            If Cel.Font.ColorIndex = Bgcolor Then
                    somme = somme + Cel.Value
            End If
        Next Cel
        somme_cel_couleur = somme
     
    End Function
    Mais j'obtiens toujours le #VALEUR

  20. #20
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Encore une erreur qui n'était pas dans ma fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function somme_cel_couleur(SearchArea As Range, Bgcolor As Integer) As Double
        
        Application.Volatile
        Dim somme As Double
            
        somme = 0
        For Each Cel In SearchArea.Cells
            If Cel.Font.ColorIndex = Bgcolor Then
                    somme = somme + Cel.Value
            End If
        Next Cel
        somme_cel_couleur = somme
        
    End Function

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/01/2015, 19h34
  2. Aide pour macros dans Excell
    Par lucillion dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/05/2011, 18h59
  3. [XL-2007] Besoin d'aide pour macro sur un réseau
    Par scoubi77 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 20/10/2010, 19h58
  4. hello "besoin d'aide pour diagramme sur excel"
    Par katwar dans le forum Excel
    Réponses: 1
    Dernier message: 18/06/2007, 11h52
  5. [VBA-E][débutant]aide pour macro sous excel
    Par julyBL dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 09/06/2006, 22h42

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