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 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024 - 21 déc. 2017 à 16:57
yg_be Messages postés 23203 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 septembre 2024 - 21 déc. 2017 à 16:57
A voir également:
- Macro pour compter le nombre d'apparence d'un caractère
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
2 réponses
Whismeril
Messages postés
19144
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 septembre 2024
919
7 déc. 2017 à 11:58
7 déc. 2017 à 11:58
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
10 déc. 2017 à 09:26
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
Essayez ceci
https://www.cjoint.com/c/GLkizyyIuhw
J'utilise les colonnes J et K pour les résultats.
Cdlt
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
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
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
yg_be
Messages postés
23203
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 septembre 2024
1 536
>
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
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
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
23203
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 septembre 2024
15 déc. 2017 à 11:14
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 ..
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
>
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
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.
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
yg_be
Messages postés
23203
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 septembre 2024
1 536
>
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
15 déc. 2017 à 20:24
on continue à te demander de définir la variable "i" ?
7 déc. 2017 à 12:06
7 déc. 2017 à 12:22
Là faut attendre un meilleur que moi en VBA
7 déc. 2017 à 12:39
8 déc. 2017 à 22:36
11 déc. 2017 à 10:31
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"