tortuegenie
Messages postés110Date d'inscriptionlundi 27 mars 2006StatutMembreDernière intervention21 octobre 2008
-
11 août 2006 à 08:28
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
13 août 2006 à 00:22
Bonjour je voudrai savoir comment faire pour compter combien de fois j'ai la valeur 888 dans la colonne K et savoir à quel numéro de ligne il se trouve.
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 11 août 2006 à 09:21
Salut,
Essaie cette petite fonction.
NOTE: Peu etre que excel est capable de le faire tout seul mais j'ai pas trouver comment
Private Function FindString(ByVal StrWhat As String, ByRef TabLignes() As Long) As Boolean
Dim LaCase As Range
'Activation de la feuille
Worksheets(4).Activate
'Redimensionnement du tableau de ligne
ReDim TabLignes(0)
'Selectionne la Colonne K
ActiveSheet.Columns("K:K").Select
'Pour chaque cellule
For Each LaCase In Selection
'Teste le la valeur de la cellule avec la veleur chercher
If Trim(LaCase.Text) = StrWhat Then
'On memorise le fait d'avoir trouve
FindString = True
'On ajoute une ligne au tableau
ReDim Preserve TabLignes( UBound (TabLignes) + 1)
'Et on stoke la ligne de la cellule courante
TabLignes(UBound(TabLignes)) = LaCase.Row
End If
Next
End Function
Dim TabLignes() As Long
If FindString("888", TabLignes) Then
'Ubound(Tablignes) te renvoie le nombre de fois
'ou la valeur a et trouve
'De Tabligne(1) a Tabligne(Ubound(Tablignes))
' te renvoie les nuemeros des lignes
End If
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 11 août 2006 à 11:04
Bouh jrivet, bouuuuuuuh
POur la première partie, à savoir, compter combien de fois on trouve 888 dans la colonne K, effectivement, Excel le fait tout seul : il suffit de mettre dans une cellule la formule suivante : =NB.SI(K:K;888).
Magique ^^
Par contre, la 2ème partie, c'est plus dur.
Je vais chercher.
En Excel pur, juste avec une formule, on doit pouvoir ressortir le n° de la ligne où un chiffre cherché se trouve, mais s'il y a plusieurs fois le même chiffre, plus dur.
Par contre, quand je te lis tortuegénie, j'ai un petit doute : "combien de fois j'ai la valeur 888 dans la colonne K et savoir à quel numéro de ligne il se trouve."
Tu veux tous les num de ligne de chaque occurrence de ton 888 ? Ou juste le premier numéro ? ou encore tu sais qu'il y en aura qu'une seule occurrence ?
Dans les 2 derniers cas, je ne doute pas de trouver la solution juste avec des formules. Dans le 1er, ca va être dur.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 11 août 2006 à 12:57
Alors, attention les yeux, j'ai la solution purement EXCEL.
D'abord, je vous donne la formule de ma première piste : Je n'ai pas gardé cette solution, mais elle est tellement belle que je me dois de vous la donner ^^
Tes chiffres sont dans la colonne K.
Dans la colonne L par exemple, sur mets cette formule (ici, dans la cellule L3) :
SI(ESTERREUR(DROITE(SI(K32;CELLULE("adresse";K3);"");(NBCAR(SI(K3=2;CELLULE("adresse";K3);""))-SI(ESTERREUR(CHERCHE("$";SI(K3=2;CELLULE("adresse";K3);"");2))=VRAI;"";CHERCHE("$";SI(K3=2;CELLULE("adresse";K3);"");2)))))=VRAI;"";DROITE(SI(K3=2;CELLULE("adresse";K3);"");(NBCAR(SI(K3=2;CELLULE("adresse";K3);""))-SI(ESTERREUR(CHERCHE("$";SI(K3=2;CELLULE("adresse";K3);"");2))=VRAI;"";CHERCHE("$";SI(K3=2;CELLULE("adresse";K3);"");2)))))
En face de chaque donnée correspondant à ton critère (moi, je cherchais le nb 2 dans ma colonne K), le numéro de ligne s'incrit.
Pb, impossible de concaténer pour enlever les espaces, autre qu'un filtre automatique, ce qui n'est pas intéressant dans une optique de simplification. Et sans contraction des infos, ça n'a aucun intérêt, autant interpréter l'adresse de la cellule.
Donc, j'attaque ma solution :
La colonne K contient donc une suite de chiffres dans laquelle tu cherches la valeur 888.
Dans une cellule (moi j'ai pris G5), tu colles la formule "=EQUIV(888;K:K;0)"
Qu'est ce que fait cette formule ? Elle cherche dans la colonne K, qui est une matrice, la position du premier 888 rencontré. Comme notre matrice n'a qu'une colonne, et que l'on prend la colonne entière, la position qui ressort est égale au numéro de ligne de la première occurence.
On en arrive donc à l'astuce :
Comment déterminer la position de la 2ème occurence ? La réponse est simple, il faut prendre pour matrice les éléments de la colonne amputés de tout ce qui se trouve avant la première ocurrence, incluse. C'est à dire que la matrice ira de la ligne trouvée en G5 + 1 jusqu'à la fin de la colonne. Et pour avoir le numéro de ligne, on ajoute, le numéro trouvé précédemment.
Ce qui nous donne la formule suivante :
=G5+EQUIV(888;INDIRECT(ADRESSE(G5+1;11) & ":" & ADRESSE(65536;11));0)
En français : Numéro de ligne trouvé précédemment + la position dans la matrice du premier élément 888 rencontré, dans une matrice allant de Numéro ligne + 1, colonne K (K est la 11ème colonne) jusqu'à la ligne 65536 de la colonne K.
Dans notre 2eme cellule, on a donc le numéro de ligne de la 2eme occurence.
Plus qu'à copier la formule sur les cellules en dessous (le même nb de fois que le nb d'occurence trouvé avec la formule de mon premier post, ou alors, jusqu'à ce que tu vois apparaitre #N/A.)
La formule est faite de manière à ce qu'il te suffise de copier la formule le nb d'occurence, rien à modifier dans la formule.
Les numéros de ligne sont donc visibles facilement, et en plus, ça se met à jour dynamiquement. Tu rajoutes ou enlèves un 888 dans la colonne K et tes numéros s'affichent dans l'ordre aussitôt.