Listing des coordonnées des cellules correspondant à un critère

Fermé
HUGO BASS Messages postés 20 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 18 septembre 2015 - Modifié par baladur13 le 19/09/2014 à 10:57
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 19 sept. 2014 à 11:49
Bonjour à toutes et tous,

Je cherche à partir d'un tableau contenant plusieurs données à faire un listing des adresses de toutes les cellules correspondant à un critère donnée. En l'occurrence les valeurs non numériques.
Ci joint fichier exemple.

https://www.cjoint.com/c/DIsqL1hOvWF


Merci
Cordialement
Hugues



5 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
18 sept. 2014 à 17:01
Bonjour

un exemple
https://www.cjoint.com/?3Isrd3Zqy6O

Cdlmnt
0
HUGO BASS Messages postés 20 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 18 septembre 2015
19 sept. 2014 à 10:33
merci
0
HUGO BASS Messages postés 20 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 18 septembre 2015
18 sept. 2014 à 18:53
Bonjour CCM81,

Merci pour ta réponse rapide que je retiendrais si je n'arrive pas par formule car elle répond à ma problématique même si j'aurais préféré éviter les macros.
J'ai essayé aussi en nommant une plage de donnée par formule matricielle avec fonction adresse et est num mais sans succès.

Cordialement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
19 sept. 2014 à 10:57
Bonjour,

Je viens de dénicher un résultat par formule? Cependant, c'est tellement alambiqué que la solution par macro reste la plus simple...

La solution par formule passe par un champ intermédiaire de la même taille que le tableau initial. On peut le masquer par la suite.
La formule à étendre dans ce champ intermédiaire est :
=SI(NON(ESTNUM(B4:H32));CELLULE("adresse";B4:H32);"")
Formule matricielle, à valider par Ctrl+Shift+Entrée
Ensuite, ne reste qu'à représenter les cellules non vides de ce champ dans la colonne ou tu veux les résultats.
Pour cela, la formule matricielle de Jacques Boisgontier, trouvée ICI fonctionne :
=SI(LIGNES($1:1)<=NBVAL(K4:Q32);INDEX(K4:Q32;MOD(PETITE.VALEUR(SI(K4:Q32<>"";COLONNE(K4:Q32)*10^5+LIGNE(INDIRECT("1:"&LIGNES(K4:Q32))));LIGNES($1:1));10^5);ENT(PETITE.VALEUR(SI(K4:Q32<>"";COLONNE(K4:Q32)*10^5+LIGNE(INDIRECT("1:"&LIGNES(K4:Q32))));LIGNES($1:1))/10^5)-COLONNE(K4:Q32)+1);"")
ou K4:Q32 est le champ intermédiaire.
Formule matricielle, à valider par Ctrl+Shift+Entrée

Ci-joint ton classeur exemple en retour
0
HUGO BASS Messages postés 20 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 18 septembre 2015
19 sept. 2014 à 10:38
Re Bonjour CCM81,

Je me plonge dans ta macro (merci cela fonctionne à merveille) et si en plus de répondre à ma problématique elle pouvait transformer l'adresse des cellules obtenues en lien hypertexte, alors là sans contestation possible je choisirais ta solution par macro plutôt que par formule.

A ton avis est ce réalisable ?

Merci

Cordialement
Hugues
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
19 sept. 2014 à 11:08
Re-

Petite variante à la version de CCM81, par formule personnalisée.
Dans le module ou se trouve déjà le code de CCM81, copiez-collez ce code :
Function Adresses_Cel_Non_Num(Plage As String, Numero As Long)
Dim maPlage As Range, cel As Range, tb(), i As Long
ReDim Preserve tb(i)
tb(0) = ""
Set maPlage = Range(Plage)
For Each cel In maPlage
    If Not IsNumeric(cel.Value) Or cel.Value = "" Then
        i = i + 1
        ReDim Preserve tb(i)
        tb(i) = cel.Address
    End If
Next cel
If Numero > UBound(tb) Then Numero = 0
Adresses_Cel_Non_Num = tb(Numero)
End Function


Dans la feuille de calcul, en J4 (par exemple) :
=Adresses_Cel_Non_Num("B4:H32";LIGNE()-3)
Le -3 ici est parce que l'on saisi la formule en J4. En K1, il conviendrait d'écrire :
=Adresses_Cel_Non_Num("B4:H32";LIGNE())
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
19 sept. 2014 à 11:38
Pour les liens hypertexte vers les cellules

Const T = "Tablo"

Public Sub ListeAdr()
Dim cel As Range, deb As Range, k As Long, adr As String, f As String
Set deb = Selection
f = ActiveSheet.Name
k = 0
For Each cel In Range(T)
If Not IsNumeric(cel.Value) Or cel.Value = "" Then
adr = cel.Address
ActiveSheet.Hyperlinks.Add Anchor:=deb.Offset(k, 0), Address:="", SubAddress:= _
f & "!" & adr, TextToDisplay:=adr
k = k + 1
End If
Next cel
End Sub

Salutations à pijaku au passage

Cdlmnt
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
19 sept. 2014 à 11:49
Juste au passage, mes salutations ccm81.
A+
0