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] Pb sur un For Each récalcitrant


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut [VBA-E] Pb sur un For Each récalcitrant
    Bonjour à tous,
    Un petit problème sur une boucle For Each.

    Ce que je voudrais que cette sal..... de code éxécute :
    Quand il y a un clique dans la cellule I2,
    Un scroll écran est déclenché(ça, c'est bon, ça marche)
    Puis un test est déclenché sur une plage de cellule avec un For Each.
    Le but est d'appliquer un format particulier à cette fameuse cellule I2(souligné, couleur texte et cellule), si la boucle trouve dans la plage testée une valeur supérieure à 0.
    Par défaut, toutes les cellules de cette plage testée sont égales à 0(somme d'autres cellules).

    Ce qui se passe réellement :
    Dés que je cliques dans la cellule I2, le format est appliqué quelque soit les valeurs contenues dans la plage testée !
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$I$2" Then
      Application.Goto Reference:=ActiveSheet.Range("A1507"), Scroll:=True
            For Each Cellule In Range("C1509:G1518")
            If Cellule.Value = 0 Then
                Range("I2").Font.Underline = xlUnderlineStyleNone
                Range("I2").Interior.ColorIndex = 33
                Range("I2").Font.ColorIndex = 34
                Else
                Range("I2").Font.Underline = xlUnderlineStyleSingle
                Range("I2").Interior.ColorIndex = 34
                Range("I2").Font.ColorIndex = 33
                Exit For
            End If
            Next Cellule
        End If
    End Sub
    Je sais, je suis nul, mais je ne comprends pas quand même !
    Merci d'avance.

    L'expérience est le nom que chacun donne à ses erreurs.
    Wilde (Oscar Fingal O'Flahertie Wills)

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ? ben par défaut tu applique bien le format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("I2").Font.Underline = xlUnderlineStyleNone 
                Range("I2").Interior.ColorIndex = 33 
                Range("I2").Font.ColorIndex = 34
    ? lorsque cellule = 0?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Ben oui, mais pourtant dés que je cliques dans I2, quelques soient les valeurs dans la plage testée, le format appliqué est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("I2").Font.Underline = xlUnderlineStyleSingle
    Range("I2").Interior.ColorIndex = 34
    Range("I2").Font.ColorIndex = 33
    Exit For
    :

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    chez moi cela fonctionne est tu sur que la plage :
    C1509:G1518 est bien vide ...? ... sinon tes 2 format sont bien proche... l'un / fond blue clair l'autre sur fond bleu foncé...

  5. #5
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 72
    Points : 78
    Points
    78
    Par défaut
    utilise pas value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       If Cellule.Value = 0 Then
    utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Sheets("blad1").Cells(1, 1) = "0" Then

  6. #6
    Membre confirmé
    Avatar de Petogaz
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 479
    Points : 580
    Points
    580
    Par défaut
    salut,

    déclare propement ta variable Cellule. et essais d'inverser la condition.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    >bbil,
    Non, ma plage n'est pas vide, puisque chaque cellule contient une formule.
    Mais elle sont par défaut, toutes égale à zéro à l'ouverture du classeur.
    ET oui, effectivement les deux formats à appliquer sont proches mais c'est voulu, pour une question d'esthetisme et de sobriètè de mon classeur.

    >Bonjour chmod777
    Je suis désolé, mais j'ai essayé ton truc et c'est pareil

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Petogaz
    déclare propement ta variable Cellule. et essais d'inverser la condition.
    Je ne sais pas comment et où déclarer ma variable proprement ?
    Peux-tu éclairer ma lanterne ?
    Merci. :

  9. #9
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Hello
    Je viens de me lever, de prendre mon p'tit dej et d'avaler mon premier café. Donc, j'ai des yeux neufs!

    Citation Envoyé par Squelet
    si la boucle trouve dans la plage testée une valeur supérieure à 0.
    Alors pouquoi tester sur l'égalité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cellule.Value = 0 Then
    ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Salut zaza,
    J'espère que tu as passer une bonne nuit !
    Est-ce qu'il y a une importance de tester sur cette égalité là, plutôt que sur son contraire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cellule.value <> 0 then
    :

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Bon,
    ben maintenant, ça marche, alors que je n'ai rien changé !
    J'avoue que je suis un peu dépassé, je ne sais pas si je ne vais prendre le relais de zaza, et aller me coucher !!!!


  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Maintenant que ça marche j'aimerais faire évoluer le schmilblick.
    Comment puis-je faire pour que ma fameuse plage à (C1509;G1518) soit tester en permanence ?

  13. #13
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Citation Envoyé par chmod777
    c'est une bonne heure pour se lever
    à Rimouski, Canada, heure de l'Est, oui, tout à fait! Il est 8h16 en ce moment. Et je pense à vous quitter pour vaquer à mes occupations quotidiennes. Vous me manquerez...

    Squelet : Suis heureuse que ça marche maintenant.

    Pour que ton test se fasse en permanence... ?... Sur un événement SelectionChange ? ou quelque chose du genre ?

  14. #14
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    voir IsEmpty. Frapper IsEmpty dans macro, sélectionner puis F1...
    marche pas... puis ..marche ... = non réinitialisé ... puis réinitialisé, donc cette fois-ci = 0 ... et marche alors ...!

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    on peu savoir ce qu'il y as dans ta cellule I2 ? une formule ? (laquelle?)

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Il y a une fonction de somme toute simple du style A2+S5+J7+P4+.....

  17. #17
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par Squelet
    Maintenant que ça marche j'aimerais faire évoluer le schmilblick.
    Comment puis-je faire pour que ma fameuse plage à (C1509;G1518) soit tester en permanence ?
    en changeant de méthode .. et utilisant un l'événement WorkSheet_Change de la feuille concernée :
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, Range("C1509:G1518")) Is Nothing Then
         For Each Cellule In Range("C1509:G1518")
            If Cellule.Value = 0 Then
                Range("I2").Font.Underline = xlUnderlineStyleNone
                Range("I2").Interior.ColorIndex = 33
                Range("I2").Font.ColorIndex = 34
                Else
                Range("I2").Font.Underline = xlUnderlineStyleSingle
                Range("I2").Interior.ColorIndex = 34
                Range("I2").Font.ColorIndex = 33
                Exit For
            End If
          Next
     End If
     End Sub

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Je m'en vais essayer ça tout de suite.
    Merci bbil

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    J'ai essayé, mais j'ai un message d'erreur du style :

    Erreur de compilation

    Nom ambigu détecté : Worksheet_change

    :

  20. #20
    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 que tu as déjà un autre Worksheet_change dans le code de cette feuille.

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

Discussions similaires

  1. [XL-2003] Erreur 1004 sur boucle For each
    Par JonSnow dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/04/2010, 13h22
  2. [E-00] problème sur un for each
    Par zandru dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/10/2008, 11h28
  3. [VBA-E]PB sur une boucle for each next
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/07/2006, 15h47
  4. [VBA-A] Pb avec for each et listbox
    Par OtObOx dans le forum VBA Access
    Réponses: 3
    Dernier message: 29/05/2006, 19h40
  5. [VBA-E] erreur boucle for each
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2006, 16h38

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