Macro pour compter le nombre d'apparence d'un caractère

Fermé
Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018 - Modifié le 7 déc. 2017 à 11:20
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 21 déc. 2017 à 16:57
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
A voir également:

2 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
7 déc. 2017 à 11:58
1
Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018
7 déc. 2017 à 12:06
Merci ! je l'ai essayé , elle fonctionne bien , mais il faut à chaque fois changer de plage ... il y a plusieurs tableaux ..
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
7 déc. 2017 à 12:22
Ha si tu ne donnes pas tous les éléments.
Là faut attendre un meilleur que moi en VBA
0
Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018 > Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024
7 déc. 2017 à 12:39
Merci !
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018
8 déc. 2017 à 22:36
bonsoir, peux-tu donner tous les éléments?
0
Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018
11 déc. 2017 à 10:31
Bonjour,

Il s'agit d'un tableau de 1500 lignes et je cherche à compter le nombre de fois les "NT" figure pour chaque mois, le problème c'est que dans la colonnes des mois il y a des cellules vides , mais qui correspondent aussi à des cellules où il y a le "NT"
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
10 déc. 2017 à 09:26
Bonjour,
Essayez ceci
https://www.cjoint.com/c/GLkizyyIuhw
J'utilise les colonnes J et K pour les résultats.
Cdlt
1
Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018
11 déc. 2017 à 10:28
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
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018
11 déc. 2017 à 15:45
bonjour, je pense qu'il suffit d'ajouter
 ,i as long
à la fin de la ligne commençant par
Dim
0
Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
15 déc. 2017 à 11:14
Mercii ! j'ai déjà fait ça mais toujours le meme problème, ça fonctionnes sur Excel 2007 mais pas sur 2013 je ne comprend pas pourquoi ..
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337 > Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018
15 déc. 2017 à 11:38
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
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Yasn10 Messages postés 26 Date d'inscription vendredi 24 novembre 2017 Statut Membre Dernière intervention 22 mars 2018
15 déc. 2017 à 20:24
on continue à te demander de définir la variable "i" ?
0