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 :

Operation entre cellule de meme couleur


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Operation entre cellule de meme couleur
    Bonjour,
    Je suis debutant dans la programation VBA, ce que je veux faire, c'est que sur une colonne, j'ai certaines cellules en couleur grises, et je veux faire un macro qui parcours toute la colonne, en mettant sur chaque cellule de couleur grise, la somme des cellules au dessus, qui ne sont pas de couleur grises, jusqu'a la cellule grise d'avant;

    Merci beaucoup pour votre aide

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut et bienvenu sur Developpez.
    Avant donner reponse a ta question, sache qu'il existe des regles sur le forum que tu peux consulter ici

    Entre autre dans les regles tu dois d'abord effectuer une recherche sur le forum, histoire de voir si quelqu'un, un jour n'a pas eu le meme probleme que toi, ainsi tu aurais trouvé ca, qui je pense, pourra t'indiquer la marche a suivre pour resoudre ton probleme.

    http://www.developpez.net/forums/sho...nction+couleur

    Nous somme bien sur present si tu as le moindre probleme pour adapter se code, tu fourniras alors la partie de code qui te pose probleme (en n'oubliant pas les balise code, selection du bout de code + bouton #) et en indiquant les essai que tu as deja fais

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre actif Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Points : 236
    Points
    236
    Par défaut Salut
    Essaye ça

    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
    Sub Somme()
      Dim i As Integer
      Dim a As Variant
        i = 1
     
             While i < 100           'Nombre le ligne que tu as
               If Range("g" & i).Interior.Pattern = xlSolid Then
               Range("g" & i) = ""
               End If
             a = a + Range("g" & i)
             MsgBox a
     
             If Range("g" & i).Interior.Pattern = xlSolid Then
     
           Range("g" & i) = a
     
        a = 0
        End If
     
        i = i + 1
        Wend
        End Sub
    Je fume du thé et je reste éveillé, le cauchemar continue.

  4. #4
    Membre actif Avatar de le_dilem
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2005
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Avril 2005
    Messages : 313
    Points : 236
    Points
    236
    Par défaut Avant d'executer
    dans la macro enleve le sinon tu vas executer etape par etape.
    Je fume du thé et je reste éveillé, le cauchemar continue.

  5. #5
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonjour,

    Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub TotauxDansCellulesGrises()
    Dim n As Integer, c As Range
            For Each c In Intersect(ActiveSheet.UsedRange, Columns("A:A"))
                    If c.Interior.Pattern = xlSolid Then
                        c.FormulaR1C1 = "=SUM(R[-" & n & "]C:R[-1]C)"
                        n = 0
                    Else
                        n = n + 1
                    End If
            Next
    End Sub
    Ici le traitement prend en compte les cellules de la colonne A uniquement. A adapter selon tes besoins.

    Le principe est d’utiliser un compteur (n, ici). Quand on rencontre une cellule qui a un fond (grisé ou non, car il y a plusieurs nuances de gris, et j’ignore laquelle tu utilises), on y inscrit une formule avec le sous-total des n cellules précédentes, et on remet le compteur à zéro.

    Il y a 2 interprétations pour cette phrase:

    jusqu'à la cellule grise d'avant
    Cette dernière cellule peut être incluse ou non. Mon exemple de code ne l'inclut pas.

    Pour l’inclure, il faudrait remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                        c.FormulaR1C1 = "=SUM(R[-" & n & "]C:R[-1]C)"
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                        c.FormulaR1C1 = "=SUM(R[-" & n + 1 & "]C:R[-1]C)"
    Par ailleurs, cet exemple n’est qu’un point de départ : cela fonctionne très bien si chaque cellule grisée est précédée d’au moins une cellule non grisée.

    Par contre, si 2 cellules grisées sont l’une en dessous de l’autre, la seconde contiendra un zéro qui résulte d’une référence circulaire :

    La formule est le sous-total de la cellule située n lignes au-dessus, jusqu'à la cellule précédant celle qui contient la formule :

    En A10, si n = 4, la formule sera "=SOMME(A6:A9)", ce que l’on souhaite. mais si n = 0 (2 cellules grisées consécutives), la formule sera "=SOMME(A10:A9)", ce qui aboutit à une référence circulaire

    Un test supplémentaire est donc nécessaire, si le risque existe d’avoir 2 cellules grisées à la suite.

    De même, si on a une cellule grisée en ligne 1, Excel considère que la cellule "précédente" est celle qui se trouve en dernière ligne (A65536, ou A1048576 avec Excel 2007). La formule est alors traduite par "=SOMME(A:A)" ce qui conduit également à une référence circulaire, puisque par hypothèse, il s’agit de la formule en cellule A1.

    En outre, il n’y a aucune adaptation automatique des formules si on grise une cellule qui ne l’était pas, ou si on enlève le grisé d’une cellule qui l’était.

    Pour cela, il aurait fallu ajouter une procédure événementielle qui n’est pas faite.

    J'espère que cet exemple te permettra d’aller plus loin si nécessaire, car pour les cas les plus simples, il fonctionne directement.

    Cordialement,

    Michel Gaboly


    Citation Envoyé par abalboul Voir le message
    Bonjour,
    Je suis debutant dans la programation VBA, ce que je veux faire, c'est que sur une colonne, j'ai certaines cellules en couleur grises, et je veux faire un macro qui parcours toute la colonne, en mettant sur chaque cellule de couleur grise, la somme des cellules au dessus, qui ne sont pas de couleur grises, jusqu'a la cellule grise d'avant;

    Merci beaucoup pour votre aide
    Michel Gaboly
    Développeur Excel et VBA


    Pas de question technique par MP, je n’y répondrai pas, utilisez le forum - Merci
    Pensez à ajouter le tag

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/11/2010, 21h56
  2. [debutant] : Comment faire N ratio entre d'un meme Champ ?
    Par je_suis_un_arbre dans le forum Access
    Réponses: 2
    Dernier message: 05/01/2006, 09h27
  3. [CSS] Couleur et forme bordure entre cellules
    Par Trunks dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 10/05/2005, 14h19
  4. operation entre 2 tables
    Par faimo dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/02/2005, 10h13
  5. appel entre méthodes de meme classe
    Par frmaniako dans le forum C++
    Réponses: 8
    Dernier message: 10/09/2004, 22h55

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