Macro pour compter le nombre d'apparence d'un caractère
Yasn10
Messages postés
26
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour ,
Je souhaiterai avoir une macro qui calcule le nombre de fois qu'un mot "NT" figure chaque mois , sachant qu'il y a des cellules vides dans la colonnes des mois ,
Colonne F//Colonne G
01/2016------NT
vide-----------
vide-----------
02/2016------NT
vide-----------NT
vide-----------
02/2016------NT
vide-----------
vide-----------
03/2016------NT
vide
vide
03/2016------NT
vide-----------NT
vide-----------NT
'
'
'
J'ai essayé pas mal de formules et macros mais ça ne me calcule que les NT qui correspondent à une cellule remplie "02/2016" par exemple
Merci et Bonne journée/Soirée à tout le monde
Je souhaiterai avoir une macro qui calcule le nombre de fois qu'un mot "NT" figure chaque mois , sachant qu'il y a des cellules vides dans la colonnes des mois ,
Colonne F//Colonne G
01/2016------NT
vide-----------
vide-----------
02/2016------NT
vide-----------NT
vide-----------
02/2016------NT
vide-----------
vide-----------
03/2016------NT
vide
vide
03/2016------NT
vide-----------NT
vide-----------NT
'
'
'
J'ai essayé pas mal de formules et macros mais ça ne me calcule que les NT qui correspondent à une cellule remplie "02/2016" par exemple
Merci et Bonne journée/Soirée à tout le monde
2 réponses
-
-
Bonjour,
Essayez ceci
https://www.cjoint.com/c/GLkizyyIuhw
J'utilise les colonnes J et K pour les résultats.
Cdlt-
Merci beaucoup !!
j'ai testé mais on me demande de définir la variable "i"
Sub Comptage()
Dim DerLig As Long, DerLigFil As Long, L As Long
Application.ScreenUpdating = False
Columns("J:K").ClearContents 'on efface les précédents résultats
DerLig = [G100].End(xlUp).Row
'On récupère la liste des mois a l'aide d'un filtre avancé que l'on colle en colonne J
Range("F1:F" & DerLig).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("J1"), Unique:=True
DerLigFil = [F100].End(xlUp).Row 'Dernière Ligne du filtre
'on effectue un tri ascendant pour exclure les cellules vides
Range("J2:J" & DerLigFil).Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("J2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("J2:J" & DerLigFil)
.Header = xlNo
.Apply
End With
DerLigFil = [F100].End(xlUp).Row 'Dernière Ligne du filtre après triage
For i = 2 To DerLigFil
mois = Cells(i, "J")
'on recherche dans la colonne F le mois à traiter
Set C = Columns("F").Find(mois, LookIn:=xlValues)
L = C.Row
Do While L <= DerLig
If Cells(L, "F") <> "" And Cells(L, "F") <> mois Then GoTo MoisSuivant 'on est sur un autre mois, donc la recherche est finie pour le mois à traiter
If Cells(L, "G") = "NT" Then Cells(i, "K") = Cells(i, "K") + 1
L = L + 1
Loop
MoisSuivant:
Next i
[K1].Select
End Sub -
-
-
Bonjour,
Puisqu'il y a au moins 1500 lignes, dans un premier temps, il faut remplacer toutes les valeurs à 100 par 10000 pour être sûr de balayer toutes les lignes. Pas dit que cela soit suffisant pour régler votre problème, mais il faut bien commencer par quelque chose.Sub Comptage() Dim DerLig As Long, DerLigFil As Long, L As Long, I as long Application.ScreenUpdating = False Columns("J:K").ClearContents 'on efface les précédents résultats DerLig = [G10000].End(xlUp).Row 'On récupère la liste des mois a l'aide d'un filtre avancé que l'on colle en colonne J Range("F1:F" & DerLig).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("J1"), Unique:=True DerLigFil = [F10000].End(xlUp).Row 'Dernière Ligne du filtre 'on effectue un tri ascendant pour exclure les cellules vides Range("J2:J" & DerLigFil).Select ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("J2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Feuil1").Sort .SetRange Range("J2:J" & DerLigFil) .Header = xlNo .Apply End With DerLigFil = [F10000].End(xlUp).Row 'Dernière Ligne du filtre après triage For i = 2 To DerLigFil mois = Cells(i, "J") 'on recherche dans la colonne F le mois à traiter Set C = Columns("F").Find(mois, LookIn:=xlValues) L = C.Row Do While L <= DerLig If Cells(L, "F") <> "" And Cells(L, "F") <> mois Then GoTo MoisSuivant 'on est sur un autre mois, donc la recherche est finie pour le mois à traiter If Cells(L, "G") = "NT" Then Cells(i, "K") = Cells(i, "K") + 1 L = L + 1 Loop MoisSuivant: Next i [K1].Select End Sub -
-