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 :

Compter les occurences sur plusieurs feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut Compter les occurences sur plusieurs feuilles
    Bonjour

    Je souhaite compter le nombre de fois où une personne apparait dans une plage d'un planning. Chaque feuille représente 1 semaine.
    En fonction du nom de la cellule de la colonne A, je veux qu'il me recherche et me compte cette occurrence pour le placer à côté dans la colonne B

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
    Dim x, anest_decompte, feuille As Integer
     
    For anest_decompte = 2 To 4
         For feuille = 5 To Sheets.Count
                 x = Application.CountIf(Sheets(feuille).Range("C2:G5"), Sheets("Décompte").Range("A" & anest_decompte).Value)
     
         Sheets("Décompte").Range("B" & anest_decompte).Value = x
    Next
    Next
    End Sub
    Ce code fait planter excel. Je cherche depuis plusieurs heures mais ne trouve pas la source de mon erreur.

    Merci par avance pour votre aide

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    à mettre dans l'évènement Change de la Feuille "Décompte"
    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)
    Dim Sh As Worksheet
    Dim Compt As Integer
    If Target.Column = 1 And Target.Count = 1 Then
        For Each Sh In ThisWorkbook.Worksheets
            If Sh.Name <> ActiveSheet.Name Then Compt = Compt + Application.CountIf(Sh.Range("A1:X100"), Target.Value) 'Adapte à la plage du planning où sera fait le comptage
        Next Sh
        Application.EnableEvents = False
        Target.Offset(0, 1) = Compt
        Application.EnableEvents = True
    End If
    End Sub

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut
    Respect ! J'essaye de comprendre ce code mais j'y arrive difficilement.
    Je l'ai adapté à ma situation mais je ne crois pas que ce soit ce que je veux car il ne se passe rien quand je change le planning.
    J'ai du mal m'expliquer:

    j'ai 4 feuilles initiales qui me servent à faire des listes, des stat, etc... et sur la 3ième que j'ai appelé "décompte" je souhaite compter le nombre de fois où une personne apparait dans une plage d'un planning. Chaque feuille à partir de la 5ième représente 1 semaine.
    Dans la premiere colonne de la feuille "décompte" j'ai la liste des personne qui peuvent apparaitre. En fonction du nom de la cellule de la colonne A, je veux qu'il me recherche et me compte cette occurrence dans toutes les feuilles le nombre de fois où ils apparaissent (toujours dans la même plage de cellules) pour le placer à côté dans la colonne B. Cela revient à faire un TCD sur plusieurs pages (j'ai déjà vu cela) mais c'est plus "souple" avec le code.

    Merci encore de prendre du temps pour m'aider.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut
    aprés avoir longuement analysé ce code, je ne vois pas où on spécifie dans quelle feuille doit s'afficher les résultats. Par ailleurs le code est placé dans worksheet ?

  5. #5
    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 là que ça se passe:
    Citation Envoyé par mercatog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Target.Offset(0, 1) = Compt
    En fin de boucle on écrit la valeur de la variable compt dans la cellule juste à droite de la cellule modifiée.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut
    Comme pour un autre de mes post, cela ne fonctionne pas parce que le changement est déclenché par des listes de validation. Et en fait, cela ne déclenche pas le code (il parait que c'est un bug connu). J'ai essayé par un tableau croisé dynamique car mes data sont placées de façon identiques sur chaque feuille. Mais comme les noms des feuilles changent, il faut que je trouve le bon code. J'ai fais une proposition dans un autre post (http://www.developpez.net/forums/d98...que-dynamique/)

Discussions similaires

  1. [XL-2003] Supprimer des données sans effacer les formules sur plusieurs feuilles
    Par graphikris dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/04/2013, 11h18
  2. chercher les doublons sur plusieurs feuilles
    Par huître dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 09/06/2011, 15h48
  3. Réponses: 5
    Dernier message: 08/04/2010, 15h47
  4. [XL-2007] Compter le nombre d'occurences sur plusieurs feuilles
    Par grping dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2009, 18h18
  5. Lister les valeurs distinctes présentes sur plusieurs feuilles
    Par neupont dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/06/2008, 10h42

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