Formule incorrecte dans la macro Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
VDMICHEL
Membre fidèle
Membre fidèle
Messages : 479
Appréciations reçues : 3
Inscrit le : 13 novembre 2013
Version d'Excel : 2003

Message par VDMICHEL » 7 mai 2014, 15:24

Bonjour chers maîtres du VBA

La formule pour la colonne B de la feuille Sommaire est incorrecte. Elle additionne + 1 le nombre de fois qu'un employé fut requis. Par exemple, j'ai 17 fois le nom d'un employé dans le Registre, mais au sommaire il en compte 18!

Quelle serait la correction à apporter au code.

merci
Option Explicit

Private Sub Worksheet_Activate()
Dim DerLig As Integer, Référence As String, i As Integer, j As Integer
Dim Compteur_C As Integer, Compteur_D As Integer, Compteur_E As Integer, Compteur_F As Integer, Compteur_G As Integer, Compteur_H As Integer

Application.ScreenUpdating = False
DerLig = Range("A" & Rows.Count).End(xlUp).Row

Range("B4:H" & Rows.Count).ClearContents

For i = 4 To DerLig
    Référence = Range("A" & i)
    With Sheets("Registre")
        Range("B" & i) = Application.WorksheetFunction.CountIf(.Range("C:C"), Référence)
        For j = 6 To .Range("C" & Rows.Count).End(xlUp).Row
            If .Range("C" & j) = Référence Then
                If .Range("I" & j) = "R" Then Compteur_C = Compteur_C + 1
                If .Range("J" & j) = "R" Then Compteur_D = Compteur_D + 1
                If .Range("K" & j) = "Raison personnelle" Then Compteur_E = Compteur_E + 1
                If .Range("K" & j) = "Sans raison" Then Compteur_F = Compteur_F + 1
                If .Range("K" & j) = "Travaille déjà" Then Compteur_G = Compteur_G + 1
                If .Range("K" & j) = "Trop hrs/semaine" Then Compteur_H = Compteur_H + 1
            End If
        Next j
        
        Range("C" & i) = Compteur_C
        Range("D" & i) = Compteur_D
        Range("E" & i) = Compteur_E
        Range("F" & i) = Compteur_F
        Range("G" & i) = Compteur_G
        Range("H" & i) = Compteur_H
        
    End With
    
        Compteur_C = 0
        Compteur_D = 0
        Compteur_E = 0
        Compteur_F = 0
        Compteur_G = 0
        Compteur_H = 0
Next i

End Sub
Registre de comblement et refus.xls
(136.5 Kio) Téléchargé 8 fois
Avatar du membre
BrunoM45
Membre impliqué
Membre impliqué
Messages : 2'894
Appréciations reçues : 87
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 7 mai 2014, 16:27

Bonjour,

Normal :roll:
Tu as les noms qui figurent dans les premières lignes de 1 à 63 :?:

A+
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
Avatar du membre
VDMICHEL
Membre fidèle
Membre fidèle
Messages : 479
Appréciations reçues : 3
Inscrit le : 13 novembre 2013
Version d'Excel : 2003

Message par VDMICHEL » 7 mai 2014, 16:32

Zute la liste déroulante!

merci

Y a-t-il une portion de code que je peux ajouter pour exclure les lignes 1@63?

merci pour vos lumières.
Avatar du membre
BrunoM45
Membre impliqué
Membre impliqué
Messages : 2'894
Appréciations reçues : 87
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 7 mai 2014, 16:43

Re,

Simplement en déplaçant la liste dans une autre feuille ("Params" par exemple)
Il suffit de nommée cette liste, pour pouvoir l'utiliser en validation de donnée

Voir fichier joint :wink:

A+
Registre de comblement et refus.xls
(137 Kio) Téléchargé 4 fois
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
Avatar du membre
VDMICHEL
Membre fidèle
Membre fidèle
Messages : 479
Appréciations reçues : 3
Inscrit le : 13 novembre 2013
Version d'Excel : 2003

Message par VDMICHEL » 7 mai 2014, 16:54

D'accord, merci.

je vais simplement déplacer la liste déroulant dans une autre colonne, car je veux éviter l'onglet supplémentaire. Une solution dans le code VBA aurait été quand même super.

Merci encore
Avatar du membre
BrunoM45
Membre impliqué
Membre impliqué
Messages : 2'894
Appréciations reçues : 87
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 7 mai 2014, 17:30

Re,

Perso je n'aime pas mélanger mes listes déroulantes avec mes données

Tu t'apercevra a tes dépends que ça pose souvent des problèmes
Un onglet est facilement masquable

Mais il est vrai que rien ne sert d'écouter les "anciens" :roll:

Dans le code il suffit de remplacer la plage C:C par une plage du style C64:C65536

A+
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
Avatar du membre
VDMICHEL
Membre fidèle
Membre fidèle
Messages : 479
Appréciations reçues : 3
Inscrit le : 13 novembre 2013
Version d'Excel : 2003

Message par VDMICHEL » 7 mai 2014, 17:40

Non non, vous vous méprenez :oops: , j'ai un très grand respect des anciens, et je vais même suivre votre recommandation (masquer l'onglet).

bien à vous!
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message