NB.SI en vba c'est utilisable ?

soffy

XLDnaute Nouveau
Bonjour, :p

La fonction NB.SI a-t-elle son equivalent en VBA ?
En fait je veux tester la présence dans des cellules discontinues de caractère identique.

Si j'écris ce que je souhaite faire, ça donne :

Si pour chaque contenu des cellules e6 à e25 de la feuille 1
et pour ligne 4 de la feuille 2
colonne c e g h j l n p r t
NB.SI = 2

Afficher les zones double en rouge

Recommencer de ligne 4 à 38

Une suite de boucles, c'est peut-être pas faisable .... :eek:

Mais commençons par savoir si je peux utiliser NB.SI

Merci de votre aide

Sophie
 

Dan

XLDnaute Barbatruc
Re : NB.SI en vba c'est utilisable ?

Bonsoir,

NB.SI en VBA donne COUNTIF.

Mais pourquoi ne pas utliser une mise en forme conditionnelle en appliquant un motif rouge si deux valeurs sont identiques

- Sélectionne les cellules dans lesquelles tu vas encoder des valeurs (par ex A1à A10)
- vas dans menu/format/mise en forme conditonnelles
- choisis "la formule est" dans la liste
- A droite colle --> =NB.SI(A:A;A1)>1
- clique sur le bouton "format" et choisis une couleur dans "motif" puis OK

Fais un essai en mettant deux mêmes valeurs entre A1 et A10.

A te lire

Dan
 

Gael

XLDnaute Barbatruc
Re : NB.SI en vba c'est utilisable ?

Bonjour Soffy,

Essaye avec countif, ci-dessous un exemple de syntaxe:

Application.WorksheetFunction.CountIf(Sheets("Feuil1").Range("c3:c" & Sheets("Feuil1").Range("c65536").End(xlUp).Row), c.Value)

@+

Gael

Et bonsoir Dan, désolé je ne t'avais pas vu

Gael
 

ninbihan

XLDnaute Impliqué
Re : NB.SI en vba c'est utilisable ?

Bonsoir Soffy,

La plupart des fonction XL sont utilisables en VBA, dans le cas de NBSI il s'agit de countif précédé de WorksheetFunction ensuite les arguments sont à séparer par une virgule
ex:
___WorksheetFunction.countif(range("A:A"),cell.value=X)___

Pour info, pour avoir les fonctions équivalentes entre Xl et Vba, tu cherhes le fichier VBALIST ou LISTVBA selon ta version d'XL dans le rep d'installation, le troiséme onglet donne toutes les traductions.

Bonne soirée,

Edit: Ah désolé, pas vu Dan et Gael, bonsoir à tous les deux

Ninbihan
 

soffy

XLDnaute Nouveau
Re : NB.SI en vba c'est utilisable ?

Bonsoir Dan

J'ai essayé ce que tu m'as indiqué ça marche bien sur des cellules en plage continue. Mais moi je veux le faire sur une sélection de cellule (ex : c4; e4; g4 etc) et la ça marche pas :eek:

Tu aurais une solution ? :D

Merci

Sophie
 

Gael

XLDnaute Barbatruc
Re : NB.SI en vba c'est utilisable ?

Re,

En fait c'est la même formule que t'a envoyé Ninbihan. Mon exemple ajoutait simplement le calcul exact de la plage de C3 jusqu'à la dernière cellule utilisée, le c.value étant le critère à rechercher.

Cependant, cela ne répond pas à ta demande puisque tu souhaites traiter une plage discontinue.

Je réfléchis si je trouve une autre solution.

@+

Gael
 

cryoglobe

XLDnaute Nouveau
Re : NB.SI en vba c'est utilisable ?

Bonjour a tous

Voila, j'ai aussi un petit besoin d'aide au sujet de NB.SI au sein de VBA
Donc, plutot que d'ouvrir un autre message ... je viens ici ( en espérant bien faire )

Mon probleme est le suivant , je souhaite simplifier l'encodage d'un tableau de présence

Pour le moment c'est comme ce


Sat Sun Mon Tue Wed Thu Fri Sat Sun
01 02 03 04 05 06 07 08 09

PW PW P P X X P PW PW
XW XW MM MM MM MM MM XW XW
PW PW P X X P P PW PW
PW PW X X P P P PW XW
CAW CAW CA X CA CA CA XW XW

Ce qu'on ne voit pas c'est que de manière automatique, les samedi et dimanche ( le weekend ) ont un fond coloré ( histoire de s'y retrouver )

Apres tout le mois , j'ai différentes colonnes qui calcules certaines choses

Par exemple :

=(NBJO-(COUNTIF($F35:$AJ35,"M*")+COUNTIF($F35:$AJ35,"PCL")+COUNTIF($F35:$AJ35,"CSS")))/8*$E35
=COUNTIF($F37:$AJ37,"M")+COUNTIF($F37:$AJ37,"PCL")
=COUNTIF($F37:$AJ37,"*W")-COUNTIF($F37:$AJ37,"XW")

On voit immédiatement que lors de l'encodage et manuellement il faut rajouter un W pour mentionner le Weekend.
Du coup, mes formules doivent gérer les élements encodés pour retrouver le valeurs *W , CAW , XW , etc

Evidement, j'aurais préféré que l'encodage entre la semaine et le weekend soit le même;
et adapter mes formules pour qu'il y ai le NB.SI mais en plus une vérification si la cellule a une couleur de fond.


J'ai bien réussit a définir des fonctions VBA pour réagir seulement si le fond est coloré , mais pas a étendre le comportement
avec un NB.SI

Mes fonctions sont :

Function ISWeekend(cell As Range)

Application.Volatile True

If (ColorCell(cell) > 0) Then
ISWeekend = vbTrue
Else
ISWeekend = vbFalse
End If

End Function

Public Function ColorCell(Cible As Range) As Variant

Application.Volatile True
ColorCell = Cible.Interior.ColorIndex

End Function


Merci d'avance pour vos réponses et aide
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 390
Messages
2 087 952
Membres
103 683
dernier inscrit
Cescodelvar