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 :

Compteur excel incrémentation


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut Compteur excel incrémentation
    Bonjour,
    Je cherche à compter le nombre de fois qu'une cellule est modifiée.
    Cette cellule contient une formule qui affiche A ou B selon la valeur d'une autre cellule.

    En L1 s'affiche !PERDU ou GAGNE! et je voudrais qu'en L1 le nombre de perdu s'incrémente et en M1 le nombre de gagné.

    Pour l'instant, j'ai trouvé ce code mais il ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Compteur1 As Long, Compteur2 As Long
    Range("K1").Value = 0
    Range("M1").Value = 0
    Compteur1 = Range("K1").Value
    Compteur2 = Range("M1").Value
    If Target = J1 And L1 = "GAGNE!" Then Compteur1 = Compteur1 + 1
    Range("K1").Value = Compteur1
     
    If Target = J1 And L1 = "!PERDU" Then Compteur2 = Compteur2 + 1
    Range("M1").Value = Compteur2
     
    End Sub
    Rien ne s'affiche ni en K1 ni en M1.


    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    les explications sont un peu brouillon, tu aurait pas mélangé tes L1,M1, K1 et compagnie ??

    concernant le code, tu mélanges également les genres, par exemple (c'est pas le seul !) en utilisant non pas des adresses de cellules, mais des variables qui s'appellent "comme" des références, par exemple ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target = J1 And L1 = "GAGNE!"
    J1 est une variable pour VBA, tout comme L1


    je t'invite à corriger tes erreurs dans l'explication, et également contextualiser ta mecanique :

    - le compteur démarre quand ? ouverture du classeur ? de la feuille ? jamais de remise à 0 ?
    - à quel moment l'incrémentation doit se faire ?

    et peut être d'autres questions, que ton manque de clarté empêchent de mettre en lumière

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Je ne maîtrise pas forcément tout cela sur le bout des doigts en effet.

    Les deux cellules je n'avais pas prévu de retour à 0 autre que manuel.

    Les compteurs commencent à compter dès que l'une des 2 valeurs apparaît (si "!PERDU" apparaît en L1, K1 devient 1, si "GAGNE!" apparaît, M1 devient 1, à la prochaine modification de L1, l'un des 2 compteurs s'incrémente (K1 devient 2 et M1 ne change pas ou M1 devient 2 et K1 ne change pas)), je donne également la formule en L1 qui donne "!PERDU" ou "GAGNE!":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(SOMMEPROD((J1=A1:A1479)*1)<>0;"GAGNE!";"!PERDU")

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    ça devrait ressembler à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Cells(1, 10)) Is Nothing Then
            If Cells(1, 12) = "!PERDU" Then
                Cells(1, 11).Value = Cells(1, 11).Value + 1
            ElseIf Cells(1, 12) = "GAGNE!" Then
                Cells(1, 13).Value = Cells(1, 13).Value + 1
            End If
        End If
    End Sub

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Rien ne bouge à l'écran K1 et M1 restent totalement vide

    J'ai testé en mettant une MsgBox après les conditions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Cells(1, 10)) Is Nothing Then
            If Cells(1, 12) = "!PERDU" Then
            MsgBox "PERDU"
                Cells(1, 11).Value = Cells(1, 11).Value + 1
            ElseIf Cells(1, 12) = "GAGNE!" Then
            MsgBox "GAGNE"
                Cells(1, 13).Value = Cells(1, 13).Value + 1
            End If
        End If
     
        End Sub
    Et elles n'apparaissent pas.

    Apparemment, Excel ne détecte pas les "!PERDU" ou GAGNE!"

    En fait, j'ai une cellule qui génère un aléa et selon ce dernier, L1 passe de GAGNE a PERDU et j'utilise F9 pour passer au tour suivant (rafraîchir ma fonction ALEA())

    Ca donne l'impression que les macro sont désactivées????

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    rafraichir ton aléa avec F9, ce n'est pas modifier la valeur d'une cellule, au sens de l'évènement Change de ta feuille, c'est recalculer la feuille !
    donc quand tu fais F9, la procédure évènementielle ne se lance pas

    un contournement possible, utilise une cellule témoin, tu changes sa valeur au lieu de faire F9, ça rafraichira tes ALEA de la même manière
    et tu mets les coordonnées de cette cellule témoin dans la ligne 2 de ma proposition, à la place de Cells(1, 10)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. un compteur non incrémenté
    Par NulenVBA dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/12/2008, 17h06
  2. Réponses: 13
    Dernier message: 24/01/2008, 09h10
  3. [VBA-E] surveillance avec compteur Excel
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/04/2007, 21h34
  4. Importer des données et compteur auto incrémenté
    Par lutecefalco dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/04/2007, 10h27
  5. Accélerer un compteur Excel/VBA
    Par PedroBD dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 12/07/2006, 09h39

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