macro comptage

Le
marc
Bonjour à vous tous
Voici mon problème.
Pour chacune des colonnes (De F à S), il y a des événements.
Pour la colonne A, j'ai le nom des employés( B jusqu'à E, informations supplémentaires).
Lorsque je vais inscrire un employé pour un événement, je vais lui mettre un X. Par contre, il ne peut pas y avoir plus de 40
employés par événement.
J'aimerais avoir une macro qui dit que lorsque je mettrai le 41ième X ou plus, qu'Excel refuse son inscription avec un msgbox
disant: Il y a déjà 40 personnes d'inscrites.
En espérant avoir été assez clair, sinon, je pourrai vous envoyer le fichier.
Merci
marc
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JPMonnier
Le #20197231
Bonsoir,
Supposons des salariés de A2 à A100
proc a mettre dans la Feuil1 (VBA)
'procédure pour contrôler le nb de x dans la colonne F
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F2:F100")) Is Nothing Then
For Each n In Range("F2:F100")
If n = "x" Then
c = c + 1
End If
If c > 40 Then
MsgBox "plus de 40 salariés pour un événement"
MsgBox "supprimer un x pour un salarié"
Exit Sub
End If
Next
End If

à adapter aux autres colonnes
--
Cordialement



"marc" news:
Bonjour à vous tous
Voici mon problème.
Pour chacune des colonnes (De F à S), il y a des événements.
Pour la colonne A, j'ai le nom des employés( B jusqu'à E, informations
supplémentaires).
Lorsque je vais inscrire un employé pour un événement, je vais lui mettre
un X. Par contre, il ne peut pas y avoir plus de 40 employés par
événement.
J'aimerais avoir une macro qui dit que lorsque je mettrai le 41ième X ou
plus, qu'Excel refuse son inscription avec un msgbox disant: Il y a déjà
40 personnes d'inscrites.
En espérant avoir été assez clair, sinon, je pourrai vous envoyer le
fichier.
Merci
marc



garnote
Le #20197561
Ou bien quelque chose du genre :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ici As Range
Dim n As Long
Set ici = Range("F2:F100")
If Not Intersect(Target, ici) Is Nothing Then
n = Application.CountIf(ici, "x")
If n > 40 Then
Target.Select
Target.ClearContents
MsgBox "Il y a déjà 40 personnes d'inscrites."
End If
End If
End Sub

Cette macro ne fait pas la différence entre x et X
et tu dois entrer un seul x ( X ) à la fois.

Serge



"marc"
Bonjour à vous tous
Voici mon problème.
Pour chacune des colonnes (De F à S), il y a des événements.
Pour la colonne A, j'ai le nom des employés( B jusqu'à E, informations
supplémentaires).
Lorsque je vais inscrire un employé pour un événement, je vais lui mettre
un X. Par contre, il ne peut pas y avoir plus de 40 employés par
événement.
J'aimerais avoir une macro qui dit que lorsque je mettrai le 41ième X ou
plus, qu'Excel refuse son inscription avec un msgbox disant: Il y a déjà
40 personnes d'inscrites.
En espérant avoir été assez clair, sinon, je pourrai vous envoyer le
fichier.
Merci
marc



marc
Le #20201491
Bonjour à vous deux
Cela fonctionne. Merci de votre aide
Marc

"garnote"
Ou bien quelque chose du genre :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ici As Range
Dim n As Long
Set ici = Range("F2:F100")
If Not Intersect(Target, ici) Is Nothing Then
n = Application.CountIf(ici, "x")
If n > 40 Then
Target.Select
Target.ClearContents
MsgBox "Il y a déjà 40 personnes d'inscrites."
End If
End If
End Sub

Cette macro ne fait pas la différence entre x et X
et tu dois entrer un seul x ( X ) à la fois.

Serge



"marc"
Bonjour à vous tous
Voici mon problème.
Pour chacune des colonnes (De F à S), il y a des événements.
Pour la colonne A, j'ai le nom des employés( B jusqu'à E, informations supplémentaires).
Lorsque je vais inscrire un employé pour un événement, je vais lui mettre un X. Par contre, il ne peut pas y avoir plus de 40
employés par événement.
J'aimerais avoir une macro qui dit que lorsque je mettrai le 41ième X ou plus, qu'Excel refuse son inscription avec un msgbox
disant: Il y a déjà 40 personnes d'inscrites.
En espérant avoir été assez clair, sinon, je pourrai vous envoyer le fichier.
Merci
marc







AndréBdR
Le #20213751
Je l'aime bien ta Macro.
Si j'osais, j'en demanderais un peu plus...
Au lieu de la seule lettre "x" (ou "X"), est-il possible de trouver dans une plage donnée le nombre
de cellules qui contiendraient le groupe de lettres "gar" au milieu d'un paquet de cellules qui
pourraient tout aussi bien s'écrire "regard" que "bigarreau" que "garnote aime bien les cigares", et
là, ça ferait seulement 3, à raison d'une seule détection par cellule?
Il s'agirait en gros d'une recherche du style *gar*.
Merci d'avance.

"garnote" %
Ou bien quelque chose du genre :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ici As Range
Dim n As Long
Set ici = Range("F2:F100")
If Not Intersect(Target, ici) Is Nothing Then
n = Application.CountIf(ici, "x")
If n > 40 Then
Target.Select
Target.ClearContents
MsgBox "Il y a déjà 40 personnes d'inscrites."
End If
End If
End Sub

Cette macro ne fait pas la différence entre x et X
et tu dois entrer un seul x ( X ) à la fois.

Serge



"marc"
Bonjour à vous tous
Voici mon problème.
Pour chacune des colonnes (De F à S), il y a des événements.
Pour la colonne A, j'ai le nom des employés( B jusqu'à E, informations supplémentaires).
Lorsque je vais inscrire un employé pour un événement, je vais lui mettre un X. Par contre, il ne
peut pas y avoir plus de 40 employés par événement.
J'aimerais avoir une macro qui dit que lorsque je mettrai le 41ième X ou plus, qu'Excel refuse
son inscription avec un msgbox disant: Il y a déjà 40 personnes d'inscrites.
En espérant avoir été assez clair, sinon, je pourrai vous envoyer le fichier.
Merci
marc








garnote
Le #20214171
Salut André,

Ceci te conviendrait-il ?
Sub gar()
Dim c As Range
Dim n As Long
For Each c In Selection
If InStr(1, c.Value, "gar", vbTextCompare) > 0 Then n = n + 1
Next c
MsgBox "Il y a " & n & " cellules contenant la chaîne gar au moins une
fois." _
& vbLf & "Les lettres g, a et r peuvent être en majuscule ou en
minuscule."
End Sub

Serge


"AndréBdR" 4aba80f2$0$23438$

Je l'aime bien ta Macro.
Si j'osais, j'en demanderais un peu plus...
Au lieu de la seule lettre "x" (ou "X"), est-il possible de trouver dans
une plage donnée le nombre de cellules qui contiendraient le groupe de
lettres "gar" au milieu d'un paquet de cellules qui pourraient tout aussi
bien s'écrire "regard" que "bigarreau" que "garnote aime bien les
cigares", et là, ça ferait seulement 3, à raison d'une seule détection par
cellule?
Il s'agirait en gros d'une recherche du style *gar*.
Merci d'avance.

"garnote" %
Ou bien quelque chose du genre :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ici As Range
Dim n As Long
Set ici = Range("F2:F100")
If Not Intersect(Target, ici) Is Nothing Then
n = Application.CountIf(ici, "x")
If n > 40 Then
Target.Select
Target.ClearContents
MsgBox "Il y a déjà 40 personnes d'inscrites."
End If
End If
End Sub

Cette macro ne fait pas la différence entre x et X
et tu dois entrer un seul x ( X ) à la fois.

Serge



"marc"
Bonjour à vous tous
Voici mon problème.
Pour chacune des colonnes (De F à S), il y a des événements.
Pour la colonne A, j'ai le nom des employés( B jusqu'à E, informations
supplémentaires).
Lorsque je vais inscrire un employé pour un événement, je vais lui
mettre un X. Par contre, il ne peut pas y avoir plus de 40 employés par
événement.
J'aimerais avoir une macro qui dit que lorsque je mettrai le 41ième X ou
plus, qu'Excel refuse son inscription avec un msgbox disant: Il y a déjà
40 personnes d'inscrites.
En espérant avoir été assez clair, sinon, je pourrai vous envoyer le
fichier.
Merci
marc












garnote
Le #20214511
Ou bien :

Sub garminuscule()
Dim c As Range
Dim n As Long
If TypeName(Selection) <> "Range" Then
MsgBox "Il faut sélectionner une plage de cellules" _
& vbLf & "avant de faire appel à moi ;-)"
Exit Sub
End If
For Each c In Selection
If InStr(1, c.Value, "gar") > 0 Then n = n + 1
Next c
MsgBox "Il y a " & n & " cellule(s) contenant la chaîne gar au moins une
fois." _
& vbLf & "Les lettres g, a et r étant toutes en minuscule."
End Sub

Serge



"garnote" %
Salut André,

Ceci te conviendrait-il ?
Sub gar()
Dim c As Range
Dim n As Long
For Each c In Selection
If InStr(1, c.Value, "gar", vbTextCompare) > 0 Then n = n + 1
Next c
MsgBox "Il y a " & n & " cellules contenant la chaîne gar au moins une
fois." _
& vbLf & "Les lettres g, a et r peuvent être en majuscule ou en
minuscule."
End Sub

Serge


"AndréBdR" 4aba80f2$0$23438$

Je l'aime bien ta Macro.
Si j'osais, j'en demanderais un peu plus...
Au lieu de la seule lettre "x" (ou "X"), est-il possible de trouver dans
une plage donnée le nombre de cellules qui contiendraient le groupe de
lettres "gar" au milieu d'un paquet de cellules qui pourraient tout aussi
bien s'écrire "regard" que "bigarreau" que "garnote aime bien les
cigares", et là, ça ferait seulement 3, à raison d'une seule détection
par cellule?
Il s'agirait en gros d'une recherche du style *gar*.
Merci d'avance.

"garnote" %
Ou bien quelque chose du genre :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ici As Range
Dim n As Long
Set ici = Range("F2:F100")
If Not Intersect(Target, ici) Is Nothing Then
n = Application.CountIf(ici, "x")
If n > 40 Then
Target.Select
Target.ClearContents
MsgBox "Il y a déjà 40 personnes d'inscrites."
End If
End If
End Sub

Cette macro ne fait pas la différence entre x et X
et tu dois entrer un seul x ( X ) à la fois.

Serge



"marc"
Bonjour à vous tous
Voici mon problème.
Pour chacune des colonnes (De F à S), il y a des événements.
Pour la colonne A, j'ai le nom des employés( B jusqu'à E, informations
supplémentaires).
Lorsque je vais inscrire un employé pour un événement, je vais lui
mettre un X. Par contre, il ne peut pas y avoir plus de 40 employés par
événement.
J'aimerais avoir une macro qui dit que lorsque je mettrai le 41ième X
ou plus, qu'Excel refuse son inscription avec un msgbox disant: Il y a
déjà 40 personnes d'inscrites.
En espérant avoir été assez clair, sinon, je pourrai vous envoyer le
fichier.
Merci
marc
















AndréBdR
Le #20215991
Parfait Serge.
Et mille excuses à Marc pour m'être infiltré dans son sujet sans crier gare.

"garnote"
Ou bien :

Sub garminuscule()
Dim c As Range
Dim n As Long
If TypeName(Selection) <> "Range" Then
MsgBox "Il faut sélectionner une plage de cellules" _
& vbLf & "avant de faire appel à moi ;-)"
Exit Sub
End If
For Each c In Selection
If InStr(1, c.Value, "gar") > 0 Then n = n + 1
Next c
MsgBox "Il y a " & n & " cellule(s) contenant la chaîne gar au moins une fois." _
& vbLf & "Les lettres g, a et r étant toutes en minuscule."
End Sub

Serge



"garnote" %
Salut André,

Ceci te conviendrait-il ?
Sub gar()
Dim c As Range
Dim n As Long
For Each c In Selection
If InStr(1, c.Value, "gar", vbTextCompare) > 0 Then n = n + 1
Next c
MsgBox "Il y a " & n & " cellules contenant la chaîne gar au moins une fois." _
& vbLf & "Les lettres g, a et r peuvent être en majuscule ou en minuscule."
End Sub

Serge


"AndréBdR" 4aba80f2$0$23438$

Je l'aime bien ta Macro.
Si j'osais, j'en demanderais un peu plus...
Au lieu de la seule lettre "x" (ou "X"), est-il possible de trouver dans une plage donnée le
nombre de cellules qui contiendraient le groupe de lettres "gar" au milieu d'un paquet de
cellules qui pourraient tout aussi bien s'écrire "regard" que "bigarreau" que "garnote aime bien
les cigares", et là, ça ferait seulement 3, à raison d'une seule détection par cellule?
Il s'agirait en gros d'une recherche du style *gar*.
Merci d'avance.

"garnote" %
Ou bien quelque chose du genre :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ici As Range
Dim n As Long
Set ici = Range("F2:F100")
If Not Intersect(Target, ici) Is Nothing Then
n = Application.CountIf(ici, "x")
If n > 40 Then
Target.Select
Target.ClearContents
MsgBox "Il y a déjà 40 personnes d'inscrites."
End If
End If
End Sub

Cette macro ne fait pas la différence entre x et X
et tu dois entrer un seul x ( X ) à la fois.

Serge



"marc"
Bonjour à vous tous
Voici mon problème.
Pour chacune des colonnes (De F à S), il y a des événements.
Pour la colonne A, j'ai le nom des employés( B jusqu'à E, informations supplémentaires).
Lorsque je vais inscrire un employé pour un événement, je vais lui mettre un X. Par contre, il
ne peut pas y avoir plus de 40 employés par événement.
J'aimerais avoir une macro qui dit que lorsque je mettrai le 41ième X ou plus, qu'Excel refuse
son inscription avec un msgbox disant: Il y a déjà 40 personnes d'inscrites.
En espérant avoir été assez clair, sinon, je pourrai vous envoyer le fichier.
Merci
marc





















garnote
Le #20219331
Et pour compter le nombre de cellules contenant
la chaîne gar une seule fois :

Sub gar_unique_minuscule()
Dim c As Range
Dim n As Long
If TypeName(Selection) <> "Range" Then
MsgBox "Il faut sélectionner une plage de cellules" _
& vbLf & "avant de faire appel à moi ;-)"
Exit Sub
End If
For Each c In Selection
If (Len(c) - Len(Replace(c, "gar", ""))) / Len("gar") = 1 Then n = n
+ 1
Next c
MsgBox "Il y a " & n & " cellule(s) contenant la chaîne gar une seule
fois." _
& vbLf & "Les lettres g, a et r étant toutes en minuscule."
End Sub

Serge


"AndréBdR" 4abb2c37$0$23487$

Parfait Serge.
Et mille excuses à Marc pour m'être infiltré dans son sujet sans crier
gare.

"garnote"
Ou bien :

Sub garminuscule()
Dim c As Range
Dim n As Long
If TypeName(Selection) <> "Range" Then
MsgBox "Il faut sélectionner une plage de cellules" _
& vbLf & "avant de faire appel à moi ;-)"
Exit Sub
End If
For Each c In Selection
If InStr(1, c.Value, "gar") > 0 Then n = n + 1
Next c
MsgBox "Il y a " & n & " cellule(s) contenant la chaîne gar au moins
une fois." _
& vbLf & "Les lettres g, a et r étant toutes en minuscule."
End Sub

Serge



"garnote" %
Salut André,

Ceci te conviendrait-il ?
Sub gar()
Dim c As Range
Dim n As Long
For Each c In Selection
If InStr(1, c.Value, "gar", vbTextCompare) > 0 Then n = n + 1
Next c
MsgBox "Il y a " & n & " cellules contenant la chaîne gar au moins
une fois." _
& vbLf & "Les lettres g, a et r peuvent être en majuscule ou en
minuscule."
End Sub

Serge


"AndréBdR" 4aba80f2$0$23438$

Je l'aime bien ta Macro.
Si j'osais, j'en demanderais un peu plus...
Au lieu de la seule lettre "x" (ou "X"), est-il possible de trouver
dans une plage donnée le nombre de cellules qui contiendraient le
groupe de lettres "gar" au milieu d'un paquet de cellules qui
pourraient tout aussi bien s'écrire "regard" que "bigarreau" que
"garnote aime bien les cigares", et là, ça ferait seulement 3, à raison
d'une seule détection par cellule?
Il s'agirait en gros d'une recherche du style *gar*.
Merci d'avance.

"garnote" %
Ou bien quelque chose du genre :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ici As Range
Dim n As Long
Set ici = Range("F2:F100")
If Not Intersect(Target, ici) Is Nothing Then
n = Application.CountIf(ici, "x")
If n > 40 Then
Target.Select
Target.ClearContents
MsgBox "Il y a déjà 40 personnes d'inscrites."
End If
End If
End Sub

Cette macro ne fait pas la différence entre x et X
et tu dois entrer un seul x ( X ) à la fois.

Serge



"marc"
Bonjour à vous tous
Voici mon problème.
Pour chacune des colonnes (De F à S), il y a des événements.
Pour la colonne A, j'ai le nom des employés( B jusqu'à E,
informations supplémentaires).
Lorsque je vais inscrire un employé pour un événement, je vais lui
mettre un X. Par contre, il ne peut pas y avoir plus de 40 employés
par événement.
J'aimerais avoir une macro qui dit que lorsque je mettrai le 41ième X
ou plus, qu'Excel refuse son inscription avec un msgbox disant: Il y
a déjà 40 personnes d'inscrites.
En espérant avoir été assez clair, sinon, je pourrai vous envoyer le
fichier.
Merci
marc

























Caetera
Le #20220211
> Et pour compter le nombre de cellules contenant
la chaîne gar une seule fois :



MsgBox [CountIf(plage,"gar")]

Etc
garnote
Le #20221731
Ave Caetera,

Alors là on ne parle pas de la même chose!
Sub compte()
MsgBox Application.CountIf(Selection, "gar")
End Sub
renvoie le nombre de cellules contenant exclusivement
gar en ne tenant pas compte de la casse.
Quant à ma macro du 24/09/2009 11:03,
elle tente de trouver le nombre de cellules
contenant une seule sous-chaîne gar (en minuscules)
dans une sélection de cellules contenant des chaînes comme
gar vbg garlk
sdfgarxxx
...
Du moins c'est ce que j'ai compris qu'il fallait faire
en lisant le message d'André : 23/09/2009 16:11

Serge




"Caetera" %
Et pour compter le nombre de cellules contenant
la chaîne gar une seule fois :



MsgBox [CountIf(plage,"gar")]

Etc



Publicité
Poster une réponse
Anonyme