Je suis en train de créer un code dans VBA mais je suis coincé.
Voici mon code
sub comptage()
dim cells As Range, compteur As Byte
compteur = 0
For each cells In sheets ("base de données").Range("I:I")
if cells = "client" then
compteur = compteur + 1
end if
next
Sheets ("stat").range ("A2").Vlaue = compteur
end sub
CE code fonctionne mais est trèss lent puisqu'il va regarder chaque cellule
dans la colonne I.
Je souhaiterais savoir comment intégrer la macro qui permet de séléctionner
jusqu'à la dernière cellule rempli dans la colonne I.
JE connais le code suivant pour atteindre la dernière ligne :
Range ("A1").End(xlDown.Offset (0,0).select.
Je n'arrive pas à l'intégrer dans la macro comptage.
Qques remarques : Ne pas réinventer une fonction surtout pour la remplacer par une boucle ! Il existe la fonction NB.SI (CountIf en vba) pour décompter sous condition Pour ton exemple (compter le nombre de "client" en I1:Ix) ça ferait :
Sub comptage() x = ['base de données'!I65536].End(3).Address MsgBox Application.CountIf(Range("'base de données'!I1:" & x), "client") End Sub
Autre remarque : éviter les noms de feuille avec espaces car ça complique inutilement l'exploitation en aval Dans le cas présent, pour définir la variable "x", ça oblige à entourer le nom (dans vba) par des apostrophes
AV
Qques remarques :
Ne pas réinventer une fonction surtout pour la remplacer par une boucle !
Il existe la fonction NB.SI (CountIf en vba) pour décompter sous condition
Pour ton exemple (compter le nombre de "client" en I1:Ix) ça ferait :
Sub comptage()
x = ['base de données'!I65536].End(3).Address
MsgBox Application.CountIf(Range("'base de données'!I1:" & x), "client")
End Sub
Autre remarque : éviter les noms de feuille avec espaces car ça complique
inutilement l'exploitation en aval
Dans le cas présent, pour définir la variable "x", ça oblige à entourer le nom
(dans vba) par des apostrophes
Qques remarques : Ne pas réinventer une fonction surtout pour la remplacer par une boucle ! Il existe la fonction NB.SI (CountIf en vba) pour décompter sous condition Pour ton exemple (compter le nombre de "client" en I1:Ix) ça ferait :
Sub comptage() x = ['base de données'!I65536].End(3).Address MsgBox Application.CountIf(Range("'base de données'!I1:" & x), "client") End Sub
Autre remarque : éviter les noms de feuille avec espaces car ça complique inutilement l'exploitation en aval Dans le cas présent, pour définir la variable "x", ça oblige à entourer le nom (dans vba) par des apostrophes
AV
denis P
Si tu utilise WorksheetFunction.CountIf tu n'as pas besoin de boucle, c'est plus rapide Exemple : Cherche le nb de "a" dans la colonne A. Denis p.
'''''''''''Denis Pasquier 2004''''''''''''''''''''''''' Option Explicit Sub test() Dim plage As Range Dim cherche As Variant Dim nb_occrence As Double cherche = "a" Set plage = Range("a1", Range("A65536").End(xlUp)) nb_occrence = ComptCel(plage, cherche) Range("C1").Value = nb_occrence Set plage = Nothing End Sub '''''''''''''''''''''''''''''' ''''''''''''''''''''''''''' Function ComptCel(plage As Range, ValeurCherchée As Variant) As Integer ComptCel = Application.WorksheetFunction.CountIf(plage, ValeurCherchée) End Function '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
"Stéphane" a écrit dans le message de news:
Bonjour,
Je suis en train de créer un code dans VBA mais je suis coincé.
Voici mon code
sub comptage() dim cells As Range, compteur As Byte compteur = 0
For each cells In sheets ("base de données").Range("I:I") if cells = "client" then compteur = compteur + 1 end if next Sheets ("stat").range ("A2").Vlaue = compteur end sub
CE code fonctionne mais est trèss lent puisqu'il va regarder chaque cellule
dans la colonne I.
Je souhaiterais savoir comment intégrer la macro qui permet de séléctionner
jusqu'à la dernière cellule rempli dans la colonne I.
JE connais le code suivant pour atteindre la dernière ligne : Range ("A1").End(xlDown.Offset (0,0).select.
Je n'arrive pas à l'intégrer dans la macro comptage.
D'avance merci de votre précieuse aide
Stéphane
Si tu utilise WorksheetFunction.CountIf tu n'as pas besoin de boucle, c'est
plus rapide
Exemple : Cherche le nb de "a" dans la colonne A.
Denis p.
'''''''''''Denis Pasquier 2004'''''''''''''''''''''''''
Option Explicit
Sub test()
Dim plage As Range
Dim cherche As Variant
Dim nb_occrence As Double
cherche = "a"
Set plage = Range("a1", Range("A65536").End(xlUp))
nb_occrence = ComptCel(plage, cherche)
Range("C1").Value = nb_occrence
Set plage = Nothing
End Sub
''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''
Function ComptCel(plage As Range, ValeurCherchée As Variant) As Integer
ComptCel = Application.WorksheetFunction.CountIf(plage, ValeurCherchée)
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''
"Stéphane" <Stphane@discussions.microsoft.com> a écrit dans le message de
news:8DE74B61-0BD9-4C94-A2CB-D55C8CD5B99A@microsoft.com...
Bonjour,
Je suis en train de créer un code dans VBA mais je suis coincé.
Voici mon code
sub comptage()
dim cells As Range, compteur As Byte
compteur = 0
For each cells In sheets ("base de données").Range("I:I")
if cells = "client" then
compteur = compteur + 1
end if
next
Sheets ("stat").range ("A2").Vlaue = compteur
end sub
CE code fonctionne mais est trèss lent puisqu'il va regarder chaque
cellule
dans la colonne I.
Je souhaiterais savoir comment intégrer la macro qui permet de
séléctionner
jusqu'à la dernière cellule rempli dans la colonne I.
JE connais le code suivant pour atteindre la dernière ligne :
Range ("A1").End(xlDown.Offset (0,0).select.
Je n'arrive pas à l'intégrer dans la macro comptage.
Si tu utilise WorksheetFunction.CountIf tu n'as pas besoin de boucle, c'est plus rapide Exemple : Cherche le nb de "a" dans la colonne A. Denis p.
'''''''''''Denis Pasquier 2004''''''''''''''''''''''''' Option Explicit Sub test() Dim plage As Range Dim cherche As Variant Dim nb_occrence As Double cherche = "a" Set plage = Range("a1", Range("A65536").End(xlUp)) nb_occrence = ComptCel(plage, cherche) Range("C1").Value = nb_occrence Set plage = Nothing End Sub '''''''''''''''''''''''''''''' ''''''''''''''''''''''''''' Function ComptCel(plage As Range, ValeurCherchée As Variant) As Integer ComptCel = Application.WorksheetFunction.CountIf(plage, ValeurCherchée) End Function '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''
"Stéphane" a écrit dans le message de news:
Bonjour,
Je suis en train de créer un code dans VBA mais je suis coincé.
Voici mon code
sub comptage() dim cells As Range, compteur As Byte compteur = 0
For each cells In sheets ("base de données").Range("I:I") if cells = "client" then compteur = compteur + 1 end if next Sheets ("stat").range ("A2").Vlaue = compteur end sub
CE code fonctionne mais est trèss lent puisqu'il va regarder chaque cellule
dans la colonne I.
Je souhaiterais savoir comment intégrer la macro qui permet de séléctionner
jusqu'à la dernière cellule rempli dans la colonne I.
JE connais le code suivant pour atteindre la dernière ligne : Range ("A1").End(xlDown.Offset (0,0).select.
Je n'arrive pas à l'intégrer dans la macro comptage.