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 :

Problème macro sous.total


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 58
    Points : 27
    Points
    27
    Par défaut Problème macro sous.total
    Bonjour à tous,

    Je me permets de vous écrire car j'ai un problème avec ma macro.
    Je souhaite mettre une couleur différente pour les cellules sous.total étant supérieur à un seuil, sauf qu'elle ne fonctionne qu'une fois sur deux.


    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
    Sub test()
     
           Dim Cell As Range
     
        irow = Worksheets("Quid").Cells(Rows.Count, 1).End(xlUp).Row
     
        For Each Cell In Range("N1:N" & irow)
     
            If Cell.HasFormula And InStr(1, Cell.Formula, "SOUS.TOTAL", vbTextCompare) > 0 Then
            Cell.Interior.ColorIndex = 6
            End If
     
        Next
     
    End Sub
    Merci pour votre aide.

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    qu'entends-tu par "une fois sur deux" ? Ca loupe des lignes ou parfois tu lances la procédure et rien ne se passe ?
    Car je vois que tu travailles sur la plage de la feuille active ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cell In Range("N1:N" & irow)
    Range n'étant pas rattachée à une quelconque feuille nommée


    Ensuite, tu parles d'une notion de seuil, or à part tester si la formule de ta cellule contient "SOUS.TOTAL", il n'y a aucune condition liée au résultat de la formule

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    Oui j'execute la macro sur la feuille active.
    En fait c'est en changeant quelques variables qu'elle fonctionne.
    Je m'explique en mettant = 0 à la place de > 0 elle fonctionne.

    Tu dis qu'il n'y a pas de condition à part sous.total ?
    N'est ce pas une condition le "> 0" ?

    Merci à toi.

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    le ">0" est une condition liée à la fonction Instr()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InStr(1, Cell.Formula, "SOUS.TOTAL", vbTextCompare) > 0
    Instr() > 0 signifie que ta formule contient bien "SOUS.TOTAL" ... et uniquement ça

    Elle ne va pas vérifier le résultat de cette formule, il faut pour cela ajouter un nouveau test pour tester la valeur (.Value) de ton Cell

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    J'ai donc rajouré une condition sur le Celle avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            If Cell.HasFormula And InStr(1, Cell.Formula, "SOUS.TOTAL", vbTextCompare) = 0 And Cell.Value > 300 Then
    Mais aucun résultat.

    En fait après plusieurs tests j'ai constaté que la macro fonctionne si les 3 niveaux des cellules sont affichés par contres si je sélectionne seulement le niveau 2 la macro ne fonctionne pas.
    Je ne sais pas si j'ai raté quelque chose dans le code.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Points : 484
    Points
    484
    Par défaut
    Bonjour,
    Deux pistes :
    1. Mise en Forme Conditionnelle (pas besoin de VBA
    2. En VBA, remplacer SOUS.TOTAL par SUBTOTAL, ou utiliser la propriété FormulaLocal plutôt que Formula

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    Oui j'ai essayé la mise en forme conditionnelle mais du coup on peut seulement jouer sur la valeur de la cellule et non sur le contenu "sous.total".

Discussions similaires

  1. Macro sous total et export pdf
    Par hogun06 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/02/2014, 23h25
  2. [XL-2007] Tableau croisé dynamique, problème de sous-total
    Par loic_78 dans le forum Conception
    Réponses: 2
    Dernier message: 29/06/2012, 15h06
  3. [2005] Problème de sous total
    Par PtitFleur33 dans le forum SSRS
    Réponses: 0
    Dernier message: 04/08/2011, 17h14
  4. Problème de sous total en fin de page et en début page suiv.?
    Par dzsamca2008 dans le forum QuickReport
    Réponses: 3
    Dernier message: 18/07/2009, 23h19

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