Obtenir la colonne d'un objet type Variant si critère = true

Fermé
Dfordanger Messages postés 7 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 30 juin 2014 - Modifié par Chris 94 le 30/06/2014 à 02:25
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 30 juin 2014 à 09:24
Bonjour,
Voici mon problème : j'aimerais pouvoir compter le nombre d'occurrence d'une même valeur à l'intérieur d'une plage de cellules et noter au passage les colonnes où l'on trouve cette valeur.

Pour l'instant, ça donne ça :
Dim c As Variant 'la valeur qui nous intéresse
Dim valueCol As String 'colonne où se trouve la valeur "c"
Dim cCount As Integer 'nombre d'occurrences de la valeur "c"

valueCol = ""
cCount = Application.WorksheetFunction.CountIf(Range("PLAGE"), 5) '(à titre d'exemple, 5 est la valeur que nous recherchons dans le tableau)

For Each c in Range("PLAGE")
 if c=5 then
  valueCol = valueCol & ", " & c.Column
 end
Next c

Range("G5").Value = valueCol 'pour l'instant j'essaye d'inscrire "valueCol" dans une cellule à part pour tester si le système marche

end Sub


Pour une raison que j'ignore, la boucle For Each semble poser problème et rien ne s'affiche en cellule G5...

Merci d'avance pour votre aide !

Dfordanger
A voir également:

2 réponses

Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 37
30 juin 2014 à 06:16
Bonjour, dans cette partie :

if c=5 then
valueCol = valueCol & ", " & c.Column
end
Il manque End If (au lieu de end) à la fin de la condition, remplacez par :

if c=5 then
valueCol = valueCol & ", " & c.Column
End If
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 30/06/2014 à 09:32
Bonjour

De plus

Dim C as Range

dim ValueCol as Integer

C.column te renvoie le numéro de la colonne et non un texte

Si tu veux la lettre (A à Z)
dim valuecol as string
Mid(tacellule.Address, 2, 1)

si tu dépasse la colonne 26
if c.column>26 abd C;column<=52 then valueCol = valueCol & ", " & Mid(tacellule.Address, 2, 2)

Michel
0